Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-37566

FindBugs-clean remoting layer

    XMLWordPrintable

    Details

    • Similar Issues:

      Description

      I would like to cleanup FindBugs in remoting by Remoting 3.0.
      Actually the plan is to perform the most of the fixes in Remoting 2 stabilization branch and then merge them towards 3.0

      Current state in the master branch:

      [INFO] BugInstance size is 54
      [INFO] Error size is 0
      [INFO] Total bugs: 54
      [INFO] Wait not in loop in hudson.remoting.AsyncFutureImpl.get(long, TimeUnit) [hudson.remoting.AsyncFutureImpl] At AsyncFutureImpl.java:[line 83] WA_NOT_IN_LOOP
      [INFO] hudson.remoting.Capability.read(InputStream) may fail to close stream [hudson.remoting.Capability] At Capability.java:[line 124] OS_OPEN_STREAM
      [INFO] hudson.remoting.Capability.writePreamble(OutputStream) may fail to close stream [hudson.remoting.Capability] At Capability.java:[line 114] OS_OPEN_STREAM
      [INFO] hudson.remoting.Channel.getProperty(ChannelProperty) is unsynchronized, hudson.remoting.Channel.setProperty(Object, Object) is synchronized [hudson.remoting.Channel] At Channel.java:[line 1210] UG_SYNC_SET_UNSYNC_GET
      [INFO] hudson.remoting.ChannelBuilder.getProperties() may expose internal representation by returning ChannelBuilder.properties [hudson.remoting.ChannelBuilder] At ChannelBuilder.java:[line 277] EI_EXPOSE_REP
      [INFO] Return value of putIfAbsent is ignored, but checksum is reused in hudson.remoting.Checksum.calculateFor(URL) [hudson.remoting.Checksum] At Checksum.java:[line 111] RV_RETURN_VALUE_OF_PUTIFABSENT_IGNORED
      [INFO] Private method hudson.remoting.ChunkedOutputStream.frameSize() is never called [hudson.remoting.ChunkedOutputStream] At ChunkedOutputStream.java:[line 34] UPM_UNCALLED_PRIVATE_METHOD
      [INFO] Non serializable hudson.remoting.RemoteClassLoader$IClassLoader written to ObjectOutput in hudson.remoting.ClassLoaderHolder.writeObject(ObjectOutputStream) [hudson.remoting.ClassLoaderHolder] At ClassLoaderHolder.java:[line 44] DMI_NONSERIALIZABLE_OBJECT_WRITTEN
      [INFO] hudson.remoting.DiagnosedStreamCorruptionException.getReadAhead() may expose internal representation by returning DiagnosedStreamCorruptionException.readAhead [hudson.remoting.DiagnosedStreamCorruptionException] At DiagnosedStreamCorruptionException.java:[line 33] EI_EXPOSE_REP
      [INFO] hudson.remoting.DiagnosedStreamCorruptionException.getReadBack() may expose internal representation by returning DiagnosedStreamCorruptionException.readBack [hudson.remoting.DiagnosedStreamCorruptionException] At DiagnosedStreamCorruptionException.java:[line 29] EI_EXPOSE_REP
      [INFO] Unwritten field: hudson.remoting.ExportTable$Entry.recorder [hudson.remoting.ExportTable$Entry] At ExportTable.java:[line 110] UWF_UNWRITTEN_FIELD
      [INFO] hudson.remoting.ExportTable$ExportList is serializable but also an inner class of a non-serializable class [hudson.remoting.ExportTable$ExportList] At ExportTable.java:[lines 241-255] SE_BAD_FIELD_INNER_CLASS
      [INFO] Return value of Throwable.getStackTrace() ignored, but method has no side effect [hudson.remoting.ExportTable$Source] At ExportTable.java:[line 211] RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT
      [INFO] Exceptional return value of java.io.File.setLastModified(long) ignored in hudson.remoting.FileSystemJarCache.lookInCache(Channel, long, long) [hudson.remoting.FileSystemJarCache] At FileSystemJarCache.java:[line 53] RV_RETURN_VALUE_IGNORED_BAD_PRACTICE
      [INFO] Exceptional return value of java.io.File.delete() ignored in hudson.remoting.FileSystemJarCache.retrieve(Channel, long, long) [hudson.remoting.FileSystemJarCache] At FileSystemJarCache.java:[line 113] RV_RETURN_VALUE_IGNORED_BAD_PRACTICE
      [INFO] hudson.remoting.InitializeJarCacheMain.copyFile(File, File) may fail to clean up java.io.OutputStream on checked exception [hudson.remoting.InitializeJarCacheMain, hudson.remoting.InitializeJarCacheMain, hudson.remoting.InitializeJarCacheMain, hudson.remoting.InitializeJarCacheMain, hudson.remoting.InitializeJarCacheMain] Obligation to clean up resource created at InitializeJarCacheMain.java:[line 69] is not dischargedPath continues at InitializeJarCacheMain.java:[line 70]Path continues at InitializeJarCacheMain.java:[line 72]Path continues at InitializeJarCacheMain.java:[line 76]Path continues at InitializeJarCacheMain.java:[line 77] OBL_UNSATISFIED_OBLIGATION_EXCEPTION_EDGE
      [INFO] hudson.remoting.InitializeJarCacheMain.copyFile(File, File) may fail to close stream on exception [hudson.remoting.InitializeJarCacheMain] At InitializeJarCacheMain.java:[line 69] OS_OPEN_STREAM_EXCEPTION_PATH
      [INFO] Exceptional return value of java.util.concurrent.ExecutorService.submit(Runnable) ignored in hudson.remoting.JarCacheSupport.resolve(Channel, long, long) [hudson.remoting.JarCacheSupport] At JarCacheSupport.java:[line 61] RV_RETURN_VALUE_IGNORED_BAD_PRACTICE
      [INFO] Invocation of reflect.Method.setAccessible(boolean), which should be invoked from within a doPrivileged block, in hudson.remoting.Launcher.addClasspath(String) [hudson.remoting.Launcher] At Launcher.java:[line 131] DP_DO_INSIDE_DO_PRIVILEGED
      [INFO] Unread field: hudson.remoting.PipeWindow$Real.key [hudson.remoting.PipeWindow$Real] At PipeWindow.java:[line 176] URF_UNREAD_FIELD
      [INFO] The field hudson.remoting.PreloadJarTask.target is transient but isn't set by deserialization [hudson.remoting.PreloadJarTask] In PreloadJarTask.java SE_TRANSIENT_FIELD_NOT_RESTORED
      [INFO] ProxyOutputStream.java:[line 185] is set to null inside finalize method in hudson.remoting.ProxyOutputStream [hudson.remoting.ProxyOutputStream] At ProxyOutputStream.java:[line 185] FI_FINALIZER_NULLS_FIELDS
      [INFO] ProxyWriter.java:[line 200] is set to null inside finalize method in hudson.remoting.ProxyWriter [hudson.remoting.ProxyWriter] At ProxyWriter.java:[line 200] FI_FINALIZER_NULLS_FIELDS
      [INFO] Inconsistent synchronization of hudson.remoting.ProxyWriter.channel; locked 64% of time [hudson.remoting.ProxyWriter, hudson.remoting.ProxyWriter, hudson.remoting.ProxyWriter, hudson.remoting.ProxyWriter, hudson.remoting.ProxyWriter, hudson.remoting.ProxyWriter, hudson.remoting.ProxyWriter, hudson.remoting.ProxyWriter, hudson.remoting.ProxyWriter, hudson.remoting.ProxyWriter, hudson.remoting.ProxyWriter, hudson.remoting.ProxyWriter, hudson.remoting.ProxyWriter] Unsynchronized access at ProxyWriter.java:[line 167]Unsynchronized access at ProxyWriter.java:[line 167]Unsynchronized access at ProxyWriter.java:[line 168]Unsynchronized access at ProxyWriter.java:[line 168]Synchronized access at ProxyWriter.java:[line 185]Synchronized access at ProxyWriter.java:[line 185]Synchronized access at ProxyWriter.java:[line 186]Synchronized access at ProxyWriter.java:[line 111]Synchronized access at ProxyWriter.java:[line 158]Synchronized access at ProxyWriter.java:[line 158]Synchronized access at ProxyWriter.java:[line 180]Synchronized access at ProxyWriter.java:[line 78]Synchronized access at ProxyWriter.java:[line 82] IS2_INCONSISTENT_SYNC
      [INFO] Inconsistent synchronization of hudson.remoting.ProxyWriter.oid; locked 80% of time [hudson.remoting.ProxyWriter, hudson.remoting.ProxyWriter, hudson.remoting.ProxyWriter, hudson.remoting.ProxyWriter, hudson.remoting.ProxyWriter] Unsynchronized access at ProxyWriter.java:[line 168]Synchronized access at ProxyWriter.java:[line 185]Synchronized access at ProxyWriter.java:[line 187]Synchronized access at ProxyWriter.java:[line 158]Synchronized access at ProxyWriter.java:[line 83] IS2_INCONSISTENT_SYNC
      [INFO] Inconsistent synchronization of hudson.remoting.ProxyWriter.closed; locked 75% of time [hudson.remoting.ProxyWriter, hudson.remoting.ProxyWriter, hudson.remoting.ProxyWriter, hudson.remoting.ProxyWriter] Unsynchronized access at ProxyWriter.java:[line 102]Synchronized access at ProxyWriter.java:[line 176]Synchronized access at ProxyWriter.java:[line 177]Synchronized access at ProxyWriter.java:[line 93] IS2_INCONSISTENT_SYNC
      [INFO] hudson.remoting.RemoteClassLoader.create(ClassLoader, RemoteClassLoader$IClassLoader) creates a hudson.remoting.RemoteClassLoader classloader, which should be performed within a doPrivileged block [hudson.remoting.RemoteClassLoader] At RemoteClassLoader.java:[line 115] DP_CREATE_CLASSLOADER_INSIDE_DO_PRIVILEGED
      [INFO] Invocation of reflect.Method.setAccessible(boolean), which should be invoked from within a doPrivileged block, in hudson.remoting.RemoteClassLoader.<static initializer for RemoteClassLoader>() [hudson.remoting.RemoteClassLoader] At RemoteClassLoader.java:[line 330] DP_DO_INSIDE_DO_PRIVILEGED
      [INFO] The field hudson.remoting.RemoteClassLoader$ClassFile2.clazz is transient but isn't set by deserialization [hudson.remoting.RemoteClassLoader$ClassFile2] In RemoteClassLoader.java SE_TRANSIENT_FIELD_NOT_RESTORED
      [INFO] hudson.remoting.RemoteClassLoader$ClassLoaderProxy.<static initializer for ClassLoaderProxy>() creates a hudson.remoting.RemoteClassLoader$ClassLoaderProxy$1 classloader, which should be performed within a doPrivileged block [hudson.remoting.RemoteClassLoader$ClassLoaderProxy] At RemoteClassLoader.java:[line 996] DP_CREATE_CLASSLOADER_INSIDE_DO_PRIVILEGED
      [INFO] The field hudson.remoting.RemoteClassLoader$ResourceFile.local is transient but isn't set by deserialization [hudson.remoting.RemoteClassLoader$ResourceFile] In RemoteClassLoader.java SE_TRANSIENT_FIELD_NOT_RESTORED
      [INFO] Invocation of reflect.Method.setAccessible(boolean), which should be invoked from within a doPrivileged block, in hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(Channel) [hudson.remoting.RemoteInvocationHandler$RPCRequest] At RemoteInvocationHandler.java:[line 884] DP_DO_INSIDE_DO_PRIVILEGED
      [INFO] The field hudson.remoting.RemoteInvocationHandler$RPCRequest.classLoader is transient but isn't set by deserialization [hudson.remoting.RemoteInvocationHandler$RPCRequest] In RemoteInvocationHandler.java SE_TRANSIENT_FIELD_NOT_RESTORED
      [INFO] Exceptional return value of java.util.concurrent.ExecutorService.submit(Runnable) ignored in hudson.remoting.SingleLaneExecutorService.execute(Runnable) [hudson.remoting.SingleLaneExecutorService] At SingleLaneExecutorService.java:[line 105] RV_RETURN_VALUE_IGNORED_BAD_PRACTICE
      [INFO] Exceptional return value of java.util.concurrent.ExecutorService.submit(Runnable) ignored in hudson.remoting.SingleLaneExecutorService$1.run() [hudson.remoting.SingleLaneExecutorService$1] At SingleLaneExecutorService.java:[line 120] RV_RETURN_VALUE_IGNORED_BAD_PRACTICE
      [INFO] Class hudson.remoting.UserRequest defines non-transient non-serializable instance field classLoaderProxy [hudson.remoting.UserRequest] In UserRequest.java SE_BAD_FIELD
      [INFO] The field hudson.remoting.UserRequest.exports is transient but isn't set by deserialization [hudson.remoting.UserRequest] In UserRequest.java SE_TRANSIENT_FIELD_NOT_RESTORED
      [INFO] Exceptional return value of java.io.File.delete() ignored in hudson.remoting.Util.createTempDir() [hudson.remoting.Util] At Util.java:[line 81] RV_RETURN_VALUE_IGNORED_BAD_PRACTICE
      [INFO] Exceptional return value of java.io.File.mkdir() ignored in hudson.remoting.Util.createTempDir() [hudson.remoting.Util] At Util.java:[line 82] RV_RETURN_VALUE_IGNORED_BAD_PRACTICE
      [INFO] Exceptional return value of java.io.File.mkdirs() ignored in hudson.remoting.Util.makeResource(String, byte[]) [hudson.remoting.Util] At Util.java:[line 60] RV_RETURN_VALUE_IGNORED_BAD_PRACTICE
      [INFO] Invocation of reflect.Field.setAccessible(boolean), which should be invoked from within a doPrivileged block, in hudson.remoting.Which.jarFile(URL, String) [hudson.remoting.Which, hudson.remoting.Which, hudson.remoting.Which, hudson.remoting.Which] At Which.java:[line 144]Another occurrence at Which.java:[line 149]Another occurrence at Which.java:[line 154]Another occurrence at Which.java:[line 204] DP_DO_INSIDE_DO_PRIVILEGED
      [INFO] Exception is caught when Exception is not thrown in hudson.remoting.Which.jarFile(URL, String) [hudson.remoting.Which] At Which.java:[line 186] REC_CATCH_EXCEPTION
      [INFO] hudson.remoting.jnlp.Main.createEngine() may fail to close stream [hudson.remoting.jnlp.Main] At Main.java:[line 199] OS_OPEN_STREAM
      [INFO] Useless object stored in variable certificates of method hudson.remoting.jnlp.Main.createEngine() [hudson.remoting.jnlp.Main] At Main.java:[line 183] UC_USELESS_OBJECT
      [INFO] Unread public/protected field: org.jenkinsci.remoting.engine.JnlpServer3Handshake.cookie [org.jenkinsci.remoting.engine.JnlpServer3Handshake] At JnlpServer3Handshake.java:[line 62] URF_UNREAD_PUBLIC_OR_PROTECTED_FIELD
      [INFO] JnlpServer3Handshake.handshakeCiphers not initialized in constructor and dereferenced in org.jenkinsci.remoting.engine.JnlpServer3Handshake.authenticateToSlave() [org.jenkinsci.remoting.engine.JnlpServer3Handshake] At JnlpServer3Handshake.java:[line 120] UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR
      [INFO] JnlpServer3Handshake.handshakeCiphers not initialized in constructor and dereferenced in org.jenkinsci.remoting.engine.JnlpServer3Handshake.validateSlave() [org.jenkinsci.remoting.engine.JnlpServer3Handshake] At JnlpServer3Handshake.java:[line 139] UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR
      [INFO] Exceptional return value of java.util.concurrent.AbstractExecutorService.submit(Runnable) ignored in org.jenkinsci.remoting.nio.NioChannelHub.run() [org.jenkinsci.remoting.nio.NioChannelHub, org.jenkinsci.remoting.nio.NioChannelHub] At NioChannelHub.java:[line 592]Another occurrence at NioChannelHub.java:[line 610] RV_RETURN_VALUE_IGNORED_BAD_PRACTICE
      [INFO] NioChannelHub$NioTransport.receiver not initialized in constructor and dereferenced in org.jenkinsci.remoting.nio.NioChannelHub$NioTransport.abort(Throwable) [org.jenkinsci.remoting.nio.NioChannelHub$NioTransport] At NioChannelHub.java:[line 208] UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR
      [INFO] Class org.jenkinsci.remoting.nio.NioChannelHub$NioTransport$1 defines non-transient non-serializable instance field this$1 [org.jenkinsci.remoting.nio.NioChannelHub$NioTransport$1] In NioChannelHub.java SE_BAD_FIELD
      [INFO] Class org.jenkinsci.remoting.nio.NioChannelHub$NioTransport$2 defines non-transient non-serializable instance field this$1 [org.jenkinsci.remoting.nio.NioChannelHub$NioTransport$2] In NioChannelHub.java SE_BAD_FIELD
      [INFO] Invocation of reflect.Method.setAccessible(boolean), which should be invoked from within a doPrivileged block, in org.jenkinsci.remoting.nio.SelectableFileChannelFactory.create(FileDescriptor) [org.jenkinsci.remoting.nio.SelectableFileChannelFactory] At SelectableFileChannelFactory.java:[line 118] DP_DO_INSIDE_DO_PRIVILEGED
      [INFO] Invocation of reflect.Field.setAccessible(boolean), which should be invoked from within a doPrivileged block, in org.jenkinsci.remoting.nio.SelectableFileChannelFactory.unwrap(InputStream) [org.jenkinsci.remoting.nio.SelectableFileChannelFactory] At SelectableFileChannelFactory.java:[line 50] DP_DO_INSIDE_DO_PRIVILEGED
      [INFO] Invocation of reflect.Field.setAccessible(boolean), which should be invoked from within a doPrivileged block, in org.jenkinsci.remoting.nio.SelectableFileChannelFactory.unwrap(OutputStream) [org.jenkinsci.remoting.nio.SelectableFileChannelFactory] At SelectableFileChannelFactory.java:[line 70] DP_DO_INSIDE_DO_PRIVILEGED
      

        Attachments

          Issue Links

            Activity

            Hide
            scm_issue_link SCM/JIRA link daemon added a comment -

            Code changed in jenkins
            User: Oleg Nenashev
            Path:
            src/main/java/org/jenkinsci/remoting/engine/WorkDirManager.java
            http://jenkins-ci.org/commit/remoting/49b32e240e9796a1454a42a4c25ddd876fe48fb4
            Log:
            JENKINS-37566 - Cleanup FindBugs issues in WorkDirManager.

            Both are not really important, it should just make the FindBugs report clean once other pending changes are integrated.

            Show
            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Oleg Nenashev Path: src/main/java/org/jenkinsci/remoting/engine/WorkDirManager.java http://jenkins-ci.org/commit/remoting/49b32e240e9796a1454a42a4c25ddd876fe48fb4 Log: JENKINS-37566 - Cleanup FindBugs issues in WorkDirManager. Both are not really important, it should just make the FindBugs report clean once other pending changes are integrated.
            Hide
            scm_issue_link SCM/JIRA link daemon added a comment -

            Code changed in jenkins
            User: Oleg Nenashev
            Path:
            src/main/java/org/jenkinsci/remoting/engine/WorkDirManager.java
            http://jenkins-ci.org/commit/remoting/cdec8f8aa6d52322bf6948f40c4cf82ddcf30dc1
            Log:
            Merge pull request #241 from oleg-nenashev/findbugs-cleanup/JENKINS-37566-workDirManager

            JENKINS-37566 - Cleanup FindBugs issues in WorkDirManager.

            Compare: https://github.com/jenkinsci/remoting/compare/10b525298e2a...cdec8f8aa6d5

            Show
            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Oleg Nenashev Path: src/main/java/org/jenkinsci/remoting/engine/WorkDirManager.java http://jenkins-ci.org/commit/remoting/cdec8f8aa6d52322bf6948f40c4cf82ddcf30dc1 Log: Merge pull request #241 from oleg-nenashev/findbugs-cleanup/ JENKINS-37566 -workDirManager JENKINS-37566 - Cleanup FindBugs issues in WorkDirManager. Compare: https://github.com/jenkinsci/remoting/compare/10b525298e2a...cdec8f8aa6d5
            Hide
            scm_issue_link SCM/JIRA link daemon added a comment -

            Code changed in jenkins
            User: Oleg Nenashev
            Path:
            Jenkinsfile
            pom.xml
            http://jenkins-ci.org/commit/remoting/6c4624e3a40d437eed325a2d824c7b92fe5d2b81
            Log:
            [FIXED JENKINS-37566] - Enforce FindBugs by default and add it to Jenkinsfile (#242)

            • [FIXED JENKINS-37566] - Enforce FindBugs by default and add it to Jenkinsfile
            Show
            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Oleg Nenashev Path: Jenkinsfile pom.xml http://jenkins-ci.org/commit/remoting/6c4624e3a40d437eed325a2d824c7b92fe5d2b81 Log: [FIXED JENKINS-37566] - Enforce FindBugs by default and add it to Jenkinsfile (#242) [FIXED JENKINS-37566] - Enforce FindBugs by default and add it to Jenkinsfile JENKINS-37566 - Fix the FindBugs definition
            Hide
            scm_issue_link SCM/JIRA link daemon added a comment -

            Code changed in jenkins
            User: Oleg Nenashev
            Path:
            core/src/main/java/hudson/Launcher.java
            core/src/main/java/hudson/model/Computer.java
            core/src/main/java/hudson/slaves/ChannelPinger.java
            core/src/main/java/hudson/slaves/SlaveComputer.java
            core/src/main/java/jenkins/FilePathFilter.java
            core/src/main/java/jenkins/slaves/StandardOutputSwapper.java
            pom.xml
            test/src/test/java/hudson/bugs/JnlpAccessWithSecuredHudsonTest.java
            test/src/test/java/jenkins/security/Security218CliTest.java
            http://jenkins-ci.org/commit/jenkins/cb3990a4d6094260bea4571e7079fd0e3949047f
            Log:
            Update to Remoting 3.15 and Cleanup issues in Channel#current() usages (#3145)

            Pulls in fixes for: JENKINS-48133, JENKINS-48055, JENKINS-37566, JENKINS-48309, JENKINS-47965, JENKINS-48130, JENKINS-37670, JENKINS-37566, JENKINS-46724

            This change also adds some missing null/closing channel checks in the core.
            In some cases the change prevents spawning threads if the channel is in the invalid state.

            Show
            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Oleg Nenashev Path: core/src/main/java/hudson/Launcher.java core/src/main/java/hudson/model/Computer.java core/src/main/java/hudson/slaves/ChannelPinger.java core/src/main/java/hudson/slaves/SlaveComputer.java core/src/main/java/jenkins/FilePathFilter.java core/src/main/java/jenkins/slaves/StandardOutputSwapper.java pom.xml test/src/test/java/hudson/bugs/JnlpAccessWithSecuredHudsonTest.java test/src/test/java/jenkins/security/Security218CliTest.java http://jenkins-ci.org/commit/jenkins/cb3990a4d6094260bea4571e7079fd0e3949047f Log: Update to Remoting 3.15 and Cleanup issues in Channel#current() usages (#3145) Pulls in fixes for: JENKINS-48133 , JENKINS-48055 , JENKINS-37566 , JENKINS-48309 , JENKINS-47965 , JENKINS-48130 , JENKINS-37670 , JENKINS-37566 , JENKINS-46724 This change also adds some missing null/closing channel checks in the core. In some cases the change prevents spawning threads if the channel is in the invalid state.
            Hide
            oleg_nenashev Oleg Nenashev added a comment -

            The change has been released in Remoting 3.15 and integrated towards Jenkins 2.98

            Show
            oleg_nenashev Oleg Nenashev added a comment - The change has been released in Remoting 3.15 and integrated towards Jenkins 2.98

              People

              • Assignee:
                oleg_nenashev Oleg Nenashev
                Reporter:
                oleg_nenashev Oleg Nenashev
              • Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: