sourcegraph/internal/object/expirer.go
Varun Gandhi 9145768648
chore: Rename uploadstore packages for clarity (#63931)
- 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`.
2024-07-22 08:57:56 +08:00

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