feat(server): add support of skip-db-update flag for hot db update (#3416)

This commit is contained in:
DmitriyLewen
2023-01-15 11:28:50 +03:00
committed by GitHub
parent 2033e05b6b
commit ee12442b8d
3 changed files with 14 additions and 6 deletions

View File

@@ -55,5 +55,5 @@ func Run(ctx context.Context, opts flag.Options) (err error) {
m.Register()
server := rpcServer.NewServer(opts.AppVersion, opts.Listen, opts.CacheDir, opts.Token, opts.TokenHeader, opts.DBRepository)
return server.ListenAndServe(cache, opts.Insecure)
return server.ListenAndServe(cache, opts.Insecure, opts.SkipDBUpdate)
}

View File

@@ -47,7 +47,7 @@ func NewServer(appVersion, addr, cacheDir, token, tokenHeader, dbRepository stri
}
// ListenAndServe starts Trivy server
func (s Server) ListenAndServe(serverCache cache.Cache, insecure bool) error {
func (s Server) ListenAndServe(serverCache cache.Cache, insecure, skipDBUpdate bool) error {
requestWg := &sync.WaitGroup{}
dbUpdateWg := &sync.WaitGroup{}
@@ -56,7 +56,7 @@ func (s Server) ListenAndServe(serverCache cache.Cache, insecure bool) error {
ctx := context.Background()
for {
time.Sleep(updateInterval)
if err := worker.update(ctx, s.appVersion, s.cacheDir, dbUpdateWg, requestWg); err != nil {
if err := worker.update(ctx, s.appVersion, s.cacheDir, skipDBUpdate, dbUpdateWg, requestWg); err != nil {
log.Logger.Errorf("%+v\n", err)
}
}
@@ -121,9 +121,9 @@ func newDBWorker(dbClient dbFile.Operation) dbWorker {
}
func (w dbWorker) update(ctx context.Context, appVersion, cacheDir string,
dbUpdateWg, requestWg *sync.WaitGroup) error {
skipDBUpdate bool, dbUpdateWg, requestWg *sync.WaitGroup) error {
log.Logger.Debug("Check for DB update...")
needsUpdate, err := w.dbClient.NeedsUpdate(appVersion, false)
needsUpdate, err := w.dbClient.NeedsUpdate(appVersion, skipDBUpdate)
if err != nil {
return xerrors.Errorf("failed to check if db needs an update")
} else if !needsUpdate {

View File

@@ -80,6 +80,14 @@ func Test_dbWorker_update(t *testing.T) {
},
args: args{appVersion: "1"},
},
{
name: "skip update",
needsUpdate: needsUpdate{
input: needsUpdateInput{appVersion: "1", skip: true},
output: needsUpdateOutput{needsUpdate: false},
},
args: args{appVersion: "1"},
},
{
name: "NeedsUpdate returns an error",
needsUpdate: needsUpdate{
@@ -137,7 +145,7 @@ func Test_dbWorker_update(t *testing.T) {
var dbUpdateWg, requestWg sync.WaitGroup
err := w.update(context.Background(), tt.args.appVersion, cacheDir,
&dbUpdateWg, &requestWg)
tt.needsUpdate.input.skip, &dbUpdateWg, &requestWg)
if tt.wantErr != "" {
require.NotNil(t, err, tt.name)
assert.Contains(t, err.Error(), tt.wantErr, tt.name)