From 9dfb5614e640b3350d89500b7d7486e2065ed7e2 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" <vir@lindenlab.com> Date: Fri, 28 Apr 2017 16:10:24 -0400 Subject: [PATCH] MAINT-7343 - moved asset downloads to use coprocedure pools, which should reduce the size of potential memory spikes --- indra/newview/app_settings/settings.xml | 9 +++++++++ indra/newview/llviewerassetstorage.cpp | 6 ++++-- indra/newview/llviewerassetstorage.h | 5 ++++- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index d2d629339d2..f2ae685432b 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -14723,6 +14723,15 @@ <key>Value</key> <real>1</real> </map> + <key>PoolSizeAssetStorage</key> + <map> + <key>Comment</key> + <string>Coroutine Pool size for AssetStorage requests</string> + <key>Type</key> + <string>U32</string> + <key>Value</key> + <real>12</real> + </map> <!-- Settings below are for back compatibility only. They are not used in current viewer anymore. But they can't be removed to avoid diff --git a/indra/newview/llviewerassetstorage.cpp b/indra/newview/llviewerassetstorage.cpp index 9918d226c20..71507b56085 100644 --- a/indra/newview/llviewerassetstorage.cpp +++ b/indra/newview/llviewerassetstorage.cpp @@ -40,6 +40,7 @@ #include "lltransfertargetvfile.h" #include "llviewerassetstats.h" #include "llcoros.h" +#include "llcoproceduremanager.h" #include "lleventcoro.h" #include "llsdutil.h" #include "llworld.h" @@ -398,8 +399,8 @@ void LLViewerAssetStorage::queueRequestHttp( bool is_temp = false; LLViewerAssetStatsFF::record_enqueue(atype, with_http, is_temp); - LLCoros::instance().launch("LLViewerAssetStorage::assetRequestCoro", - boost::bind(&LLViewerAssetStorage::assetRequestCoro, this, req, uuid, atype, callback, user_data)); + LLCoprocedureManager::instance().enqueueCoprocedure("AssetStorage","LLViewerAssetStorage::assetRequestCoro", + boost::bind(&LLViewerAssetStorage::assetRequestCoro, this, _1, req, uuid, atype, callback, user_data)); } } @@ -433,6 +434,7 @@ struct LLScopedIncrement }; void LLViewerAssetStorage::assetRequestCoro( + LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t &defaultHttpAdapter, // not used LLViewerAssetRequest *req, const LLUUID& uuid, LLAssetType::EType atype, diff --git a/indra/newview/llviewerassetstorage.h b/indra/newview/llviewerassetstorage.h index 8a582413785..a32b3bb7000 100644 --- a/indra/newview/llviewerassetstorage.h +++ b/indra/newview/llviewerassetstorage.h @@ -28,6 +28,7 @@ #define LLVIEWERASSETSTORAGE_H #include "llassetstorage.h" +#include "llcorehttputil.h" class LLVFile; @@ -82,7 +83,9 @@ class LLViewerAssetStorage : public LLAssetStorage void capsRecvForRegion(const LLUUID& region_id, std::string pumpname); - void assetRequestCoro(LLViewerAssetRequest *req, + void assetRequestCoro( + LLCoreHttpUtil::HttpCoroutineAdapter::ptr_t &defaultHttpAdapter, + LLViewerAssetRequest *req, const LLUUID& uuid, LLAssetType::EType atype, void (*callback) (LLVFS *vfs, const LLUUID&, LLAssetType::EType, void *, S32, LLExtStat), -- GitLab