https://bugzilla.wikimedia.org/show_bug.cgi?id=54935

--- Comment #4 from Krinkle <[email protected]> ---
The two ve.base request are (naturally) from different cache servers, but the
Content-Length is identical, and the Age is close enough (sent out at different
times, and my request is at a few seconds later as well).


However the ve.core request is significantly different (eventhough we're giving
the exact same url with the same timestamp from the startup module).

I think this is a case where it once again shows how conceptually flawed our
deployment system is (swapping out files and directory inside /a/common while
apache is still fully serving and pooled) – or, how we did not take this into
account in the design of ResourceLoader (take your pick).

As a result I think one of the following 2 scenarios happened:

Scenario A:
- sync deployment starts
- sync to srv100 complete
- user visits Wikipedia
- user requests load.php?module=startup
  - load balancer picks srv100
- user requests load.php?module=foo&version=123
  - (timestamp the user got from srv100)
  - load balancer picks srv200, which still runs the old code
  - this url is now cached on some servers
- user requests load.php?module=bar&version=212
- sync to srv200 complete
- sync deployment ends


Imagine module bar depends on the (new version of) module foo. From this point
on, users hitting srv100 for the module=foo request will keep getting an old
version and results in broken scripts in unpredictable ways.



Scenario B:
- sync deployment starts
- sync to srv100 complete
- user visits Wikipedia
- user requests load.php?module=startup
  - load balancer picks srv100
- sync to srv200 is busy (started, but not complete)
- user requests load.php?module=foo&version=123
  - (timestamp the user got from srv100)
  - load balancer picks srv200, which has mixed code
    so some of the files concatenated/minified are old some are new
  - this url is now cached on some servers
- sync to srv200 finishes
- user requests load.php?module=bar&version=212
- sync deployment ends

In this scenario a dependency between different requests/modules doesn't even
matter because in our deployment system a server can even be in mixed state
within itself (as opposed to a mixed state across the datacenter, as scenario
A).

Again, it is cached under the new timestamp.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
Wikibugs-l mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/wikibugs-l

Reply via email to