Add transaction logic for rattail->rattail datasync

per newer conventions
This commit is contained in:
Lance Edgar 2022-04-04 13:07:23 -05:00
parent 24a0587eab
commit 9c47822eaf

View file

@ -426,35 +426,32 @@ class FromRattailToRattailExportConsumer(FromRattailToRattailBase):
def make_target_session(self): def make_target_session(self):
return self.app.make_session(bind=self.target_engine) return self.app.make_session(bind=self.target_engine)
def process_changes(self, session, changes): def begin_transaction(self):
local_session = self.app.make_session() self.local_session = self.app.make_session()
target_session = self.make_target_session() self.target_session = self.make_target_session()
try: def rollback_transaction(self):
if self.runas_username: self.target_session.rollback()
target_session.set_continuum_user(self.runas_username) self.target_session.close()
del self.target_session
# update all importers with current sessions self.local_session.rollback()
for importer in six.itervalues(self.importers): self.local_session.close()
importer.host_session = local_session del self.local_session
importer.session = target_session
# delegate processing to importer(s) def commit_transaction(self):
for change in changes: # TODO: should we ever commit local?
self.invoke_importer(session, change) #self.local_session.commit()
self.target_session.commit()
# TODO: should we ever commit local? def pre_process_changes(self, session, changes):
#local_session.commit() if self.runas_username:
target_session.commit() self.target_session.set_continuum_user(self.runas_username)
except: # update all importers with current sessions
log.exception("failed to process changes") for importer in six.itervalues(self.importers):
local_session.rollback() importer.host_session = self.local_session
target_session.rollback() importer.session = self.target_session
finally:
local_session.close()
target_session.close()
class FromRattailToRattailImportConsumer(FromRattailToRattailBase): class FromRattailToRattailImportConsumer(FromRattailToRattailBase):