diff --git a/Data/src/SessionFactory.cpp b/Data/src/SessionFactory.cpp index c4628c134..9c23a7bd3 100644 --- a/Data/src/SessionFactory.cpp +++ b/Data/src/SessionFactory.cpp @@ -65,11 +65,14 @@ Session SessionFactory::create(const std::string& key, const std::string& connectionString, std::size_t timeout) { - Poco::FastMutex::ScopedLock lock(_mutex); - Connectors::iterator it = _connectors.find(key); - poco_assert (_connectors.end() != it); - - return Session(it->second.ptrSI->createSession(connectionString, timeout)); + Poco::SharedPtr ptrSI; + { + Poco::FastMutex::ScopedLock lock(_mutex); + Connectors::iterator it = _connectors.find(key); + if (_connectors.end() == it) throw Poco::NotFoundException(key); + ptrSI = it->second.ptrSI; + } + return Session(ptrSI->createSession(connectionString, timeout)); }