<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">Hi, guys.<div><br></div><div>Today, I encountered strange behaviors and it raise me a simple question which I never concerned about.</div><div><br></div><div>It's about 'how database accessors like *-conductor assure DB data consistency?'</div><div><br></div><div>What I've seen is ModelsNotFound in Trove which meaning there is no sqlalchemy query result for the Trove DB model. I'm not sure what's happening before, but what I found is DB entry is actually existed but trove-conductor could not find it emitting exception continuously. At the same time, different trove-conductor would be working normally after restart.</div><div><br></div><div>First, I thought that sqlalchemy ensures concurrency but after reading related document (<a href="https://docs.sqlalchemy.org/en/latest/orm/session_basics.html#is-the-session-thread-safe">https://docs.sqlalchemy.org/en/latest/orm/session_basics.html#is-the-session-thread-safe</a>), it does not guarantee at all, and user should take all responsibility to manage session. </div><div><br></div><div>After, I thought oslo.concurrency is promising to ensure consistency by making lock inter process in that the name tells me. But I could not find any related code for locking.</div><div><br></div><div>So.. What happens internally for *-manage? Any hints would be appreciated.</div><div><br></div><div>Thanks.</div></div></div></div></div>