@@ -33,6 +33,7 @@ func main() {
3333 })
3434
3535 var metricsConfig * metrics.MetricsConfig
36+ //nolint:nestif
3637 if cfg := cast .ToStringMap (plugin .PluginConfig ["config" ]); cfg != nil {
3738 metricsConfig = metrics .NewMetricsConfig (cfg )
3839 if metricsConfig != nil && metricsConfig .Enabled {
@@ -43,20 +44,27 @@ func main() {
4344 pluginInstance .Impl .Expiry = cast .ToDuration (cfg ["expiry" ])
4445 pluginInstance .Impl .DefaultDBName = cast .ToString (cfg ["defaultDBName" ])
4546 pluginInstance .Impl .ScanCount = cast .ToInt64 (cfg ["scanCount" ])
47+ pluginInstance .Impl .ExitOnStartupError = cast .ToBool (cfg ["exitOnStartupError" ])
4648
4749 redisConfig , err := redis .ParseURL (pluginInstance .Impl .RedisURL )
4850 if err != nil {
4951 logger .Error ("Failed to parse Redis URL" , "error" , err )
50- os .Exit (1 )
52+ if pluginInstance .Impl .ExitOnStartupError {
53+ logger .Info ("Exiting due to startup error" )
54+ os .Exit (1 )
55+ }
5156 }
5257
5358 pluginInstance .Impl .RedisClient = redis .NewClient (redisConfig )
5459
5560 // Ping the Redis server to check if it is available.
5661 _ , err = pluginInstance .Impl .RedisClient .Ping (context .Background ()).Result ()
5762 if err != nil {
58- logger .Error ("Failed to ping Redis server, plugin exited" , "error" , err )
59- os .Exit (1 )
63+ logger .Error ("Failed to ping Redis server" , "error" , err )
64+ if pluginInstance .Impl .ExitOnStartupError {
65+ logger .Info ("Exiting due to startup error" )
66+ os .Exit (1 )
67+ }
6068 }
6169
6270 pluginInstance .Impl .PeriodicInvalidatorEnabled = cast .ToBool (
0 commit comments