SL-13626 Fix asset storage coroutine shutdown

master
Andrey Kleshchev 2020-07-30 21:07:35 +03:00
parent 8103d13047
commit 135a85ec62
2 changed files with 14 additions and 1 deletions

View File

@ -49,6 +49,8 @@
/// LLViewerAssetRequest
///----------------------------------------------------------------------------
static const std::string VIEWER_ASSET_STROTRAGE_CORO_POOL = "VAssetStorage";
/**
* @brief Local class to encapsulate asset fetch requests with a timestamp.
*
@ -127,6 +129,15 @@ LLViewerAssetStorage::LLViewerAssetStorage(LLMessageSystem *msg, LLXferManager *
{
}
LLViewerAssetStorage::~LLViewerAssetStorage()
{
if (!LLCoprocedureManager::wasDeleted())
{
// This class has dedicated coroutine pool, clean it up, otherwise coroutines will crash later.
LLCoprocedureManager::instance().close(VIEWER_ASSET_STROTRAGE_CORO_POOL);
}
}
// virtual
void LLViewerAssetStorage::storeAssetData(
const LLTransactionID& tid,
@ -399,7 +410,7 @@ void LLViewerAssetStorage::queueRequestHttp(
bool is_temp = false;
LLViewerAssetStatsFF::record_enqueue(atype, with_http, is_temp);
LLCoprocedureManager::instance().enqueueCoprocedure("AssetStorage","LLViewerAssetStorage::assetRequestCoro",
LLCoprocedureManager::instance().enqueueCoprocedure(VIEWER_ASSET_STROTRAGE_CORO_POOL,"LLViewerAssetStorage::assetRequestCoro",
boost::bind(&LLViewerAssetStorage::assetRequestCoro, this, req, uuid, atype, callback, user_data));
}
}

View File

@ -43,6 +43,8 @@ public:
LLViewerAssetStorage(LLMessageSystem *msg, LLXferManager *xfer,
LLVFS *vfs, LLVFS *static_vfs);
~LLViewerAssetStorage();
virtual void storeAssetData(
const LLTransactionID& tid,
LLAssetType::EType atype,