Docs: update the dms v1 path changes; Fix INF-254 through retry
[pti/o2.git] / o2app / bootstrap.py
index 2e90768..4413e80 100644 (file)
@@ -40,6 +40,15 @@ def wait_for_db_ready(engine):
     logger.info("DB is ready")
 
 
+@retry(tries=3, delay=2)
+def wait_for_mappers_ready(engine):
+    # wait for mapper ready
+    logger.info("Wait for mapper ready ...")
+    o2ims_orm.start_o2ims_mappers(engine)
+    o2dms_orm.start_o2dms_mappers(engine)
+    logger.info("mapper is ready")
+
+
 def bootstrap(
     start_orm: bool = True,
     uow: unit_of_work.AbstractUnitOfWork = SqlAlchemyUnitOfWork(),
@@ -54,9 +63,9 @@ def bootstrap(
         with uow:
             # get default engine if uow is by default
             engine = uow.session.get_bind()
+
             wait_for_db_ready(engine)
-            o2ims_orm.start_o2ims_mappers(engine)
-            o2dms_orm.start_o2dms_mappers(engine)
+            wait_for_mappers_ready(engine)
 
     dependencies = {"uow": uow, "notifications": notifications,
                     "publish": publish}
@@ -72,11 +81,13 @@ def bootstrap(
         for command_type, handler in handlers.COMMAND_HANDLERS.items()
     }
 
-    return messagebus.MessageBus(
+    bus = messagebus.MessageBus(
         uow=uow,
         event_handlers=injected_event_handlers,
         command_handlers=injected_command_handlers,
     )
+    messagebus.MessageBus.set_instance(bus)
+    return bus
 
 
 def inject_dependencies(handler, dependencies):