mirror of
https://github.com/sourcegraph/sourcegraph.git
synced 2026-02-06 14:31:56 +00:00
- The `internal/uploadstore` package is renamed to `object` indicating
that it is meant to provide a generic object storage wrapper.
- The `search/exhaustive/uploadstore` package is used in very few places
so I've merged into the `internal/search` package similar to
`internal/embeddings`.
There are a few reasons to do the renaming.
1. The word `upload` in a more general context is ambiguous (just in
`internal/`) - in the codeintel context, it means "SCIP index" but it
can also be interpreted generically ("upload of _some_ data").
2. Better readability - `object.Storage` is much shorter than
`uploadstore.Store`. Additionally, we use the term `Store` A LOT
in the codebase, and usually, these refer to wrappers over some
tables in some DB.
Making things worse, some of our code also has:
```
uploadsstore
"github.com/sourcegraph/sourcegraph/internal/codeintel/uploads/internal/store"
```
And code which says `uploadsstore.Store` (notice the extra `s` 😢), which
is actually a wrapper over some key DB tables like `lsif_uploads`.
33 lines
734 B
Go
33 lines
734 B
Go
package object
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"github.com/sourcegraph/sourcegraph/internal/goroutine"
|
|
)
|
|
|
|
type expirer struct {
|
|
store Storage
|
|
prefix string
|
|
maxAge time.Duration
|
|
}
|
|
|
|
func NewExpirer(ctx context.Context, store Storage, prefix string, maxAge time.Duration, interval time.Duration) goroutine.BackgroundRoutine {
|
|
return goroutine.NewPeriodicGoroutine(
|
|
ctx,
|
|
&expirer{
|
|
store: store,
|
|
prefix: prefix,
|
|
maxAge: maxAge,
|
|
},
|
|
goroutine.WithName("codeintel.upload-store-expirer"),
|
|
goroutine.WithDescription("expires entries in the code intel upload store"),
|
|
goroutine.WithInterval(interval),
|
|
)
|
|
}
|
|
|
|
func (e *expirer) Handle(ctx context.Context) error {
|
|
return e.store.ExpireObjects(ctx, e.prefix, e.maxAge)
|
|
}
|