shunping opened a new pull request, #36672:
URL: https://github.com/apache/beam/pull/36672

   Data race has been seen when we run some processing-time timer tests.
   
   `go test -v -race -count=200 -timeout 100s -run 
^TestTimers_ProcessingTime_Infinity$ 
github.com/apache/beam/sdks/v2/go/test/integration/primitives`
   
   ```
   WARNING: DATA RACE
   Write at 0x00c000a1e600 by goroutine 776:
     
github.com/apache/beam/sdks/v2/go/pkg/beam/runners/prism/internal/engine.mtimeHeap.Swap()
         
/Users/shunping/Projects/beam-dev-go-prism/sdks/go/pkg/beam/runners/prism/internal/engine/holds.go:33
 +0xa8
     
github.com/apache/beam/sdks/v2/go/pkg/beam/runners/prism/internal/engine.(*mtimeHeap).Swap()
         <autogenerated>:1 +0x20
     container/heap.down()
         
/Users/shunping/go/pkg/mod/golang.org/[email protected]/src/container/heap/heap.go:114
 +0x5c
     container/heap.Pop()
         
/Users/shunping/go/pkg/mod/golang.org/[email protected]/src/container/heap/heap.go:62
 +0x68
     
github.com/apache/beam/sdks/v2/go/pkg/beam/runners/prism/internal/engine.(*stageRefreshQueue).AdvanceTo()
         
/Users/shunping/Projects/beam-dev-go-prism/sdks/go/pkg/beam/runners/prism/internal/engine/processingtime.go:92
 +0xb8
     
github.com/apache/beam/sdks/v2/go/pkg/beam/runners/prism/internal/engine.(*ElementManager).Bundles.func2()
         
/Users/shunping/Projects/beam-dev-go-prism/sdks/go/pkg/beam/runners/prism/internal/engine/elementmanager.go:402
 +0x128
   
   Previous read at 0x00c000a1e600 by goroutine 938:
     
github.com/apache/beam/sdks/v2/go/pkg/beam/runners/prism/internal/engine.(*stageRefreshQueue).Peek()
         
/Users/shunping/Projects/beam-dev-go-prism/sdks/go/pkg/beam/runners/prism/internal/engine/processingtime.go:80
 +0x21c
     
github.com/apache/beam/sdks/v2/go/pkg/beam/runners/prism/internal/engine.(*ElementManager).ProcessingTimeNow()
         
/Users/shunping/Projects/beam-dev-go-prism/sdks/go/pkg/beam/runners/prism/internal/engine/elementmanager.go:2451
 +0x1b4
     
github.com/apache/beam/sdks/v2/go/pkg/beam/runners/prism/internal/engine.(*stageState).injectTriggeredBundlesIfReady()
         
/Users/shunping/Projects/beam-dev-go-prism/sdks/go/pkg/beam/runners/prism/internal/engine/elementmanager.go:1340
 +0x2c8
     
github.com/apache/beam/sdks/v2/go/pkg/beam/runners/prism/internal/engine.(*aggregateStageKind).addPending()
         
/Users/shunping/Projects/beam-dev-go-prism/sdks/go/pkg/beam/runners/prism/internal/engine/elementmanager.go:1435
 +0x4e8
     
github.com/apache/beam/sdks/v2/go/pkg/beam/runners/prism/internal/engine.(*stageState).AddPending()
         
/Users/shunping/Projects/beam-dev-go-prism/sdks/go/pkg/beam/runners/prism/internal/engine/elementmanager.go:1315
 +0xb4
     
github.com/apache/beam/sdks/v2/go/pkg/beam/runners/prism/internal/engine.(*ElementManager).PersistBundle()
         
/Users/shunping/Projects/beam-dev-go-prism/sdks/go/pkg/beam/runners/prism/internal/engine/elementmanager.go:884
 +0x9d8
     
github.com/apache/beam/sdks/v2/go/pkg/beam/runners/prism/internal.(*stage).Execute()
         
/Users/shunping/Projects/beam-dev-go-prism/sdks/go/pkg/beam/runners/prism/internal/stage.go:351
 +0x2834
     
github.com/apache/beam/sdks/v2/go/pkg/beam/runners/prism/internal.executePipeline.func2()
         
/Users/shunping/Projects/beam-dev-go-prism/sdks/go/pkg/beam/runners/prism/internal/execute.go:375
 +0xf8
     golang.org/x/sync/errgroup.(*Group).Go.func1()
         
/Users/shunping/go/pkg/mod/golang.org/x/[email protected]/errgroup/errgroup.go:93 
+0x70
   
   Goroutine 776 (running) created at:
     
github.com/apache/beam/sdks/v2/go/pkg/beam/runners/prism/internal/engine.(*ElementManager).Bundles()
         
/Users/shunping/Projects/beam-dev-go-prism/sdks/go/pkg/beam/runners/prism/internal/engine/elementmanager.go:388
 +0x278
     
github.com/apache/beam/sdks/v2/go/pkg/beam/runners/prism/internal.executePipeline()
         
/Users/shunping/Projects/beam-dev-go-prism/sdks/go/pkg/beam/runners/prism/internal/execute.go:351
 +0x1638
     
github.com/apache/beam/sdks/v2/go/pkg/beam/runners/prism/internal.RunPipeline()
         
/Users/shunping/Projects/beam-dev-go-prism/sdks/go/pkg/beam/runners/prism/internal/execute.go:90
 +0x530
     
github.com/apache/beam/sdks/v2/go/pkg/beam/runners/prism/internal/jobservices.(*Server).Run.gowrap1()
         
/Users/shunping/Projects/beam-dev-go-prism/sdks/go/pkg/beam/runners/prism/internal/jobservices/management.go:400
 +0x40
   
   Goroutine 938 (running) created at:
     golang.org/x/sync/errgroup.(*Group).Go()
         
/Users/shunping/go/pkg/mod/golang.org/x/[email protected]/errgroup/errgroup.go:78 
+0x104
     
github.com/apache/beam/sdks/v2/go/pkg/beam/runners/prism/internal.executePipeline()
         
/Users/shunping/Projects/beam-dev-go-prism/sdks/go/pkg/beam/runners/prism/internal/execute.go:372
 +0x1974
     
github.com/apache/beam/sdks/v2/go/pkg/beam/runners/prism/internal.RunPipeline()
         
/Users/shunping/Projects/beam-dev-go-prism/sdks/go/pkg/beam/runners/prism/internal/execute.go:90
 +0x530
     
github.com/apache/beam/sdks/v2/go/pkg/beam/runners/prism/internal/jobservices.(*Server).Run.gowrap1()
         
/Users/shunping/Projects/beam-dev-go-prism/sdks/go/pkg/beam/runners/prism/internal/jobservices/management.go:400
 +0x40
   ```
   
   Most of the access to em.processTimeEvents are guarded by em.refreshCond.L 
lock, except for one location in `injectTriggerBundlesIfReady`. This PR fixes 
the missing spot.
   
   Related to #36662
   
   Internal Bug ID: 449405414 


-- 
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