Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cdc: race detected in logictests #30159

Closed
rjnn opened this issue Sep 12, 2018 · 1 comment
Closed

cdc: race detected in logictests #30159

rjnn opened this issue Sep 12, 2018 · 1 comment
Assignees
Labels
A-cdc Change Data Capture C-test-failure Broken test (automatically or manually discovered). S-1-stability Severe stability issues that can be fixed by upgrading, but usually don’t resolve by restarting
Milestone

Comments

@rjnn
Copy link
Contributor

rjnn commented Sep 12, 2018

Forked off of #30027, as this one is a reliable reproduction pointing at rangefeeds.

Using go 1.11, on a fresh gceworker, using SHA d109651, I ran make stressrace on the logictests. Here is what I saw:

$ make stressrace PKG=./pkg/sql/logictest TESTS=TestLogic TESTFLAGS='--vmodule=*=10'
Running make with -j24
GOPATH set to /home/arjun/go
go test -race -exec 'stress ' -tags ' make x86_64_linux_gnu' -ldflags '-X github.com/cockroachdb/cockroach/pkg/build.typ=development -extldflags "" -X "github.com/cockroachdb/cockroach/pkg/build.tag=v2.2.0-alpha.00000000-760-gd1096519a7" -X "github.com/cockroachdb/cockroach/pkg/build.rev=d1096519a7d391cb25603f9216468fab94727b6a" -X "github.com/cockroachdb/cockroach/pkg/build.cgoTargetTriple=x86_64-linux-gnu"  ' -run "TestLogic" -timeout 0 ./pkg/sql/logictest --vmodule=*=10 -v -args -test.timeout 25m
0 runs so far, 0 failures, over 5s

