matcher_data.go ×1

Frontier kind: Code frontier

unlabeled · c_2320b4543490

33 tests · 3203 LOC · 145 files · introduces 0 tests · 24 LOC · 1 file

Introduces — evidence that enters the hierarchy at this concept

Code
1 range24 lines · 1 files
Tests
0 tests

Contains — complete concept membership

All code (extent)
483 ranges3203 lines · 145 files · Browse complete extent
All tests (intent)
33 testsBrowse complete intent

Neighbourhood graph

The orange circle is the focus. Violet and green circles are every ancestor and descendant, broader and narrower, at any distance; blue squares and pink diamonds are the introduced files and exact introduced tests of every visible concept, not only the focus's. Arrows point from broader to narrower concepts and bridge only concepts omitted from this view. Undirected links show source or test introduction. Concept and file size follows LOC; exact test nodes use test-count units.

Introduced files, introduced tests, and structurally relevant concept specialization

In the embedded map, ordinary wheel input scrolls the page; use the visible controls to zoom and drag to pan. Open the full-screen map for canvas navigation: wheel pans, Ctrl/Command plus wheel zooms, and arrow keys pan when this region is focused. On touch screens, open the full-screen map to pan or pinch. If JavaScript or WebGL is unavailable, use the native relationship evidence on this page.

Graph controls are ready.

Interactive rendering requires JavaScript and WebGL. Use the native relationship evidence on this page while the interactive map is unavailable.

Native relationship evidence

Every exact file and test below is linked only from the concept that introduces it.

Introduced tests

Every collected test enters the hierarchy at exactly one concept.

No tests are introduced at this concept. Its intent tests are introduced by other concepts.

Introduced code

Every collected source range enters the hierarchy at exactly one concept.

1 file ranked by introduced lines: 24 introduced LOC across 1 ranges. Expand a file to inspect source; the > gutter marks introduced lines.

go.temporal.io/server/service/matching/matcher_data.go 24 introduced LOC · 1 range

Open complete file

487
488 // call with lock held
489 > func (d *matcherData) allowForwarding() (allowForwarding bool) { matcher_data.go
490 > // If there is a non-negligible backlog, we pause forwarding to make sure
491 > // root and leaf partitions are treated equally and can process their
492 > // backlog at the same rate. Stopping task forwarding, prevent poll
493 > // forwarding as well (in presence of a backlog). This ensures all partitions
494 > // receive polls and tasks at the same rate.
495 > //
496 > // Exception: we allow forward if this partition has not got any polls
497 > // recently. This is helpful when there are very few pollers and they
498 > // and they are all stuck in the wrong (root) partition. (Note that since
499 > // frontend balanced the number of pending pollers per partition this only
500 > // becomes an issue when the pollers are fewer than the partitions)
501 > //
502 > // If allowForwarding was false and changes to true due solely to the passage
503 > // of time, then we should ensure that match() is called again so that
504 > // pending tasks/polls can now be forwarded. When does that happen? if
505 > // isBacklogNegligible changes from false to true, or if we no longer have
506 > // recent polls.
507 > //
508 > // With time, backlog age gets larger, so isBacklogNegligible can go from
509 > // true to false and not the other way, so that's safe. But it is possible
510 > // that we no longer have recent polls. So we need to ensure that match() is
511 > // called again in that case, using reconsiderForwardTimer.
512 > if d.isBacklogNegligible() {
513 d.reconsiderForwardTimer.unset()
514 return true