70 """ |
70 """ |
71 super(MassiveObjectStore, self).__init__(cnx) |
71 super(MassiveObjectStore, self).__init__(cnx) |
72 |
72 |
73 self.uuid = text_type(uuid4()).replace('-', '') |
73 self.uuid = text_type(uuid4()).replace('-', '') |
74 self.slave_mode = slave_mode |
74 self.slave_mode = slave_mode |
75 self.eids_seq_range = eids_seq_range |
|
76 if metagen is None: |
75 if metagen is None: |
77 metagen = stores.MetadataGenerator(cnx) |
76 metagen = stores.MetadataGenerator(cnx) |
78 self.metagen = metagen |
77 self.metagen = metagen |
79 |
78 |
80 self.logger = logging.getLogger('dataimport.massive_store') |
79 self.logger = logging.getLogger('dataimport.massive_store') |
81 self.sql = cnx.system_sql |
80 self.sql = cnx.system_sql |
82 self.schema = cnx.vreg.schema |
81 self.schema = cnx.vreg.schema |
83 self.default_values = get_default_values(self.schema) |
82 self.default_values = get_default_values(self.schema) |
84 self.get_next_eid = lambda g=self._get_eid_gen(): next(g) |
83 self.get_next_eid = lambda g=self._get_eid_gen(eids_seq_range): next(g) |
85 self._source_dbhelper = cnx.repo.system_source.dbhelper |
84 self._source_dbhelper = cnx.repo.system_source.dbhelper |
86 self._dbh = PGHelper(cnx) |
85 self._dbh = PGHelper(cnx) |
87 |
86 |
88 self._data_entities = defaultdict(list) |
87 self._data_entities = defaultdict(list) |
89 self._data_relations = defaultdict(list) |
88 self._data_relations = defaultdict(list) |
90 self._initialized = {} |
89 self._initialized = {} |
91 |
90 |
92 def _get_eid_gen(self): |
91 def _get_eid_gen(self, eids_seq_range): |
93 """ Function getting the next eid. This is done by preselecting |
92 """ Function getting the next eid. This is done by preselecting |
94 a given number of eids from the 'entities_id_seq', and then |
93 a given number of eids from the 'entities_id_seq', and then |
95 storing them""" |
94 storing them""" |
96 while True: |
95 while True: |
97 last_eid = self._cnx.repo.system_source.create_eid(self._cnx, self.eids_seq_range) |
96 last_eid = self._cnx.repo.system_source.create_eid(self._cnx, eids_seq_range) |
98 for eid in range(last_eid - self.eids_seq_range + 1, last_eid + 1): |
97 for eid in range(last_eid - eids_seq_range + 1, last_eid + 1): |
99 yield eid |
98 yield eid |
100 |
99 |
101 # master/slaves specific API |
100 # master/slaves specific API |
102 |
101 |
103 def master_init(self, commit=True): |
102 def master_init(self, commit=True): |