I180912 20:22:57.267490 1 rand.go:75  Random seed: -7536000864065832574
=== RUN   TestLogic
=== RUN   TestLogic/local
=== RUN   TestLogic/local/aggregate
=== PAUSE TestLogic/local/aggregate
=== RUN   TestLogic/local/alias_types
=== PAUSE TestLogic/local/alias_types
=== RUN   TestLogic/local/alter_column_type
=== PAUSE TestLogic/local/alter_column_type
=== RUN   TestLogic/local/alter_sequence
=== PAUSE TestLogic/local/alter_sequence
=== RUN   TestLogic/local/alter_table
=== PAUSE TestLogic/local/alter_table
=== RUN   TestLogic/local/array
=== PAUSE TestLogic/local/array
=== RUN   TestLogic/local/as_of
=== PAUSE TestLogic/local/as_of
=== RUN   TestLogic/local/backup
=== PAUSE TestLogic/local/backup
=== RUN   TestLogic/local/bit
=== PAUSE TestLogic/local/bit
=== RUN   TestLogic/local/builtin_function
=== PAUSE TestLogic/local/builtin_function
=== RUN   TestLogic/local/bytes
=== PAUSE TestLogic/local/bytes
=== RUN   TestLogic/local/cascade
=== PAUSE TestLogic/local/cascade
=== RUN   TestLogic/local/case_sensitive_names
=== PAUSE TestLogic/local/case_sensitive_names
=== RUN   TestLogic/local/ccl
=== PAUSE TestLogic/local/ccl
=== RUN   TestLogic/local/check_constraints
=== PAUSE TestLogic/local/check_constraints
=== RUN   TestLogic/local/collatedstring
=== PAUSE TestLogic/local/collatedstring
=== RUN   TestLogic/local/collatedstring_constraint
=== PAUSE TestLogic/local/collatedstring_constraint
=== RUN   TestLogic/local/collatedstring_index1
=== PAUSE TestLogic/local/collatedstring_index1
=== RUN   TestLogic/local/collatedstring_index2
=== PAUSE TestLogic/local/collatedstring_index2
=== RUN   TestLogic/local/collatedstring_normalization
=== PAUSE TestLogic/local/collatedstring_normalization
=== RUN   TestLogic/local/collatedstring_nullinindex
=== PAUSE TestLogic/local/collatedstring_nullinindex
=== RUN   TestLogic/local/collatedstring_uniqueindex1
=== PAUSE TestLogic/local/collatedstring_uniqueindex1
=== RUN   TestLogic/local/collatedstring_uniqueindex2
=== PAUSE TestLogic/local/collatedstring_uniqueindex2
=== RUN   TestLogic/local/computed
=== PAUSE TestLogic/local/computed
=== RUN   TestLogic/local/conditional
=== PAUSE TestLogic/local/conditional
=== RUN   TestLogic/local/crdb_internal
=== PAUSE TestLogic/local/crdb_internal
=== RUN   TestLogic/local/create_as
=== PAUSE TestLogic/local/create_as
=== RUN   TestLogic/local/create_index
=== PAUSE TestLogic/local/create_index
=== RUN   TestLogic/local/create_statements
=== PAUSE TestLogic/local/create_statements
=== RUN   TestLogic/local/custom_escape_character
=== PAUSE TestLogic/local/custom_escape_character
=== RUN   TestLogic/local/dangerous_statements
=== PAUSE TestLogic/local/dangerous_statements
=== RUN   TestLogic/local/database
=== PAUSE TestLogic/local/database
=== RUN   TestLogic/local/datetime
=== PAUSE TestLogic/local/datetime
=== RUN   TestLogic/local/decimal
=== PAUSE TestLogic/local/decimal
=== RUN   TestLogic/local/deep_interleaving
=== PAUSE TestLogic/local/deep_interleaving
=== RUN   TestLogic/local/default
=== PAUSE TestLogic/local/default
=== RUN   TestLogic/local/delete
=== PAUSE TestLogic/local/delete
=== RUN   TestLogic/local/dependencies
=== PAUSE TestLogic/local/dependencies
=== RUN   TestLogic/local/discard
=== PAUSE TestLogic/local/discard
=== RUN   TestLogic/local/distinct
=== PAUSE TestLogic/local/distinct
=== RUN   TestLogic/local/distinct_on
=== PAUSE TestLogic/local/distinct_on
=== RUN   TestLogic/local/distsql_expr
=== PAUSE TestLogic/local/distsql_expr
=== RUN   TestLogic/local/drop_database
=== PAUSE TestLogic/local/drop_database
=== RUN   TestLogic/local/drop_index
=== PAUSE TestLogic/local/drop_index
=== RUN   TestLogic/local/drop_sequence
=== PAUSE TestLogic/local/drop_sequence
=== RUN   TestLogic/local/drop_table
=== PAUSE TestLogic/local/drop_table
=== RUN   TestLogic/local/drop_user
=== PAUSE TestLogic/local/drop_user
=== RUN   TestLogic/local/drop_view
=== PAUSE TestLogic/local/drop_view
=== RUN   TestLogic/local/errors
=== PAUSE TestLogic/local/errors
=== RUN   TestLogic/local/event_log
=== PAUSE TestLogic/local/event_log
=== RUN   TestLogic/local/family
=== PAUSE TestLogic/local/family
=== RUN   TestLogic/local/fk
=== PAUSE TestLogic/local/fk
=== RUN   TestLogic/local/float
=== PAUSE TestLogic/local/float
=== RUN   TestLogic/local/function_lookup
=== PAUSE TestLogic/local/function_lookup
=== RUN   TestLogic/local/grant_database
=== PAUSE TestLogic/local/grant_database
=== RUN   TestLogic/local/grant_table
=== PAUSE TestLogic/local/grant_table
=== RUN   TestLogic/local/inet
=== PAUSE TestLogic/local/inet
=== RUN   TestLogic/local/information_schema
=== PAUSE TestLogic/local/information_schema
=== RUN   TestLogic/local/insert
=== PAUSE TestLogic/local/insert
=== RUN   TestLogic/local/interleaved
=== PAUSE TestLogic/local/interleaved
=== RUN   TestLogic/local/inverted_index
=== PAUSE TestLogic/local/inverted_index
=== RUN   TestLogic/local/join
=== PAUSE TestLogic/local/join
=== RUN   TestLogic/local/json
=== PAUSE TestLogic/local/json
=== RUN   TestLogic/local/json_builtins
=== PAUSE TestLogic/local/json_builtins
=== RUN   TestLogic/local/limit
=== PAUSE TestLogic/local/limit
=== RUN   TestLogic/local/manual_retry
=== PAUSE TestLogic/local/manual_retry
=== RUN   TestLogic/local/multi_statement
=== PAUSE TestLogic/local/multi_statement
=== RUN   TestLogic/local/name_escapes
=== PAUSE TestLogic/local/name_escapes
=== RUN   TestLogic/local/namespace
=== PAUSE TestLogic/local/namespace
=== RUN   TestLogic/local/no_primary_key
=== PAUSE TestLogic/local/no_primary_key
=== RUN   TestLogic/local/optimizer
=== PAUSE TestLogic/local/optimizer
=== RUN   TestLogic/local/order_by
=== PAUSE TestLogic/local/order_by
=== RUN   TestLogic/local/ordinal_references
=== PAUSE TestLogic/local/ordinal_references
=== RUN   TestLogic/local/ordinality
=== PAUSE TestLogic/local/ordinality
=== RUN   TestLogic/local/orms
=== PAUSE TestLogic/local/orms
=== RUN   TestLogic/local/parallel_stmts
=== PAUSE TestLogic/local/parallel_stmts
=== RUN   TestLogic/local/partitioning
=== PAUSE TestLogic/local/partitioning
=== RUN   TestLogic/local/pg_catalog
=== PAUSE TestLogic/local/pg_catalog
=== RUN   TestLogic/local/pgoidtype
=== PAUSE TestLogic/local/pgoidtype
=== RUN   TestLogic/local/planhook
=== PAUSE TestLogic/local/planhook
=== RUN   TestLogic/local/poison_after_push
=== PAUSE TestLogic/local/poison_after_push
=== RUN   TestLogic/local/postgres_jsonb
=== PAUSE TestLogic/local/postgres_jsonb
=== RUN   TestLogic/local/postgresjoin
=== PAUSE TestLogic/local/postgresjoin
=== RUN   TestLogic/local/prepare
=== PAUSE TestLogic/local/prepare
=== RUN   TestLogic/local/privilege_builtins
=== PAUSE TestLogic/local/privilege_builtins
=== RUN   TestLogic/local/privileges_database
=== PAUSE TestLogic/local/privileges_database
=== RUN   TestLogic/local/privileges_table
=== PAUSE TestLogic/local/privileges_table
=== RUN   TestLogic/local/rename_column
=== PAUSE TestLogic/local/rename_column
=== RUN   TestLogic/local/rename_database
=== PAUSE TestLogic/local/rename_database
=== RUN   TestLogic/local/rename_index
=== PAUSE TestLogic/local/rename_index
=== RUN   TestLogic/local/rename_sequence
=== PAUSE TestLogic/local/rename_sequence
=== RUN   TestLogic/local/rename_table
=== PAUSE TestLogic/local/rename_table
=== RUN   TestLogic/local/rename_view
=== PAUSE TestLogic/local/rename_view
=== RUN   TestLogic/local/reset
=== PAUSE TestLogic/local/reset
=== RUN   TestLogic/local/returning
=== PAUSE TestLogic/local/returning
=== RUN   TestLogic/local/role
=== PAUSE TestLogic/local/role
=== RUN   TestLogic/local/rows_from
=== PAUSE TestLogic/local/rows_from
=== RUN   TestLogic/local/run_control
=== PAUSE TestLogic/local/run_control
=== RUN   TestLogic/local/scale
=== PAUSE TestLogic/local/scale
=== RUN   TestLogic/local/scatter
=== PAUSE TestLogic/local/scatter
=== RUN   TestLogic/local/schema_change_in_txn
=== PAUSE TestLogic/local/schema_change_in_txn
=== RUN   TestLogic/local/schema_change_retry
=== PAUSE TestLogic/local/schema_change_retry
=== RUN   TestLogic/local/scrub
=== PAUSE TestLogic/local/scrub
=== RUN   TestLogic/local/select
=== PAUSE TestLogic/local/select
=== RUN   TestLogic/local/select_index
=== PAUSE TestLogic/local/select_index
=== RUN   TestLogic/local/select_index_flags
=== PAUSE TestLogic/local/select_index_flags
=== RUN   TestLogic/local/select_index_span_ranges
Setting kv batch size 10
E180912 20:23:01.838645 820 server/node.go:1012  [n1] *roachpb.RangeKeyMismatchError
E180912 20:23:01.838997 820 kv/dist_sender.go:1093  [n1,client=127.0.0.1:51788,user=root] reply error AdminSplit [/Table/53/1/3,/Min): key range /Table/53/1/3-/Table/53/1/3/NULL outside of bounds of range /Min-/Table/53/1/2
E180912 20:23:01.993986 820 server/node.go:1012  [n1] *roachpb.RangeKeyMismatchError
E180912 20:23:01.994231 820 kv/dist_sender.go:1093  [n1,client=127.0.0.1:51788,user=root] reply error AdminSplit [/Table/53/1/5,/Min): key range /Table/53/1/5-/Table/53/1/5/NULL outside of bounds of range /Table/53/1/2-/Table/53/1/3
E180912 20:23:02.186339 820 server/node.go:1012  [n1] *roachpb.RangeKeyMismatchError
E180912 20:23:02.186743 820 kv/dist_sender.go:1093  [n1,client=127.0.0.1:51788,user=root] reply error AdminSplit [/Table/53/1/8,/Min): key range /Table/53/1/8-/Table/53/1/8/NULL outside of bounds of range /Table/53/1/3-/Table/53/1/5
E180912 20:23:02.365471 820 server/node.go:1012  [n1] *roachpb.RangeKeyMismatchError
E180912 20:23:02.365826 820 kv/dist_sender.go:1093  [n1,client=127.0.0.1:51788,user=root] reply error AdminSplit [/Table/53/2/90,/Min): key range /Table/53/2/90-/Table/53/2/90/NULL outside of bounds of range /Table/53/1/5-/Table/53/1/8
E180912 20:23:02.752970 820 server/node.go:1012  [n1] *roachpb.RangeKeyMismatchError
E180912 20:23:02.753578 820 kv/dist_sender.go:1093  [n1,client=127.0.0.1:51788,user=root,txn=44a527c1,ts=1536783782.746797158,0] reply error [txn: 44a527c1], Scan [/Table/53/2/80,/Table/53/3): key range /Table/53/2/80-/Table/53/3 outside of bounds of range /Table/53/1/8-/Table/53/2/10
--- done: testdata/logic_test/select_index_span_ranges with config local: 10 tests, 0 failures
E180912 20:23:02.819972 156 vendor/google.golang.org/grpc/transport/log.go:42  transport: loopyWriter.run returning. Err: connection error: desc = "transport is closing"
E180912 20:23:02.820489 700 vendor/google.golang.org/grpc/transport/log.go:42  transport: loopyWriter.run returning. Err: connection error: desc = "transport is closing"
E180912 20:23:02.820593 171 vendor/google.golang.org/grpc/transport/log.go:42  transport: loopyWriter.run returning. Err: connection error: desc = "transport is closing"
E180912 20:23:02.820008 774 vendor/google.golang.org/grpc/transport/log.go:42  transport: loopyWriter.run returning. Err: connection error: desc = "transport is closing"
==================
WARNING: DATA RACE
Write at 0x00c000652a20 by goroutine 468:
  runtime.closechan()
      /usr/local/go/src/runtime/chan.go:327 +0x0
  github.com/cockroachdb/cockroach/pkg/storage/closedts/provider.(*Provider).Subscribe.func1()
      /home/arjun/go/src/github.com/cockroachdb/cockroach/pkg/storage/closedts/provider/provider.go:237 +0xbe
  github.com/cockroachdb/cockroach/pkg/storage/closedts/provider.(*Provider).Subscribe()
      /home/arjun/go/src/github.com/cockroachdb/cockroach/pkg/storage/closedts/provider/provider.go:285 +0xf4f
  github.com/cockroachdb/cockroach/pkg/storage.(*Store).startClosedTimestampRangefeedSubscriber.func1()
      /home/arjun/go/src/github.com/cockroachdb/cockroach/pkg/storage/store.go:1741 +0xb1
  github.com/cockroachdb/cockroach/pkg/util/stop.(*Stopper).RunAsyncTask.func1()
      /home/arjun/go/src/github.com/cockroachdb/cockroach/pkg/util/stop/stopper.go:324 +0xf3

