Skip to content
This repository was archived by the owner on Sep 30, 2024. It is now read-only.

Commit 612e26d

Browse files
authored
Extract reposcheduler and add support for syntactic indexes (#60958)
1 parent b54845b commit 612e26d

File tree

30 files changed

+1005
-596
lines changed

30 files changed

+1005
-596
lines changed

cmd/worker/internal/codeintel/autoindexing_scheduler.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@ func (j *autoindexingScheduler) Routines(_ context.Context, observationCtx *obse
5252
services.UploadsService,
5353
services.PoliciesService,
5454
matcher,
55-
services.AutoIndexingService,
55+
services.PreciseRepoSchedulingService,
56+
*services.AutoIndexingService,
5657
db.Repos(),
5758
), nil
5859
}

internal/codeintel/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ go_library(
1212
"//internal/codeintel/dependencies",
1313
"//internal/codeintel/policies",
1414
"//internal/codeintel/ranking",
15+
"//internal/codeintel/reposcheduler",
1516
"//internal/codeintel/sentinel",
1617
"//internal/codeintel/shared",
1718
"//internal/codeintel/uploads",

internal/codeintel/autoindexing/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ go_library(
2424
"//internal/codeintel/autoindexing/internal/store",
2525
"//internal/codeintel/autoindexing/shared",
2626
"//internal/codeintel/dependencies",
27+
"//internal/codeintel/reposcheduler",
2728
"//internal/codeintel/uploads/shared",
2829
"//internal/database",
2930
"//internal/gitserver",

internal/codeintel/autoindexing/init.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"github.com/sourcegraph/sourcegraph/internal/codeintel/autoindexing/internal/background/summary"
88
"github.com/sourcegraph/sourcegraph/internal/codeintel/autoindexing/internal/inference"
99
autoindexingstore "github.com/sourcegraph/sourcegraph/internal/codeintel/autoindexing/internal/store"
10+
"github.com/sourcegraph/sourcegraph/internal/codeintel/reposcheduler"
1011
"github.com/sourcegraph/sourcegraph/internal/database"
1112
"github.com/sourcegraph/sourcegraph/internal/gitserver"
1213
"github.com/sourcegraph/sourcegraph/internal/goroutine"
@@ -49,14 +50,15 @@ func NewIndexSchedulers(
4950
uploadSvc UploadService,
5051
policiesSvc PoliciesService,
5152
policyMatcher PolicyMatcher,
52-
autoindexingSvc *Service,
53+
repoSchedulingSvc reposcheduler.RepositorySchedulingService,
54+
autoindexingSvc Service,
5355
repoStore database.RepoStore,
5456
) []goroutine.BackgroundRoutine {
5557
return background.NewIndexSchedulers(
5658
scopedContext("scheduler", observationCtx),
5759
policiesSvc,
5860
policyMatcher,
59-
autoindexingSvc,
61+
repoSchedulingSvc,
6062
autoindexingSvc.indexEnqueuer,
6163
repoStore,
6264
autoindexingSvc.store,

internal/codeintel/autoindexing/internal/background/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ go_library(
1111
"//internal/codeintel/autoindexing/internal/background/summary",
1212
"//internal/codeintel/autoindexing/internal/jobselector",
1313
"//internal/codeintel/autoindexing/internal/store",
14+
"//internal/codeintel/reposcheduler",
1415
"//internal/database",
1516
"//internal/goroutine",
1617
"//internal/observation",

internal/codeintel/autoindexing/internal/background/dependencies/mocks_test.go

Lines changed: 0 additions & 140 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/codeintel/autoindexing/internal/background/init.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"github.com/sourcegraph/sourcegraph/internal/codeintel/autoindexing/internal/background/summary"
77
"github.com/sourcegraph/sourcegraph/internal/codeintel/autoindexing/internal/jobselector"
88
"github.com/sourcegraph/sourcegraph/internal/codeintel/autoindexing/internal/store"
9+
"github.com/sourcegraph/sourcegraph/internal/codeintel/reposcheduler"
910
"github.com/sourcegraph/sourcegraph/internal/database"
1011
"github.com/sourcegraph/sourcegraph/internal/goroutine"
1112
"github.com/sourcegraph/sourcegraph/internal/observation"
@@ -23,7 +24,7 @@ func NewIndexSchedulers(
2324
observationCtx *observation.Context,
2425
policiesSvc scheduler.PoliciesService,
2526
policyMatcher scheduler.PolicyMatcher,
26-
autoindexingSvc scheduler.AutoIndexingService,
27+
repoSchedulingSvc reposcheduler.RepositorySchedulingService,
2728
indexEnqueuer scheduler.IndexEnqueuer,
2829
repoStore database.RepoStore,
2930
store store.Store,
@@ -32,7 +33,7 @@ func NewIndexSchedulers(
3233
return []goroutine.BackgroundRoutine{
3334
scheduler.NewScheduler(
3435
observationCtx,
35-
autoindexingSvc,
36+
repoSchedulingSvc,
3637
policiesSvc,
3738
policyMatcher,
3839
indexEnqueuer,

internal/codeintel/autoindexing/internal/background/scheduler/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ go_library(
1717
"//internal/codeintel/dependencies",
1818
"//internal/codeintel/policies",
1919
"//internal/codeintel/policies/shared",
20+
"//internal/codeintel/reposcheduler",
2021
"//internal/codeintel/uploads/shared",
2122
"//internal/conf",
2223
"//internal/database",

internal/codeintel/autoindexing/internal/background/scheduler/iface.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,3 @@ type IndexEnqueuer interface {
2323
QueueIndexes(ctx context.Context, repositoryID int, rev, configuration string, force, bypassLimit bool) (_ []uploadsshared.Index, err error)
2424
QueueIndexesForPackage(ctx context.Context, pkg dependencies.MinimialVersionedPackageRepo) (err error)
2525
}
26-
27-
type AutoIndexingService interface {
28-
GetRepositoriesForIndexScan(ctx context.Context, processDelay time.Duration, allowGlobalPolicies bool, repositoryMatchLimit *int, limit int, now time.Time) (_ []int, err error)
29-
}

internal/codeintel/autoindexing/internal/background/scheduler/job_scheduler.go

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"github.com/sourcegraph/sourcegraph/internal/codeintel/autoindexing/internal/inference"
1313
"github.com/sourcegraph/sourcegraph/internal/codeintel/autoindexing/internal/store"
1414
policiesshared "github.com/sourcegraph/sourcegraph/internal/codeintel/policies/shared"
15+
"github.com/sourcegraph/sourcegraph/internal/codeintel/reposcheduler"
1516
"github.com/sourcegraph/sourcegraph/internal/conf"
1617
"github.com/sourcegraph/sourcegraph/internal/database"
1718
"github.com/sourcegraph/sourcegraph/internal/gitserver/gitdomain"
@@ -23,30 +24,30 @@ import (
2324
)
2425

2526
type indexSchedulerJob struct {
26-
autoindexingSvc AutoIndexingService
27-
policiesSvc PoliciesService
28-
policyMatcher PolicyMatcher
29-
indexEnqueuer IndexEnqueuer
30-
repoStore database.RepoStore
27+
repoSchedulingSvc reposcheduler.RepositorySchedulingService
28+
policiesSvc PoliciesService
29+
policyMatcher PolicyMatcher
30+
indexEnqueuer IndexEnqueuer
31+
repoStore database.RepoStore
3132
}
3233

3334
var m = new(metrics.SingletonREDMetrics)
3435

3536
func NewScheduler(
3637
observationCtx *observation.Context,
37-
autoindexingSvc AutoIndexingService,
38+
repoSchedulingSvc reposcheduler.RepositorySchedulingService,
3839
policiesSvc PoliciesService,
3940
policyMatcher PolicyMatcher,
4041
indexEnqueuer IndexEnqueuer,
4142
repoStore database.RepoStore,
4243
config *Config,
4344
) goroutine.BackgroundRoutine {
4445
job := indexSchedulerJob{
45-
autoindexingSvc: autoindexingSvc,
46-
policiesSvc: policiesSvc,
47-
policyMatcher: policyMatcher,
48-
indexEnqueuer: indexEnqueuer,
49-
repoStore: repoStore,
46+
repoSchedulingSvc: repoSchedulingSvc,
47+
policiesSvc: policiesSvc,
48+
policyMatcher: policyMatcher,
49+
indexEnqueuer: indexEnqueuer,
50+
repoStore: repoStore,
5051
}
5152

5253
redMetrics := m.Get(func() *metrics.REDMetrics {
@@ -103,12 +104,13 @@ func (b indexSchedulerJob) handleScheduler(
103104
// set should contain repositories that have yet to be updated, or that have been updated least recently.
104105
// This allows us to update every repository reliably, even if it takes a long time to process through
105106
// the backlog.
106-
repositories, err := b.autoindexingSvc.GetRepositoriesForIndexScan(
107+
repositories, err := b.repoSchedulingSvc.GetRepositoriesForIndexScan(
107108
ctx,
108-
repositoryProcessDelay,
109-
conf.CodeIntelAutoIndexingAllowGlobalPolicies(),
110-
repositoryMatchLimit,
111-
repositoryBatchSize,
109+
reposcheduler.NewBatchOptions(
110+
repositoryProcessDelay,
111+
conf.CodeIntelAutoIndexingAllowGlobalPolicies(),
112+
repositoryMatchLimit,
113+
repositoryBatchSize),
112114
time.Now(),
113115
)
114116
if err != nil {
@@ -128,13 +130,13 @@ func (b indexSchedulerJob) handleScheduler(
128130
errMu sync.Mutex
129131
)
130132

131-
for _, repositoryID := range repositories {
133+
for _, repository := range repositories {
132134
if err := sema.Acquire(ctx, 1); err != nil {
133135
return err
134136
}
135137
go func() {
136138
defer sema.Release(1)
137-
if repositoryErr := b.handleRepository(ctx, repositoryID, policyBatchSize, now); repositoryErr != nil {
139+
if repositoryErr := b.handleRepository(ctx, repository.ID, policyBatchSize, now); repositoryErr != nil {
138140
if !errors.As(err, &inference.LimitError{}) {
139141
errMu.Lock()
140142
errs = errors.Append(errs, repositoryErr)

internal/codeintel/autoindexing/internal/store/BUILD.bazel

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ go_test(
4545
"coverage_test.go",
4646
"dependencies_test.go",
4747
"enqueuer_test.go",
48-
"scheduler_test.go",
4948
"store_helpers_test.go",
49+
"store_test.go",
5050
],
5151
embed = [":store"],
5252
tags = [
@@ -61,7 +61,6 @@ go_test(
6161
"//internal/database/dbtest",
6262
"//internal/executor",
6363
"//internal/observation",
64-
"//internal/timeutil",
6564
"@com_github_google_go_cmp//cmp",
6665
"@com_github_keegancsmith_sqlf//:sqlf",
6766
"@com_github_lib_pq//:pq",

0 commit comments

Comments
 (0)