Skip to content

Commit 336d7d7

Browse files
docs: add inline doc explaining why initialize enforcer
1 parent 9ceaa07 commit 336d7d7

1 file changed

Lines changed: 19 additions & 7 deletions

File tree

openedx_authz/engine/enforcer.py

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -80,16 +80,28 @@ def _initialize_enforcer() -> FastEnforcer:
8080
FastEnforcer: Configured Casbin enforcer with adapter and watcher
8181
"""
8282
db_alias = getattr(settings, "CASBIN_DB_ALIAS", "default")
83-
initialize_enforcer(db_alias)
83+
84+
try:
85+
# Initialize the enforcer with the specified database alias to set up the adapter.
86+
# Best to lazy load it when it's first used to ensure the database is ready and avoid
87+
# issues when the app is not fully loaded (e.g., while pulling translations, etc.).
88+
initialize_enforcer(db_alias)
89+
except Exception as e: # pylint: disable=broad-exception-caught
90+
logger.error(f"Failed to initialize Casbin enforcer with DB alias '{db_alias}': {e}")
91+
raise
92+
8493
adapter = ExtendedAdapter()
8594
enforcer = FastEnforcer(settings.CASBIN_MODEL, adapter, enable_log=True)
8695
enforcer.enable_auto_save(True)
8796

88-
if Watcher:
89-
try:
90-
enforcer.set_watcher(Watcher)
91-
logger.info("Watcher successfully set on Casbin enforcer")
92-
except Exception as e: # pylint: disable=broad-exception-caught
93-
logger.error(f"Failed to set watcher on Casbin enforcer: {e}")
97+
if not Watcher:
98+
logger.warning("Redis configuration not completed successfully. Watcher is disabled.")
99+
return enforcer
100+
101+
try:
102+
enforcer.set_watcher(Watcher)
103+
logger.info("Watcher successfully set on Casbin enforcer")
104+
except Exception as e: # pylint: disable=broad-exception-caught
105+
logger.error(f"Failed to set watcher on Casbin enforcer: {e}")
94106

95107
return enforcer

0 commit comments

Comments
 (0)