From 82c64e22b790145752a471567a57c15e951dfb54 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Thu, 12 Sep 2019 14:28:01 +0300 Subject: [PATCH] Updated AttributeS --- cmd/cgr-engine/cgr-engine.go | 5 +---- config/config.go | 3 +++ engine/attributes.go | 26 ++++++++++++-------------- engine/attributes_test.go | 11 ++++++++--- 4 files changed, 24 insertions(+), 21 deletions(-) diff --git a/cmd/cgr-engine/cgr-engine.go b/cmd/cgr-engine/cgr-engine.go index 9d5983543..ab569a3fa 100644 --- a/cmd/cgr-engine/cgr-engine.go +++ b/cmd/cgr-engine/cgr-engine.go @@ -806,10 +806,7 @@ func startAttributeService(internalAttributeSChan chan rpcclient.RpcClientConnec <-cacheS.GetPrecacheChannel(utils.CacheAttributeProfiles) <-cacheS.GetPrecacheChannel(utils.CacheAttributeFilterIndexes) - aS, err := engine.NewAttributeService(dm, filterS, - cfg.AttributeSCfg().StringIndexedFields, - cfg.AttributeSCfg().PrefixIndexedFields, - cfg.AttributeSCfg().ProcessRuns) + aS, err := engine.NewAttributeService(dm, filterS, cfg) if err != nil { utils.Logger.Crit( fmt.Sprintf("<%s> Could not init, error: %s", diff --git a/config/config.go b/config/config.go index 6173d610f..df36871ca 100755 --- a/config/config.go +++ b/config/config.go @@ -1148,7 +1148,10 @@ func (cfg *CGRConfig) DNSAgentCfg() *DNSAgentCfg { return cfg.dnsAgentCfg } +// AttributeSCfg returns the config for AttributeS func (cfg *CGRConfig) AttributeSCfg() *AttributeSCfg { + cfg.lks[ATTRIBUTE_JSN].Lock() + defer cfg.lks[ATTRIBUTE_JSN].Unlock() return cfg.attributeSCfg } diff --git a/engine/attributes.go b/engine/attributes.go index f471f0b89..95762fda7 100644 --- a/engine/attributes.go +++ b/engine/attributes.go @@ -28,20 +28,18 @@ import ( ) func NewAttributeService(dm *DataManager, filterS *FilterS, - stringIndexedFields, prefixIndexedFields *[]string, - processRuns int) (*AttributeService, error) { - return &AttributeService{dm: dm, filterS: filterS, - stringIndexedFields: stringIndexedFields, - prefixIndexedFields: prefixIndexedFields, - processRuns: processRuns}, nil + cgrcfg *config.CGRConfig) (*AttributeService, error) { + return &AttributeService{ + dm: dm, + filterS: filterS, + cgrcfg: cgrcfg, + }, nil } type AttributeService struct { - dm *DataManager - filterS *FilterS - stringIndexedFields *[]string - prefixIndexedFields *[]string - processRuns int + dm *DataManager + filterS *FilterS + cgrcfg *config.CGRConfig } // ListenAndServe will initialize the service @@ -70,13 +68,13 @@ func (alS *AttributeService) attributeProfileForEvent(args *AttrArgsProcessEvent if len(args.AttributeIDs) != 0 { attrIDs = args.AttributeIDs } else { - aPrflIDs, err := MatchingItemIDsForEvent(args.Event, alS.stringIndexedFields, alS.prefixIndexedFields, + aPrflIDs, err := MatchingItemIDsForEvent(args.Event, alS.cgrcfg.AttributeSCfg().StringIndexedFields, alS.cgrcfg.AttributeSCfg().PrefixIndexedFields, alS.dm, utils.CacheAttributeFilterIndexes, attrIdxKey, alS.filterS.cfg.AttributeSCfg().IndexedSelects) if err != nil { if err != utils.ErrNotFound { return nil, err } - if aPrflIDs, err = MatchingItemIDsForEvent(args.Event, alS.stringIndexedFields, alS.prefixIndexedFields, + if aPrflIDs, err = MatchingItemIDsForEvent(args.Event, alS.cgrcfg.AttributeSCfg().StringIndexedFields, alS.cgrcfg.AttributeSCfg().PrefixIndexedFields, alS.dm, utils.CacheAttributeFilterIndexes, utils.ConcatenatedKey(args.Tenant, utils.META_ANY), alS.filterS.cfg.AttributeSCfg().IndexedSelects); err != nil { return nil, err @@ -287,7 +285,7 @@ func (alS *AttributeService) V1ProcessEvent(args *AttrArgsProcessEvent, return utils.NewErrMandatoryIeMissing(utils.Event) } if args.ProcessRuns == nil || *args.ProcessRuns == 0 { - args.ProcessRuns = utils.IntPointer(alS.processRuns) + args.ProcessRuns = utils.IntPointer(alS.cgrcfg.AttributeSCfg().ProcessRuns) } var apiRply *AttrSProcessEventReply // aggregate response here for i := 0; i < *args.ProcessRuns; i++ { diff --git a/engine/attributes_test.go b/engine/attributes_test.go index 5cee7a7e9..4bf92ac00 100644 --- a/engine/attributes_test.go +++ b/engine/attributes_test.go @@ -156,10 +156,13 @@ func TestAttributePopulateAttrService(t *testing.T) { data, _ := NewMapStorage() dmAtr = NewDataManager(data) defaultCfg, err := config.NewDefaultCGRConfig() + defaultCfg.AttributeSCfg().ProcessRuns = 1 + defaultCfg.AttributeSCfg().StringIndexedFields = nil + defaultCfg.AttributeSCfg().PrefixIndexedFields = nil if err != nil { t.Errorf("Error: %+v", err) } - attrService, err = NewAttributeService(dmAtr, &FilterS{dm: dmAtr, cfg: defaultCfg}, nil, nil, 1) + attrService, err = NewAttributeService(dmAtr, &FilterS{dm: dmAtr, cfg: defaultCfg}, defaultCfg) if err != nil { t.Errorf("Error: %+v", err) } @@ -1698,10 +1701,11 @@ func BenchmarkAttributeProcessEventConstant(b *testing.B) { data, _ := NewMapStorage() dmAtr = NewDataManager(data) defaultCfg, err := config.NewDefaultCGRConfig() + defaultCfg.AttributeSCfg().ProcessRuns = 1 if err != nil { b.Errorf("Error: %+v", err) } - attrService, err = NewAttributeService(dmAtr, &FilterS{dm: dmAtr, cfg: defaultCfg}, nil, nil, 1) + attrService, err = NewAttributeService(dmAtr, &FilterS{dm: dmAtr, cfg: defaultCfg}, defaultCfg) if err != nil { b.Errorf("Error: %+v", err) } @@ -1761,10 +1765,11 @@ func BenchmarkAttributeProcessEventVariable(b *testing.B) { data, _ := NewMapStorage() dmAtr = NewDataManager(data) defaultCfg, err := config.NewDefaultCGRConfig() + defaultCfg.AttributeSCfg().ProcessRuns = 1 if err != nil { b.Errorf("Error: %+v", err) } - attrService, err = NewAttributeService(dmAtr, &FilterS{dm: dmAtr, cfg: defaultCfg}, nil, nil, 1) + attrService, err = NewAttributeService(dmAtr, &FilterS{dm: dmAtr, cfg: defaultCfg}, defaultCfg) if err != nil { b.Errorf("Error: %+v", err) }