Onze search engine is configureerbaar naar het aantal threads dat parallel tegelijkertijd zoekt. Dit biedt voordelen voor latency hiding van communicatie overhead tijdens processen en daarnaast ook out of order processing bij onvoorspelbare communicatie latencies.
Ik zie al geruime tijd dat er (af en toe) bij herhaling van dezelfde query met dezelfde graad van parallellisatie de volgens HAL aangeboden percelen wisselen. Dit kan ook optreden als de query met een hoger dan wel lager aantal threads wordt gedraaid.
De manier waarop door de HAL paginering wordt gestapt is met behulp van een start index en een gap die op het aantal threads wordt gezet. Als voorbeeld: bij 4 treads zijn er start indexen {1, 2, 3, 4} met gap 4. De derde thread hopt van 3 naar 7 naar 11 … et cetera en stopt als er een status 404 not found optreedt. Zo wordt parallel de gehele HAL page index ruimte afgezocht.
Wat ik nu zie is dat bijvoorbeeld …
ten onrechte een status 404 not found oplevert. In andere identieke runs is dit niet het geval. Vervolgens komen alle opvolgers van 92 zoals 96, 100, 104 … niet meer aan bod!
Dit lijkt dus niet (exact) reproduceerbaar incidenteel voor te komen. Is dit probleem bij jullie bekend?