Skip to content

Commit 8cfa71b

Browse files
committed
changefeedccl: database-level changefeeds: tableset watcher
This is a new package that implements a watcher for database-level changefeeds. It is used to watch for changes to the set of watched tables, so that the feed coordinator may react to them. Fixes: #148836 Fixes: #148829 Release note: None
1 parent 3c1974c commit 8cfa71b

File tree

5 files changed

+960
-0
lines changed

5 files changed

+960
-0
lines changed

pkg/BUILD.bazel

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ ALL_TESTS = [
3838
"//pkg/ccl/changefeedccl/kvfeed:kvfeed_test",
3939
"//pkg/ccl/changefeedccl/resolvedspan:resolvedspan_test",
4040
"//pkg/ccl/changefeedccl/schemafeed:schemafeed_test",
41+
"//pkg/ccl/changefeedccl/tableset:tableset_test",
4142
"//pkg/ccl/changefeedccl:changefeedccl_test",
4243
"//pkg/ccl/cliccl:cliccl_test",
4344
"//pkg/ccl/cloudccl/amazon:amazon_test",
@@ -933,6 +934,8 @@ GO_TARGETS = [
933934
"//pkg/ccl/changefeedccl/schemafeed/schematestutils:schematestutils",
934935
"//pkg/ccl/changefeedccl/schemafeed:schemafeed",
935936
"//pkg/ccl/changefeedccl/schemafeed:schemafeed_test",
937+
"//pkg/ccl/changefeedccl/tableset:tableset",
938+
"//pkg/ccl/changefeedccl/tableset:tableset_test",
936939
"//pkg/ccl/changefeedccl/timers:timers",
937940
"//pkg/ccl/changefeedccl:changefeedccl",
938941
"//pkg/ccl/changefeedccl:changefeedccl_test",
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
2+
3+
go_library(
4+
name = "tableset",
5+
srcs = ["watcher.go"],
6+
importpath = "github.com/cockroachdb/cockroach/pkg/ccl/changefeedccl/tableset",
7+
visibility = ["//visibility:public"],
8+
deps = [
9+
"//pkg/ccl/changefeedccl/cdcevent",
10+
"//pkg/ccl/changefeedccl/changefeedbase",
11+
"//pkg/jobs/jobspb",
12+
"//pkg/kv/kvclient/rangefeed",
13+
"//pkg/kv/kvpb",
14+
"//pkg/roachpb",
15+
"//pkg/sql",
16+
"//pkg/sql/catalog/catalogkeys",
17+
"//pkg/sql/catalog/descpb",
18+
"//pkg/sql/catalog/systemschema",
19+
"//pkg/sql/sem/tree",
20+
"//pkg/util/buildutil",
21+
"//pkg/util/hlc",
22+
"//pkg/util/log",
23+
"//pkg/util/mon",
24+
"//pkg/util/span",
25+
"//pkg/util/syncutil",
26+
"//pkg/util/timeutil",
27+
"//pkg/util/tracing",
28+
"@com_github_cockroachdb_errors//:errors",
29+
"@com_github_cockroachdb_logtags//:logtags",
30+
"@org_golang_x_sync//errgroup",
31+
],
32+
)
33+
34+
go_test(
35+
name = "tableset_test",
36+
srcs = [
37+
"main_test.go",
38+
"watcher_test.go",
39+
],
40+
embed = [":tableset"],
41+
deps = [
42+
"//pkg/base",
43+
"//pkg/security/securityassets",
44+
"//pkg/security/securitytest",
45+
"//pkg/server",
46+
"//pkg/settings/cluster",
47+
"//pkg/sql",
48+
"//pkg/sql/catalog",
49+
"//pkg/sql/catalog/descpb",
50+
"//pkg/sql/catalog/descs",
51+
"//pkg/testutils",
52+
"//pkg/testutils/serverutils",
53+
"//pkg/testutils/sqlutils",
54+
"//pkg/testutils/testcluster",
55+
"//pkg/util/hlc",
56+
"//pkg/util/leaktest",
57+
"//pkg/util/log",
58+
"//pkg/util/mon",
59+
"//pkg/util/timeutil",
60+
"@com_github_stretchr_testify//assert",
61+
"@com_github_stretchr_testify//require",
62+
"@org_golang_x_sync//errgroup",
63+
],
64+
)
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
// Copyright 2025 The Cockroach Authors.
2+
//
3+
// Use of this software is governed by the CockroachDB Software License
4+
// included in the /LICENSE file.
5+
6+
package tableset
7+
8+
import (
9+
"os"
10+
"testing"
11+
12+
"github.com/cockroachdb/cockroach/pkg/base"
13+
"github.com/cockroachdb/cockroach/pkg/security/securityassets"
14+
"github.com/cockroachdb/cockroach/pkg/security/securitytest"
15+
"github.com/cockroachdb/cockroach/pkg/server"
16+
"github.com/cockroachdb/cockroach/pkg/testutils/serverutils"
17+
"github.com/cockroachdb/cockroach/pkg/testutils/testcluster"
18+
)
19+
20+
func init() {
21+
securityassets.SetLoader(securitytest.EmbeddedAssets)
22+
}
23+
24+
func TestMain(m *testing.M) {
25+
serverutils.InitTestServerFactory(server.TestServerFactory)
26+
serverutils.InitTestClusterFactory(testcluster.TestClusterFactory)
27+
28+
defer serverutils.TestingSetDefaultTenantSelectionOverride(
29+
base.TestIsForStuffThatShouldWorkWithSecondaryTenantsButDoesntYet(76378),
30+
)()
31+
32+
os.Exit(m.Run())
33+
}
34+
35+
//go:generate ../util/leaktest/add-leaktest.sh *_test.go

0 commit comments

Comments
 (0)