Index: src/server/storage/entities-source.xsl =================================================================== --- src/server/storage/entities-source.xsl +++ src/server/storage/entities-source.xsl @@ -349,28 +349,21 @@ ::retrieveByNameOrCreate( const &name) { static QMutex lock; + QMutexLocker locker(&lock); auto rv = retrieveByName(name); if (rv.isValid()) { return rv; } - if (lock.tryLock()) { - rv.setName(name); - if (!rv.insert()) { - lock.unlock(); - return (); - } - - if (Private::cacheEnabled) { - Private::addToCache(rv); - } - lock.unlock(); - return rv; + rv.setName(name); + if (!rv.insert()) { + return (); } - lock.lock(); - lock.unlock(); - return retrieveByName(name); + if (Private::cacheEnabled) { + Private::addToCache(rv); + } + return rv; } @@ -389,29 +382,22 @@ PartType PartType::retrieveByFQNameOrCreate( const QString & ns, const QString & name ) { static QMutex lock; + QMutexLocker locker(&lock); PartType rv = retrieveByFQName(ns, name); if (rv.isValid()) { return rv; } - if (lock.tryLock()) { - rv.setNs(ns); - rv.setName(name); - if (!rv.insert()) { - lock.unlock(); - return PartType(); - } - - if (Private::cacheEnabled) { - Private::addToCache(rv); - } - lock.unlock(); - return rv; + rv.setNs(ns); + rv.setName(name); + if (!rv.insert()) { + return PartType(); } - lock.lock(); - lock.unlock(); - return retrieveByFQName(ns, name); + if (Private::cacheEnabled) { + Private::addToCache(rv); + } + return rv; }