From ef1d69c3713af1829e8ef3acd6898e191e72ee6c Mon Sep 17 00:00:00 2001 From: Zachary Wasserman Date: Mon, 13 Jan 2020 17:35:42 -0800 Subject: [PATCH] Fix bugs in error handling for creation of live queries (#2181) - Return the correct result type in error cases - Handle nil values for campaign when logging --- server/service/endpoint_campaigns.go | 8 ++++---- server/service/logging_campaigns.go | 12 ++++++++++-- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/server/service/endpoint_campaigns.go b/server/service/endpoint_campaigns.go index 9e92f41763..6b1d2b6d19 100644 --- a/server/service/endpoint_campaigns.go +++ b/server/service/endpoint_campaigns.go @@ -39,9 +39,9 @@ func makeCreateDistributedQueryCampaignEndpoint(svc kolide.Service) endpoint.End req := request.(createDistributedQueryCampaignRequest) campaign, err := svc.NewDistributedQueryCampaign(ctx, req.Query, req.Selected.Hosts, req.Selected.Labels) if err != nil { - return createQueryResponse{Err: err}, nil + return createDistributedQueryCampaignResponse{Err: err}, nil } - return createDistributedQueryCampaignResponse{campaign, nil}, nil + return createDistributedQueryCampaignResponse{Campaign: campaign}, nil } } @@ -64,9 +64,9 @@ func makeCreateDistributedQueryCampaignByNamesEndpoint(svc kolide.Service) endpo req := request.(createDistributedQueryCampaignByNamesRequest) campaign, err := svc.NewDistributedQueryCampaignByNames(ctx, req.Query, req.Selected.Hosts, req.Selected.Labels) if err != nil { - return createQueryResponse{Err: err}, nil + return createDistributedQueryCampaignResponse{Err: err}, nil } - return createDistributedQueryCampaignResponse{campaign, nil}, nil + return createDistributedQueryCampaignResponse{Campaign: campaign}, nil } } diff --git a/server/service/logging_campaigns.go b/server/service/logging_campaigns.go index 3c644d1733..b376e8b637 100644 --- a/server/service/logging_campaigns.go +++ b/server/service/logging_campaigns.go @@ -20,12 +20,16 @@ func (mw loggingMiddleware) NewDistributedQueryCampaign(ctx context.Context, que loggedInUser = vc.Username() } defer func(begin time.Time) { + var numHosts uint = 0 + if campaign != nil { + numHosts = campaign.Metrics.TotalHosts + } _ = mw.logger.Log( "method", "NewDistributedQueryCampaign", "err", err, "user", loggedInUser, "sql", queryString, - "numHosts", campaign.Metrics.TotalHosts, + "numHosts", numHosts, "took", time.Since(begin), ) }(time.Now()) @@ -44,11 +48,15 @@ func (mw loggingMiddleware) NewDistributedQueryCampaignByNames(ctx context.Conte loggedInUser = vc.Username() } defer func(begin time.Time) { + var numHosts uint = 0 + if campaign != nil { + numHosts = campaign.Metrics.TotalHosts + } _ = mw.logger.Log( "method", "NewDistributedQueryCampaignByNames", "err", err, "user", loggedInUser, - "numHosts", campaign.Metrics.TotalHosts, + "numHosts", numHosts, "took", time.Since(begin), ) }(time.Now())