• Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Minor Minor
    • core
    • Jenkins 2.210

      https://github.com/jenkinsci/jenkins/blob/c8efc7c78e26f3aefad24ef4c8a161cb9a269ea3/core/src/main/java/hudson/Util.java#L1581-L1596 is confused.

       

      The properties is for "retries" which you should be able to disable with a count of zero. but you can not. but the comment implies it is just for the number of tries (not retries).

      However the code calls PathRemover.newFilteredRobustRemover(pathChecker, DELETION_MAX - 1, GC_AFTER_FAILED_DELETE, WAIT_BETWEEN_DELETION_RETRIES);]
      which ends up in https://github.com/jenkinsci/jenkins/blob/c8efc7c78e26f3aefad24ef4c8a161cb9a269ea3/core/src/main/java/jenkins/util/io/PathRemover.java#L63-L65  which is using a max retries.

      However if you run a test with the system property set to one.  then you do get one retry not one try.

      -DargLine=-Dhudson.Util.maxFileDeletionRetries=1

       

       Unable to delete 'C:\Users\IEUser\Desktop\oc-server\target\tmp\j h6725733765603761727'. Tried 2 time (of a maximum of 2) waiting 0.1 sec between attempts. 

      so the property does seem to be acting as a retry despite the code comment but you can not set it to zero one because...

      static int DELETION_MAX = Math.max(1, SystemProperties.getInteger(Util.class.getName() + ".maxFileDeletionRetries", 3)); 

       
      and the PathRemover]..

      return new PathRemover(new PausingGCRetryStrategy(Math.max(maxRetries, 1), gcAfterFailedRemove, waitBetweenRetries), pathChecker);

      which means it will always retry once, which is a PITA when trying to some timing bugs.

          [JENKINS-60351] can not disable the retries of Util.delete

          James Nord created issue -
          James Nord made changes -
          Description Original: [https://github.com/jenkinsci/jenkins/blob/c8efc7c78e26f3aefad24ef4c8a161cb9a269ea3/core/src/main/java/hudson/Util.java#L1581-L1596] is confused.

           

          The properties is for "retries" which you should be able to disable with a count of zero. but you can not. but the comment implies it is just for the number of tries (not retries).

          However the code calls [{{PathRemover.newFilteredRobustRemover(pathChecker, DELETION_MAX - 1, GC_AFTER_FAILED_DELETE, WAIT_BETWEEN_DELETION_RETRIES);}}|[https://github.com/jenkinsci/jenkins/blob/c8efc7c78e26f3aefad24ef4c8a161cb9a269ea3/core/src/main/java/hudson/Util.java#L1635]]
          which ends up in [https://github.com/jenkinsci/jenkins/blob/c8efc7c78e26f3aefad24ef4c8a161cb9a269ea3/core/src/main/java/jenkins/util/io/PathRemover.java#L63-L65]  which is using a max retries.




          However if you run a test with the system property set to one.  then you do get one retry not one try.

           -DargLine=-Dhudson.Util.maxFileDeletionRetries=1

           
          {noformat}
           Unable to delete 'C:\Users\IEUser\Desktop\oc-server\target\tmp\j h6725733765603761727'. Tried 2 time (of a maximum of 2) waiting 0.1 sec between attempts. {noformat}

          so the property does seem to be acting as a retry despite the code comment but you can not set it to zero one because...


          {noformat}
          static int DELETION_MAX = Math.max(1, SystemProperties.getInteger(Util.class.getName() + ".maxFileDeletionRetries", 3)); {noformat}
           
          New: [https://github.com/jenkinsci/jenkins/blob/c8efc7c78e26f3aefad24ef4c8a161cb9a269ea3/core/src/main/java/hudson/Util.java#L1581-L1596] is confused.

           

          The properties is for "retries" which you should be able to disable with a count of zero. but you can not. but the comment implies it is just for the number of tries (not retries).

          However the code calls [{{PathRemover.newFilteredRobustRemover(pathChecker, DELETION_MAX - 1, GC_AFTER_FAILED_DELETE, WAIT_BETWEEN_DELETION_RETRIES);}}|#L1635]]
           which ends up in [https://github.com/jenkinsci/jenkins/blob/c8efc7c78e26f3aefad24ef4c8a161cb9a269ea3/core/src/main/java/jenkins/util/io/PathRemover.java#L63-L65]  which is using a max retries.

          However if you run a test with the system property set to one.  then you do get one retry not one try.

          -DargLine=-Dhudson.Util.maxFileDeletionRetries=1

           
          {noformat}
           Unable to delete 'C:\Users\IEUser\Desktop\oc-server\target\tmp\j h6725733765603761727'. Tried 2 time (of a maximum of 2) waiting 0.1 sec between attempts. {noformat}
          so the property does seem to be acting as a retry despite the code comment but you can not set it to zero one because...
          {noformat}
          static int DELETION_MAX = Math.max(1, SystemProperties.getInteger(Util.class.getName() + ".maxFileDeletionRetries", 3)); {noformat}
           
          and the [PathRemover|[https://github.com/jenkinsci/jenkins/blob/c8efc7c78e26f3aefad24ef4c8a161cb9a269ea3/core/src/main/java/jenkins/util/io/PathRemover.java#L64]]..


          {noformat}
          return new PathRemover(new PausingGCRetryStrategy(Math.max(maxRetries, 1), gcAfterFailedRemove, waitBetweenRetries), pathChecker);{noformat}
          James Nord made changes -
          Description Original: [https://github.com/jenkinsci/jenkins/blob/c8efc7c78e26f3aefad24ef4c8a161cb9a269ea3/core/src/main/java/hudson/Util.java#L1581-L1596] is confused.

           

          The properties is for "retries" which you should be able to disable with a count of zero. but you can not. but the comment implies it is just for the number of tries (not retries).

          However the code calls [{{PathRemover.newFilteredRobustRemover(pathChecker, DELETION_MAX - 1, GC_AFTER_FAILED_DELETE, WAIT_BETWEEN_DELETION_RETRIES);}}|#L1635]]
           which ends up in [https://github.com/jenkinsci/jenkins/blob/c8efc7c78e26f3aefad24ef4c8a161cb9a269ea3/core/src/main/java/jenkins/util/io/PathRemover.java#L63-L65]  which is using a max retries.

          However if you run a test with the system property set to one.  then you do get one retry not one try.

          -DargLine=-Dhudson.Util.maxFileDeletionRetries=1

           
          {noformat}
           Unable to delete 'C:\Users\IEUser\Desktop\oc-server\target\tmp\j h6725733765603761727'. Tried 2 time (of a maximum of 2) waiting 0.1 sec between attempts. {noformat}
          so the property does seem to be acting as a retry despite the code comment but you can not set it to zero one because...
          {noformat}
          static int DELETION_MAX = Math.max(1, SystemProperties.getInteger(Util.class.getName() + ".maxFileDeletionRetries", 3)); {noformat}
           
          and the [PathRemover|[https://github.com/jenkinsci/jenkins/blob/c8efc7c78e26f3aefad24ef4c8a161cb9a269ea3/core/src/main/java/jenkins/util/io/PathRemover.java#L64]]..


          {noformat}
          return new PathRemover(new PausingGCRetryStrategy(Math.max(maxRetries, 1), gcAfterFailedRemove, waitBetweenRetries), pathChecker);{noformat}
          New: [https://github.com/jenkinsci/jenkins/blob/c8efc7c78e26f3aefad24ef4c8a161cb9a269ea3/core/src/main/java/hudson/Util.java#L1581-L1596] is confused.

           

          The properties is for "retries" which you should be able to disable with a count of zero. but you can not. but the comment implies it is just for the number of tries (not retries).

          However the code calls [{{PathRemover.newFilteredRobustRemover(pathChecker, DELETION_MAX - 1, GC_AFTER_FAILED_DELETE, WAIT_BETWEEN_DELETION_RETRIES);}}|#L1635]]
           which ends up in [https://github.com/jenkinsci/jenkins/blob/c8efc7c78e26f3aefad24ef4c8a161cb9a269ea3/core/src/main/java/jenkins/util/io/PathRemover.java#L63-L65]  which is using a max retries.

          However if you run a test with the system property set to one.  then you do get one retry not one try.

          -DargLine=-Dhudson.Util.maxFileDeletionRetries=1

           
          {noformat}
           Unable to delete 'C:\Users\IEUser\Desktop\oc-server\target\tmp\j h6725733765603761727'. Tried 2 time (of a maximum of 2) waiting 0.1 sec between attempts. {noformat}
          so the property does seem to be acting as a retry despite the code comment but you can not set it to zero one because...
          {noformat}
          static int DELETION_MAX = Math.max(1, SystemProperties.getInteger(Util.class.getName() + ".maxFileDeletionRetries", 3)); {noformat}
           
           and the [PathRemover|#L64]]..
          {noformat}
          return new PathRemover(new PausingGCRetryStrategy(Math.max(maxRetries, 1), gcAfterFailedRemove, waitBetweenRetries), pathChecker);{noformat}
          which means it will always retry once, which is a PITA when trying to some timing bugs.
          James Nord made changes -
          Assignee New: James Nord [ teilo ]
          James Nord made changes -
          Status Original: Open [ 1 ] New: In Progress [ 3 ]
          James Nord made changes -
          Labels New: lts-candidate

          James Nord added a comment -

          marking as lts-candidate not because its bad for users but because it is bad for developers especially with the bump in jenkins-test-harness which fails tests if it can not clear up the temporary directory (which is painful to diagnose if retries kick in) (and more so if you run on windows)

          James Nord added a comment - marking as lts-candidate not because its bad for users but because it is bad for developers especially with the bump in jenkins-test-harness which fails tests if it can not clear up the temporary directory (which is painful to diagnose if retries kick in) (and more so if you run on windows)
          James Nord made changes -
          Resolution New: Fixed [ 1 ]
          Status Original: In Progress [ 3 ] New: Resolved [ 5 ]
          Oleg Nenashev made changes -
          Released As New: Jenkins 2.210
          Oliver Gondža made changes -
          Labels Original: lts-candidate New: 2.204.2-fixed

            Unassigned Unassigned
            teilo James Nord
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: