liske / needrestart

Restart daemons after library updates.
GNU General Public License v2.0
426 stars 67 forks source link

needrestart (3.5 Debian package) detect Jenkins as wrong positive (seems related to #39) #267

Open rdemongeot opened 1 year ago

rdemongeot commented 1 year ago

Hello,

Needrestart detect a deleted file from jenkins as an issue. [main] #416 uses deleted /var/lib/jenkins/.cache/JNA/temp/jna17335196598942629868.tmp [main] #416 is not a child [main] #416 exe => /usr/lib/jvm/java-11-openjdk-amd64/bin/java [Core] #416 is a NeedRestart::Interp::Java [Core] #416 source is UNKNOWN [main] #416 is jenkins.service

Related to https://github.com/liske/needrestart/issues/48

Please find bellow my (dirty?) patch in order to configure some path in which deleted files are not "critical".

+++ /usr/sbin/needrestart   2023-03-20 12:14:42.745233546 +0100
@@ -140,6 +140,7 @@
     systemctl_combine => 0,
     blacklist => [],
     blacklist_interp => [],
+    blacklist_deleted_files => [],
     blacklist_rc => [],
     blacklist_mappings => [],
     override_rc => {},
@@ -507,9 +508,13 @@
            # removed executable mapped files
            if($path =~ s/ \(deleted\)$// ||  # Linux
               $path =~ s/^\(deleted\)//) {   # Linux VServer
-           print STDERR "$LOGPREF #$pid uses deleted $path\n" if($nrconf{verbosity} > 1);
-           $restart++;
-           last;
+               if (scalar grep { $path =~ /$_/; } @{$nrconf{blacklist_deleted_files}}) {
+               print STDERR "$LOGPREF #$pid uses deleted $path but blacklisted\n" if($nrconf{verbosity} > 1);
+               } else {
+               print STDERR "$LOGPREF #$pid uses deleted $path\n" if($nrconf{verbosity} > 1);
+               $restart++;
+               last;
+               }
            }

            # check for outdated lib mappings
rdemongeot commented 1 year ago

Edit: i can't push it even in new branches.

liske commented 1 year ago

There is no need to create a new option. You can add a pattern to the blacklist_mappings option. Maybe any path containing a .cache component should be ignored :thinking: