diff options
| author | Nat Goodspeed <nat@lindenlab.com> | 2022-06-09 17:04:26 -0400 | 
|---|---|---|
| committer | Nat Goodspeed <nat@lindenlab.com> | 2022-06-09 17:04:26 -0400 | 
| commit | 64209ddeeafd944f82da6f13a6e790f9b542b3ff (patch) | |
| tree | 2fbbd95bc513209be558b2e92aee0a9058a1bee4 /indra/llcommon | |
| parent | 1e28b8d992e6f24f85fde5c86bf9824bf7c7d277 (diff) | |
SL-17483: Add integration test for CommonControl
and for LLViewerControlListener, to which it talks.
Fix glitches detected by the tests.
Diffstat (limited to 'indra/llcommon')
| -rw-r--r-- | indra/llcommon/commoncontrol.cpp | 2 | ||||
| -rw-r--r-- | indra/llcommon/threadpool.cpp | 43 | 
2 files changed, 28 insertions, 17 deletions
| diff --git a/indra/llcommon/commoncontrol.cpp b/indra/llcommon/commoncontrol.cpp index 2c2a2abeb0..81e66baf8c 100644 --- a/indra/llcommon/commoncontrol.cpp +++ b/indra/llcommon/commoncontrol.cpp @@ -51,6 +51,8 @@ LLSD LL::CommonControl::access(const LLSD& params)      {          LLTHROW(ParamError(error));      } +    response.erase("error"); +    response.erase("reqid");      return response;  } diff --git a/indra/llcommon/threadpool.cpp b/indra/llcommon/threadpool.cpp index e8daf549ef..f49dd40a8b 100644 --- a/indra/llcommon/threadpool.cpp +++ b/indra/llcommon/threadpool.cpp @@ -93,27 +93,36 @@ void LL::ThreadPool::run()  //static  size_t LL::ThreadPool::getConfiguredWidth(const std::string& name, size_t dft)  { -    LLSD poolSizes{ LL::CommonControl::get("Global", "ThreadPoolSizes") }; -    // "ThreadPoolSizes" is actually a map containing the sizes of interest -- -    // or should be, if this process has an "LLViewerControl" LLEventAPI -    // instance and its settings include "ThreadPoolSizes". If we failed to -    // retrieve it, perhaps we're in a program that doesn't define that, or -    // perhaps there's no such setting, or perhaps we're asking too early, -    // before the LLEventAPI itself has been instantiated. In any of those -    // cases, it seems worth warning. -    if (! poolSizes.isDefined()) +    LLSD poolSizes; +    try      { -        // Note: we don't warn about absence of an override key for a -        // particular ThreadPool name, that's fine. This warning is about -        // complete absence of a ThreadPoolSizes setting, which we expect in a -        // normal viewer session. -        LL_WARNS("ThreadPool") << "No 'ThreadPoolSizes' setting for ThreadPool '" -                               << name << "'" << LL_ENDL; +        poolSizes = LL::CommonControl::get("Global", "ThreadPoolSizes"); +        // "ThreadPoolSizes" is actually a map containing the sizes of +        // interest -- or should be, if this process has an +        // LLViewerControlListener instance and its settings include +        // "ThreadPoolSizes". If we failed to retrieve it, perhaps we're in a +        // program that doesn't define that, or perhaps there's no such +        // setting, or perhaps we're asking too early, before the LLEventAPI +        // itself has been instantiated. In any of those cases, it seems worth +        // warning. +        if (! poolSizes.isDefined()) +        { +            // Note: we don't warn about absence of an override key for a +            // particular ThreadPool name, that's fine. This warning is about +            // complete absence of a ThreadPoolSizes setting, which we expect +            // in a normal viewer session. +            LL_WARNS("ThreadPool") << "No 'ThreadPoolSizes' setting for ThreadPool '" +                                   << name << "'" << LL_ENDL; +        }      } -    else +    catch (const LL::CommonControl::Error& exc)      { -        LL_DEBUGS("ThreadPool") << "ThreadPoolSizes = " << poolSizes << LL_ENDL; +        // We don't want ThreadPool to *require* LLViewerControlListener. +        // Just log it and carry on. +        LL_WARNS("ThreadPool") << "Can't check 'ThreadPoolSizes': " << exc.what() << LL_ENDL;      } + +    LL_DEBUGS("ThreadPool") << "ThreadPoolSizes = " << poolSizes << LL_ENDL;      // LLSD treats an undefined value as an empty map when asked to retrieve a      // key, so we don't need this to be conditional.      LLSD sizeSpec{ poolSizes[name] }; | 
