secondlife / jira-archive

2 stars 0 forks source link

[BUG-202968] [Alex Ivy] Pipelining still blows up frequently resulting in corrupted textures & mesh. #3215

Open sl-service-account opened 6 years ago

sl-service-account commented 6 years ago

Steps to Reproduce

Attachments

Links

Related

Original Jira Fields | Field | Value | | ------------- | ------------- | | Issue | BUG-202968 | | Summary | [Alex Ivy] Pipelining still blows up frequently resulting in corrupted textures & mesh. | | Type | Bug | | Priority | Unset | | Status | Accepted | | Resolution | Accepted | | Reporter | Whirly Fizzle (whirly.fizzle) | | Created at | 2018-01-22T10:03:23Z | | Updated at | 2018-06-07T14:18:09Z | ``` { 'Business Unit': ['Platform'], 'Date of First Response': '2018-01-22T04:47:40.272-0600', 'ReOpened Count': 0.0, 'Severity': 'Unset', 'System': 'SL Viewer', 'Target Viewer Version': 'viewer-development', 'What just happened?': 'Filling in...', 'What were you doing when it happened?': '....', 'What were you expecting to happen instead?': '....', } ```
sl-service-account commented 6 years ago

Ansariel Hiller commented at 2018-01-22T10:47:40Z

I can observe this as well, especially on the first login after completely wiping the cache inventory (texture, object & inventory cache). There is a high chance the pipelining issue is going to occur then. I can provide a log if desired, but the actual log output is the same as Whirly's already shows: Some response seems to get lost and as a result and the responses coming in are processed wrong. This is because the viewer waits for a particular response, but due to a response getting lost, it is going to process the response for the next request. To make it more obvious:

Viewer requests:

Req-ID       Size
======     ======
     1        555
     2      12345
     3       4567
     4         10
     5       9999

Viewer processing response coming in (assuming response for request 2 got lost):

Res No.    Expected Req-ID    Expected Size    Actual Req-ID    Actual Size
=======    ===============    =============    =============    ===========
      1                  1              555                1            555
      2                  2            12345                3           4567
      3                  3             4567                4             10
      4                  4               10                5           9999

This raises the question why HTTP pipelining is still pursued anyway. Google Chrome and Mozilla Firefox for instance even removed HTTP pipelining support because it's rather fragile and error-prone, not to mention it can cause head-of-line blocking and resulting in a performance degradation.