Previous read at 0x00c000652a20 by goroutine 472:
  github.com/cockroachdb/cockroach/pkg/storage.(*Store).startClosedTimestampRangefeedSubscriber.func2()
      /home/arjun/go/src/github.com/cockroachdb/cockroach/pkg/storage/store.go:1752 +0x9c
  github.com/cockroachdb/cockroach/pkg/util/stop.(*Stopper).RunWorker.func1()
      /home/arjun/go/src/github.com/cockroachdb/cockroach/pkg/util/stop/stopper.go:199 +0x145

Goroutine 468 (running) created at:
  github.com/cockroachdb/cockroach/pkg/util/stop.(*Stopper).RunAsyncTask()
      /home/arjun/go/src/github.com/cockroachdb/cockroach/pkg/util/stop/stopper.go:319 +0x14d
  github.com/cockroachdb/cockroach/pkg/storage.(*Store).startClosedTimestampRangefeedSubscriber()
      /home/arjun/go/src/github.com/cockroachdb/cockroach/pkg/storage/store.go:1740 +0x161
  github.com/cockroachdb/cockroach/pkg/storage.(*Store).Start()
      /home/arjun/go/src/github.com/cockroachdb/cockroach/pkg/storage/store.go:1564 +0xd67
  github.com/cockroachdb/cockroach/pkg/server.(*Node).start()
      /home/arjun/go/src/github.com/cockroachdb/cockroach/pkg/server/node.go:467 +0xc70
  github.com/cockroachdb/cockroach/pkg/server.(*Server).Start()
      /home/arjun/go/src/github.com/cockroachdb/cockroach/pkg/server/server.go:1460 +0x325c
  github.com/cockroachdb/cockroach/pkg/server.(*TestServer).Start()
      /home/arjun/go/src/github.com/cockroachdb/cockroach/pkg/server/testserver.go:352 +0x301
  github.com/cockroachdb/cockroach/pkg/testutils/serverutils.StartServerRaw()
      /home/arjun/go/src/github.com/cockroachdb/cockroach/pkg/testutils/serverutils/test_server_shim.go:206 +0x199
  github.com/cockroachdb/cockroach/pkg/testutils/serverutils.StartServer()
      /home/arjun/go/src/github.com/cockroachdb/cockroach/pkg/testutils/serverutils/test_server_shim.go:174 +0xa6
  github.com/cockroachdb/cockroach/pkg/testutils/testcluster.(*TestCluster).doAddServer()
      /home/arjun/go/src/github.com/cockroachdb/cockroach/pkg/testutils/testcluster/testcluster.go:252 +0x1c6
  github.com/cockroachdb/cockroach/pkg/testutils/testcluster.StartTestCluster()
      /home/arjun/go/src/github.com/cockroachdb/cockroach/pkg/testutils/testcluster/testcluster.go:157 +0x7b8
  github.com/cockroachdb/cockroach/pkg/testutils/testcluster.testClusterFactoryImpl.StartTestCluster()
      /home/arjun/go/src/github.com/cockroachdb/cockroach/pkg/testutils/testcluster/testcluster.go:594 +0xcd
  github.com/cockroachdb/cockroach/pkg/testutils/testcluster.(*testClusterFactoryImpl).StartTestCluster()
      <autogenerated>:1 +0xe9
  github.com/cockroachdb/cockroach/pkg/testutils/serverutils.StartTestCluster()
      /home/arjun/go/src/github.com/cockroachdb/cockroach/pkg/testutils/serverutils/test_cluster_shim.go:124 +0x10f
  github.com/cockroachdb/cockroach/pkg/sql/logictest.(*logicTest).setup()
      /home/arjun/go/src/github.com/cockroachdb/cockroach/pkg/sql/logictest/logic.go:983 +0x7ce
  github.com/cockroachdb/cockroach/pkg/sql/logictest.RunLogicTest.func1.1()
      /home/arjun/go/src/github.com/cockroachdb/cockroach/pkg/sql/logictest/logic.go:2077 +0x23f
  testing.tRunner()
      /usr/local/go/src/testing/testing.go:827 +0x162

Goroutine 472 (finished) created at:
  github.com/cockroachdb/cockroach/pkg/util/stop.(*Stopper).RunWorker()
      /home/arjun/go/src/github.com/cockroachdb/cockroach/pkg/util/stop/stopper.go:192 +0xc3
  github.com/cockroachdb/cockroach/pkg/storage.(*Store).startClosedTimestampRangefeedSubscriber()
      /home/arjun/go/src/github.com/cockroachdb/cockroach/pkg/storage/store.go:1746 +0x242
  github.com/cockroachdb/cockroach/pkg/storage.(*Store).Start()
      /home/arjun/go/src/github.com/cockroachdb/cockroach/pkg/storage/store.go:1564 +0xd67
  github.com/cockroachdb/cockroach/pkg/server.(*Node).start()
      /home/arjun/go/src/github.com/cockroachdb/cockroach/pkg/server/node.go:467 +0xc70
  github.com/cockroachdb/cockroach/pkg/server.(*Server).Start()
      /home/arjun/go/src/github.com/cockroachdb/cockroach/pkg/server/server.go:1460 +0x325c
  github.com/cockroachdb/cockroach/pkg/server.(*TestServer).Start()
      /home/arjun/go/src/github.com/cockroachdb/cockroach/pkg/server/testserver.go:352 +0x301
  github.com/cockroachdb/cockroach/pkg/testutils/serverutils.StartServerRaw()
      /home/arjun/go/src/github.com/cockroachdb/cockroach/pkg/testutils/serverutils/test_server_shim.go:206 +0x199
  github.com/cockroachdb/cockroach/pkg/testutils/serverutils.StartServer()
      /home/arjun/go/src/github.com/cockroachdb/cockroach/pkg/testutils/serverutils/test_server_shim.go:174 +0xa6
  github.com/cockroachdb/cockroach/pkg/testutils/testcluster.(*TestCluster).doAddServer()
      /home/arjun/go/src/github.com/cockroachdb/cockroach/pkg/testutils/testcluster/testcluster.go:252 +0x1c6
  github.com/cockroachdb/cockroach/pkg/testutils/testcluster.StartTestCluster()
      /home/arjun/go/src/github.com/cockroachdb/cockroach/pkg/testutils/testcluster/testcluster.go:157 +0x7b8
  github.com/cockroachdb/cockroach/pkg/testutils/testcluster.testClusterFactoryImpl.StartTestCluster()
      /home/arjun/go/src/github.com/cockroachdb/cockroach/pkg/testutils/testcluster/testcluster.go:594 +0xcd
  github.com/cockroachdb/cockroach/pkg/testutils/testcluster.(*testClusterFactoryImpl).StartTestCluster()
      <autogenerated>:1 +0xe9
  github.com/cockroachdb/cockroach/pkg/testutils/serverutils.StartTestCluster()
      /home/arjun/go/src/github.com/cockroachdb/cockroach/pkg/testutils/serverutils/test_cluster_shim.go:124 +0x10f
  github.com/cockroachdb/cockroach/pkg/sql/logictest.(*logicTest).setup()
      /home/arjun/go/src/github.com/cockroachdb/cockroach/pkg/sql/logictest/logic.go:983 +0x7ce
  github.com/cockroachdb/cockroach/pkg/sql/logictest.RunLogicTest.func1.1()
      /home/arjun/go/src/github.com/cockroachdb/cockroach/pkg/sql/logictest/logic.go:2077 +0x23f
  testing.tRunner()
      /usr/local/go/src/testing/testing.go:827 +0x162
