This case is not handled deterministically by concurrency detection:
I noticed that
concurrencies.log isn't always the same number of lines between successive runs of siteupdate.py. Which struck me as odd, as the same number of concurrencies should always be detected, in whatever order they're detected in, and travelers should be augmented for the same concurrencies, in whatever order, on whatever basis.
Using...
HighwayData: fa43011DataProcessing: 8d1c457UserData: 9ab420dhttp://yakra.teresco.org/tests/concurrencies/y20181119/m/concurrencies-3.log multi-threaded, attempt #3 (717659 lines)
http://yakra.teresco.org/tests/concurrencies/y20181119/m/concurrencies-4.log multi-threaded, attempt #4 (717658 lines)
http://yakra.teresco.org/tests/concurrencies/y20181119/s/concurrencies-9.log single-threaded, attempt #9 (717640 lines)
Multi-threaded logs were always 717658 or 717659 lines; single-threaded logs were always 717640 lines.
The problem with trying to find one extra line out of 717659 is that the concurrencies & segments therein aren't found & listed in a deterministic order. A regular DIFF between files will be useless. A real needle in a haystack.
To help with this, I wrote a
(painfully slow) program to massage the log files, listing only full concurrencies, sorted, with their segments sorted.
http://yakra.teresco.org/tests/concurrencies/y20181119/m/concurrencies-3_frobbed.loghttp://yakra.teresco.org/tests/concurrencies/y20181119/m/concurrencies-4_frobbed.loghttp://yakra.teresco.org/tests/concurrencies/y20181119/s/concurrencies-9_frobbed.logComparing the two multi-threaded logs:
1c1
< Log file created at: 2018-11-20 00:40:05.101466
---
> Log file created at: 2018-11-20 00:47:04.461352
73299a73300
> Full concurrency [69A to 69B via pa.i376][I-376(69A) to I-376(69B) via pa.us019][I-376(69B)_S to I-376(69A) via pa.us019trkpit][I-376(69A) to I-376(69B) via pa.us022][I-376(69A) to I-376(69B) via pa.us030] (5)
Even with my limited understanding of the concurrency detection routine, it makes sense that this is sometimes detected and sometimes not.
We can get into more detail on this later on.
Here's where things really start to get strange:The number of detected concurrencies is always the same (give or take one
pa.us019trkpit entry).
The 18-line difference between single & multi-threaded runs of siteupdate occurs in the augments for travelers.
http://yakra.teresco.org/tests/concurrencies/y20181119/m4-s9.diff...And it's always the same 18 travelers.
What do these 18 all have in common? These travelers, and no others, all have
PA I-376, and only
PA I-376, listed along this segment.
I'll have to do some more digging to find out why this is behaving this way.