2 ms·
Unicorn isn't GitHub's code, though. So the object-reuse that was the root cause here wasn't their code, and treating your webserver as a working black box is p
by wfleming 6y ago
Unicorn isn't GitHub's code, though. So the object-reuse that was the root cause here wasn't their code, and treating your webserver as a working black box is pretty typical (right up until you hit an edge case like this).
And Unicorn is pretty old. It wouldn't surprise me if this object reuse dates back to mongrel's code base, back when doing anything with threads in Ruby would have been unusual.
It's still bad code on unicorn's part (when I got to that part of the post I said "Unicorn does WHAT?" out loud), and GH should have been more careful introducing threads to an environment that didn't have concurrency before, but every step of the chain is pretty understandable IMHO.