==================


ERROR: exit status 66

1 runs completed, 1 failures, over 6s
context canceled
FAIL
FAIL	github.com/cockroachdb/cockroach/pkg/sql/logictest	6.089s
Makefile:836: recipe for target 'stressrace' failed
make: *** [stressrace] Error 1

This reproduces pretty reliably.

@rjnn rjnn added C-test-failure Broken test (automatically or manually discovered). S-1-stability Severe stability issues that can be fixed by upgrading, but usually don’t resolve by restarting A-cdc Change Data Capture labels Sep 12, 2018
@rjnn rjnn added this to the 2.1 milestone Sep 12, 2018
benesch added a commit to benesch/cockroach that referenced this issue Sep 13, 2018
The previous pattern used to drain a channel

    if len(ch) > 0 {
        <-ch
    }

is considered a race by the race detector if close(ch) occurs at the
same time. Adjust the channel-draining code to be race-safe by instead
perfomring repeated nonblocking reads.

Fix cockroachdb#30159.

Release note: None
benesch added a commit to benesch/cockroach that referenced this issue Sep 13, 2018
The previous pattern used to drain a channel

    if len(ch) > 0 {
        <-ch
    }

is considered a race by the race detector if close(ch) occurs at the
same time. Adjust the channel-draining code to be race-safe by instead
perfomring repeated nonblocking reads.

Fix cockroachdb#30159.

Release note: None
@benesch
Copy link
Contributor

benesch commented Sep 13, 2018

Fixed by #30172.

@benesch benesch closed this as completed Sep 13, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-cdc Change Data Capture C-test-failure Broken test (automatically or manually discovered). S-1-stability Severe stability issues that can be fixed by upgrading, but usually don’t resolve by restarting
Projects
None yet
Development

No branches or pull requests

3 participants