@@ -31,6 +31,7 @@ import (
3131 "github.com/polarismesh/polaris-go/pkg/model"
3232 "github.com/polarismesh/polaris-go/pkg/plugin/configconnector"
3333 "github.com/polarismesh/polaris-go/pkg/plugin/configfilter"
34+ "github.com/polarismesh/polaris-go/pkg/plugin/event"
3435)
3536
3637const (
@@ -62,6 +63,8 @@ type ConfigFileRepo struct {
6263 persistHandler * CachePersistHandler
6364
6465 fallbackToLocalCache bool
66+
67+ eventReporterChain []event.EventReporter
6568}
6669
6770// ConfigFileRepoChangeListener 远程配置文件发布监听器
@@ -72,7 +75,8 @@ func newConfigFileRepo(metadata model.ConfigFileMetadata,
7275 connector configconnector.ConfigConnector ,
7376 chain configfilter.Chain ,
7477 conf config.Configuration ,
75- persistHandler * CachePersistHandler ) (* ConfigFileRepo , error ) {
78+ persistHandler * CachePersistHandler ,
79+ eventChain []event.EventReporter ) (* ConfigFileRepo , error ) {
7680 repo := & ConfigFileRepo {
7781 connector : connector ,
7882 chain : chain ,
@@ -86,6 +90,7 @@ func newConfigFileRepo(metadata model.ConfigFileMetadata,
8690 remoteConfigFileRef : & atomic.Value {},
8791 persistHandler : persistHandler ,
8892 fallbackToLocalCache : conf .GetConfigFile ().GetLocalCache ().IsFallbackToLocalCache (),
93+ eventReporterChain : eventChain ,
8994 }
9095 repo .remoteConfigFileRef .Store (& configconnector.ConfigFile {
9196 Namespace : metadata .GetNamespace (),
@@ -285,6 +290,27 @@ func (r *ConfigFileRepo) removeCacheConfigFile(file *configconnector.ConfigFile)
285290 r .persistHandler .DeleteCacheFromFile (fileName )
286291}
287292
293+ func (r * ConfigFileRepo ) handleEventReporterChain (f * configconnector.ConfigFile ) {
294+ e := & model.BaseEventImpl {
295+ BaseType : model .ConfigBaseEvent ,
296+ ConfigEvent : & model.ConfigEventImpl {
297+ EventName : model .ConfigUpdated ,
298+ EventTime : time .Now ().Format ("2006-01-02 15:04:05" ),
299+ Namespace : r .configFileMetadata .GetNamespace (),
300+ ConfigGroup : r .configFileMetadata .GetFileGroup (),
301+ ConfigFileName : r .configFileMetadata .GetFileName (),
302+ ConfigFileVersion : f .GetVersionName (),
303+ ClientType : model .ConfigFileRequestMode2Str [r .configFileMetadata .GetFileMode ()],
304+ },
305+ }
306+ for _ , chain := range r .eventReporterChain {
307+ if err := chain .ReportEvent (e ); err != nil {
308+ log .GetBaseLogger ().Errorf ("[Config] report event(%+v) err: %+v" , e , err )
309+ continue
310+ }
311+ }
312+ }
313+
288314func deepCloneConfigFile (sourceConfigFile * configconnector.ConfigFile ) * configconnector.ConfigFile {
289315 tags := make ([]* configconnector.ConfigFileTag , 0 , len (sourceConfigFile .Tags ))
290316 for _ , tag := range sourceConfigFile .Tags {
@@ -338,4 +364,7 @@ func (r *ConfigFileRepo) fireChangeEvent(f *configconnector.ConfigFile) {
338364 zap .Any ("file" , r .configFileMetadata ), zap .Error (err ))
339365 }
340366 }
367+
368+ // 处理文件配置变更事件上报
369+ r .handleEventReporterChain (f )
341370}
0 commit comments