@@ -8,6 +8,7 @@ package plugin
88import (
99 "context"
1010 "log/slog"
11+ "sync"
1112
1213 "github.com/nginx/agent/v3/internal/model"
1314
@@ -27,9 +28,11 @@ import (
2728func LoadPlugins (ctx context.Context , agentConfig * config.Config ) []bus.Plugin {
2829 plugins := make ([]bus.Plugin , 0 )
2930
31+ manifestLock := & sync.RWMutex {}
32+
3033 plugins = addResourcePlugin (plugins , agentConfig )
31- plugins = addCommandAndFilePlugins (ctx , plugins , agentConfig )
32- plugins = addAuxiliaryCommandAndFilePlugins (ctx , plugins , agentConfig )
34+ plugins = addCommandAndFilePlugins (ctx , plugins , agentConfig , manifestLock )
35+ plugins = addAuxiliaryCommandAndFilePlugins (ctx , plugins , agentConfig , manifestLock )
3336 plugins = addCollectorPlugin (ctx , agentConfig , plugins )
3437 plugins = addWatcherPlugin (plugins , agentConfig )
3538
@@ -43,15 +46,15 @@ func addResourcePlugin(plugins []bus.Plugin, agentConfig *config.Config) []bus.P
4346 return plugins
4447}
4548
46- func addCommandAndFilePlugins (ctx context.Context , plugins []bus.Plugin , agentConfig * config.Config ) []bus.Plugin {
49+ func addCommandAndFilePlugins (ctx context.Context , plugins []bus.Plugin , agentConfig * config.Config , manifestLock * sync. RWMutex ) []bus.Plugin {
4750 if agentConfig .IsCommandGrpcClientConfigured () {
4851 grpcConnection , err := grpc .NewGrpcConnection (ctx , agentConfig , agentConfig .Command )
4952 if err != nil {
5053 slog .WarnContext (ctx , "Failed to create gRPC connection for command server" , "error" , err )
5154 } else {
5255 commandPlugin := command .NewCommandPlugin (agentConfig , grpcConnection , model .Command )
5356 plugins = append (plugins , commandPlugin )
54- filePlugin := file .NewFilePlugin (agentConfig , grpcConnection , model .Command )
57+ filePlugin := file .NewFilePlugin (agentConfig , grpcConnection , model .Command , manifestLock )
5558 plugins = append (plugins , filePlugin )
5659 }
5760 } else {
@@ -63,7 +66,7 @@ func addCommandAndFilePlugins(ctx context.Context, plugins []bus.Plugin, agentCo
6366}
6467
6568func addAuxiliaryCommandAndFilePlugins (ctx context.Context , plugins []bus.Plugin ,
66- agentConfig * config.Config ,
69+ agentConfig * config.Config , manifestLock * sync. RWMutex ,
6770) []bus.Plugin {
6871 if agentConfig .IsAuxiliaryCommandGrpcClientConfigured () {
6972 auxGRPCConnection , err := grpc .NewGrpcConnection (ctx , agentConfig , agentConfig .AuxiliaryCommand )
@@ -72,7 +75,7 @@ func addAuxiliaryCommandAndFilePlugins(ctx context.Context, plugins []bus.Plugin
7275 } else {
7376 auxCommandPlugin := command .NewCommandPlugin (agentConfig , auxGRPCConnection , model .Auxiliary )
7477 plugins = append (plugins , auxCommandPlugin )
75- readFilePlugin := file .NewFilePlugin (agentConfig , auxGRPCConnection , model .Auxiliary )
78+ readFilePlugin := file .NewFilePlugin (agentConfig , auxGRPCConnection , model .Auxiliary , manifestLock )
7679 plugins = append (plugins , readFilePlugin )
7780 }
7881 } else {
0 commit comments