The error manifests in the following way:
(thread1) Start processing bundle A
(thread2) Receive request to split for bundle A
(thread1) Finish bundle A
(thread1) Reset bundle processor
(thread1) Start processing bundle B
(thread2) Process split for bundle A on bundle B
Runners, such as Dataflow, that ensure the self-reported number of elements processed by the SDK is equal to the number they expected to be processed (taking into account the runner's understanding of all splits) can detect this and reject A and B as invalid, but we should fix this race condition.