The server no longer stalls when many cards land

When many cards landed one after another, Obeya's server froze for half a second at a time: no page got an answer and no agent was heard. Every change on the canvas rebuilt the whole canvas view at once, dozens of times in a row. Now everything that reacts to changes hears of them once the run is through, the cards are built without the rest of the view, and one archived card is looked up without building the whole archive.

BeforeAfter

A landing of 30 cards, on a copy of the Obeya canvas

How long the server stands still while 30 cards each change, are read back and have their shared page looked up. The canvas has 860 cards, 710 archived and 240 shared.

The same on a test canvas, while the machine is busy

The new test builds a canvas of 900 cards (800 archived, 300 shared) and runs that landing. It ran here alongside the full test suite, as when agents work on the machine. It fails above half a second.

Reading one card back after a change

What the server pays each time code reads a card back after changing it (on the copy of the Obeya canvas).

All numbers as a table
MeasureBeforeAfter
Landing of 30 cards, copy of the Obeya canvas603–670 ms104–111 ms
Landing test, idle machine412 ms78 ms
Landing test, alongside the full test suite1284 ms124–253 ms
Read a card back after a change4.9 ms1.4 ms
Read an archived card back after a change14.0 ms1.6 ms