zanmato1984 commented on code in PR #45789:
URL: https://github.com/apache/arrow/pull/45789#discussion_r2002688419


##########
cpp/src/arrow/acero/scalar_aggregate_node.cc:
##########
@@ -240,8 +240,8 @@ Status ScalarAggregateNode::InputReceived(ExecNode* input, 
ExecBatch batch) {
     // We add segment to the current segment group aggregation
     auto exec_batch = full_batch.Slice(segment.offset, segment.length);
     RETURN_NOT_OK(DoConsume(ExecSpan(exec_batch), thread_index));
-    RETURN_NOT_OK(
-        ExtractSegmenterValues(&segmenter_values_, exec_batch, 
segment_field_ids_));
+    RETURN_NOT_OK(ExtractSegmenterValues(&GetLocalState()->segmenter_values, 
exec_batch,
+                                         segment_field_ids_));

Review Comment:
   > Ah, so the data race occurred in the non-segmented case?
   
   Yes. The race happens for the trivial segmenter, which essentially does 
nothing, but concurrently **clears** the `segmenter_values` every time.
   
   It is weird and I may even withdraw this fix. Please wait for my answer for 
the other comment (it's long and I'm still writing). Thank you. 



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to