diff --git a/pkg/commands/server/run.go b/pkg/commands/server/run.go index 9abbf4973a..4a1bd4bec4 100644 --- a/pkg/commands/server/run.go +++ b/pkg/commands/server/run.go @@ -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) } diff --git a/pkg/rpc/server/listen.go b/pkg/rpc/server/listen.go index 678a1ff71c..0187b13bf4 100644 --- a/pkg/rpc/server/listen.go +++ b/pkg/rpc/server/listen.go @@ -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 { diff --git a/pkg/rpc/server/listen_test.go b/pkg/rpc/server/listen_test.go index 699a15d6b2..3f47d2c993 100644 --- a/pkg/rpc/server/listen_test.go +++ b/pkg/rpc/server/listen_test.go @@ -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)