@@ -14,6 +14,7 @@ import (
14
14
"sync/atomic"
15
15
"time"
16
16
17
+ "github.com/alibaba/higress/api-server/pkg/options"
17
18
"github.com/alibaba/higress/api-server/pkg/utils"
18
19
"github.com/nacos-group/nacos-sdk-go/v2/clients/config_client"
19
20
"github.com/nacos-group/nacos-sdk-go/v2/common/constant"
@@ -38,8 +39,6 @@ import (
38
39
39
40
const dataIdSeparator = "."
40
41
const wildcardSuffix = dataIdSeparator + "*"
41
- const searchPageSize = 50
42
- const listRefreshInterval = 10 * time .Second
43
42
const encryptionMark = "enc|"
44
43
const namesSuffix = "__names__"
45
44
const namesGroup = constant .DEFAULT_GROUP
@@ -133,7 +132,7 @@ func (n *nacosREST) startBackgroundWatcher() {
133
132
return
134
133
}
135
134
136
- n .listRefreshTicker = time .NewTicker (listRefreshInterval )
135
+ n .listRefreshTicker = time .NewTicker (time . Duration ( options . NacosListRefreshIntervalSecs ) * time . Second )
137
136
go func (n * nacosREST ) {
138
137
for {
139
138
<- n .listRefreshTicker .C
@@ -229,17 +228,16 @@ func (n *nacosREST) List(
229
228
ns , _ := genericapirequest .NamespaceFrom (ctx )
230
229
231
230
searchConfigParam := vo.SearchConfigParam {
232
- Search : "blur" ,
233
- DataId : n .dataIdPrefix + wildcardSuffix ,
234
- Group : ns ,
235
- PageSize : searchPageSize ,
231
+ Search : "blur" ,
232
+ DataId : n .dataIdPrefix + wildcardSuffix ,
233
+ Group : ns ,
236
234
}
237
235
predicate := n .buildListPredicate (options )
238
236
count := 0
239
237
err = n .enumerateConfigs (& searchConfigParam , func (item * model.ConfigItem ) {
240
238
obj , err := n .decodeConfig (n .codec , item .Content , n .newFunc )
241
239
if obj == nil || err != nil {
242
- klog .Errorf ("failed to decode config %s/%s: %v" , item .Group , item .DataId , err )
240
+ klog .Errorf ("failed to decode config [#3] %s/%s: %v" , item .Group , item .DataId , err )
243
241
return
244
242
}
245
243
if ok , err := predicate .Matches (obj ); err == nil && ok {
@@ -499,6 +497,9 @@ func (n *nacosREST) buildListPredicate(options *metainternalversion.ListOptions)
499
497
func (n * nacosREST ) enumerateConfigs (param * vo.SearchConfigParam , action func (* model.ConfigItem )) error {
500
498
searchConfigParam := * param
501
499
searchConfigParam .PageNo = 1
500
+ if searchConfigParam .PageSize < options .NacosConfigSearchPageSize {
501
+ searchConfigParam .PageSize = options .NacosConfigSearchPageSize
502
+ }
502
503
for {
503
504
page , err := n .configClient .SearchConfig (searchConfigParam )
504
505
if err != nil {
@@ -510,6 +511,9 @@ func (n *nacosREST) enumerateConfigs(param *vo.SearchConfigParam, action func(*m
510
511
}
511
512
512
513
for _ , item := range page .PageItems {
514
+ if item .Group == namesGroup && item .DataId == n .namesDataId {
515
+ continue
516
+ }
513
517
localItem := * (& item )
514
518
action (& localItem )
515
519
}
@@ -533,7 +537,7 @@ func (n *nacosREST) read(decoder runtime.Decoder, group, dataId string, newFunc
533
537
}
534
538
obj , err := n .decodeConfig (decoder , config , newFunc )
535
539
if err != nil {
536
- klog .Errorf ("failed to decode config %s: %v" , dataId , err )
540
+ klog .Errorf ("failed to decode config #4 %s: %v" , dataId , err )
537
541
return nil , config , err
538
542
}
539
543
return obj , config , nil
@@ -549,10 +553,12 @@ func (n *nacosREST) readRaw(group, dataId string) (string, error) {
549
553
func (n * nacosREST ) decodeConfig (decoder runtime.Decoder , config string , newFunc func () runtime.Object ) (runtime.Object , error ) {
550
554
decryptedConfig , err := n .decryptConfig (config )
551
555
if err != nil {
556
+ klog .Infof ("failed to decoded config #1: %v\n %s" , err , config )
552
557
return nil , err
553
558
}
554
559
obj , _ , err := decoder .Decode ([]byte (decryptedConfig ), nil , newFunc ())
555
560
if err != nil {
561
+ klog .Infof ("failed to decoded config #2: %v\n %s" , err , config )
556
562
return nil , err
557
563
}
558
564
accessor , err := meta .Accessor (obj )
@@ -606,9 +612,6 @@ func (n *nacosREST) refreshConfigList() {
606
612
Search : "blur" ,
607
613
DataId : n .dataIdPrefix + wildcardSuffix ,
608
614
}, func (item * model.ConfigItem ) {
609
- if item .Group == namesGroup && item .DataId == n .namesDataId {
610
- return
611
- }
612
615
key := item .Group + "/" + item .DataId
613
616
allConfigKeys = append (allConfigKeys , key )
614
617
if _ , ok := n .configItems [key ]; ! ok {
@@ -644,7 +647,7 @@ func (n *nacosREST) refreshConfigList() {
644
647
configItem := configItems [key ]
645
648
obj , err := n .decodeConfig (n .codec , configItem .Content , n .newFunc )
646
649
if err != nil {
647
- klog .Errorf ("failed to decode config %s: %v" , configItem .DataId , err )
650
+ klog .Errorf ("failed to decode config #5 %s: %v" , configItem .DataId , err )
648
651
delete (configItems , key )
649
652
continue
650
653
}
@@ -659,7 +662,7 @@ func (n *nacosREST) refreshConfigList() {
659
662
OnChange : func (namespace , group , dataId , data string ) {
660
663
obj , err := n .decodeConfig (n .codec , data , n .newFunc )
661
664
if err != nil {
662
- klog .Errorf ("failed to decode config %s: %v" , dataId , err )
665
+ klog .Errorf ("failed to decode config #6 %s: %v" , dataId , err )
663
666
return
664
667
}
665
668
klog .Infof ("%s/%s is changed" , group , dataId )
@@ -677,7 +680,7 @@ func (n *nacosREST) refreshConfigList() {
677
680
configItem := n .configItems [key ]
678
681
obj , err := n .decodeConfig (n .codec , configItem .Content , n .newFunc )
679
682
if err != nil {
680
- klog .Errorf ("failed to decode config %s: %v" , configItem .DataId , err )
683
+ klog .Errorf ("failed to decode config #7 %s: %v" , configItem .DataId , err )
681
684
continue
682
685
}
683
686
_ = n .configClient .CancelListenConfig (vo.ConfigParam {
0 commit comments