Skip to content
Snippets Groups Projects
  • Nat Goodspeed's avatar
    769bf46a
    SL-14399: Ditch overflow queue LLViewerAssetStorage::mCoroWaitList. · 769bf46a
    Nat Goodspeed authored
    mCoroWaitList was introduced to prevent an assertion failure crash:
    LLCoprocedureManager never expects to fill LLCoprocedurePool::mPendingCoprocs
    queue. The queue limit was arbitrarily set to 4096 some years ago, but in
    practice LLViewerAssetStorage can post way more requests than that.
    
    LLViewerAssetStorage checked whether the target LLCoprocedureManager pool's
    queue looked close to full, and if so posted the pending request to its
    mCoroWaitList instead. But then it had to override the base LLAssetStorage
    method checkForTimeouts() to continually check whether pending tasks could be
    moved from mCoroWaitList to LLCoprocedureManager.
    
    A simpler solution is to enlarge LLCorpocedureManager::DEFAULT_QUEUE_SIZE, the
    upper limit on mPendingCoprocs. Since mCoroWaitList was an unlimited queue,
    making DEFAULT_QUEUE_SIZE "very large" does not increase the risk of runaway
    memory consumption.
    769bf46a
    History
    SL-14399: Ditch overflow queue LLViewerAssetStorage::mCoroWaitList.
    Nat Goodspeed authored
    mCoroWaitList was introduced to prevent an assertion failure crash:
    LLCoprocedureManager never expects to fill LLCoprocedurePool::mPendingCoprocs
    queue. The queue limit was arbitrarily set to 4096 some years ago, but in
    practice LLViewerAssetStorage can post way more requests than that.
    
    LLViewerAssetStorage checked whether the target LLCoprocedureManager pool's
    queue looked close to full, and if so posted the pending request to its
    mCoroWaitList instead. But then it had to override the base LLAssetStorage
    method checkForTimeouts() to continually check whether pending tasks could be
    moved from mCoroWaitList to LLCoprocedureManager.
    
    A simpler solution is to enlarge LLCorpocedureManager::DEFAULT_QUEUE_SIZE, the
    upper limit on mPendingCoprocs. Since mCoroWaitList was an unlimited queue,
    making DEFAULT_QUEUE_SIZE "very large" does not increase the risk of runaway
    memory consumption.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.