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

Use build numbers as IDs

    XMLWordPrintable

    Details

    • Similar Issues:

      Description

      Stop using the formatted timestamp to compute Run.id, and just use the build number as the directory name, so that

      r.getId().equals(String.valueOf(r.number))

      in which case the timestamp would have to be made a nontransient field (but number could be transient). Then build number symlinks could be dispensed with, saving some hassle and overhead; and AbstractLazyLoadRunMap could be greatly simplified, since the disk location would be immediately predictable from the number, which is what most API calls care about.

      The downside is that there would have to be a one-time migration, which could be slow on a big installation, and not reversible.

        Attachments

          Issue Links

            Activity

            Hide
            jglick Jesse Glick added a comment -

            Would allow an easy fix of JENKINS-24376 and JENKINS-19977.

            Show
            jglick Jesse Glick added a comment - Would allow an easy fix of JENKINS-24376 and JENKINS-19977 .
            Hide
            jglick Jesse Glick added a comment -

            And issues like JENKINS-22767 would either go away or be easier to fix.

            Show
            jglick Jesse Glick added a comment - And issues like JENKINS-22767 would either go away or be easier to fix.
            Hide
            jglick Jesse Glick added a comment -

            Filed PR 1379 to play with this.

            Show
            jglick Jesse Glick added a comment - Filed PR 1379 to play with this.
            Hide
            kohsuke Kohsuke Kawaguchi added a comment - - edited

            Copying the IRC conversation:

            (11:39:48 AM) jglick: kohsuke: I know you are alive https://github.com/jenkinsci/jenkins/pull/1379 do not try to hide from me :-)
            (11:40:17 AM) kohsuke: Yes, I'm alive
            (11:41:34 AM) kohsuke: This is a scary change
            (11:43:29 AM) kohsuke: jglick: you sure about automatically running the migration script? I assume it means it won't be downgradable
            (11:44:16 AM) jglick: kohsuke: correct it is not downgradable (well, without losing build records I mean). But that is necessary to get the benefits of code simplification.
            (11:46:12 AM) jglick: And yes it is a scary change, but then again the current situation is to me scarier.
            (11:46:35 AM) kohsuke: does it try to create symlink from build ID to the number dir?
            (11:47:01 AM) jglick: kohsuke: no. Why?
            (11:47:02 AM) kohsuke: Looks like not. The ID as timestamp is completely gone
            (11:47:21 AM) jglick: The timestamp becomes a regular field in build.xml.
            (11:47:54 AM) kohsuke: I thought perhaps the way to go is to start switching around timestamp=dir & number=symlink
            (11:48:17 AM) kohsuke: presumably that would still allow you for lazy loading to try to find a match deterministically in one go
            (11:48:18 AM) jglick: What is the advantage to having symlinks for the timestamp?
            (11:48:29 AM) kohsuke: for compatibility
            (11:48:34 AM) jglick: The five mentioned plugins need to be updated anyway.
            (11:48:42 AM) jglick: So there is no compatibility concern for them.
            (11:49:26 AM) jglick: (Once they are fixed to expect the new layout, I mean.)
            (11:51:21 AM) kohsuke: I'm trying to think of ways to avoid doing large irreversible edits to $JENKINS_HOME
            (11:51:50 AM) kohsuke: Leaving the timestamp as symlink and not renaming existing directories would let you do that
            (11:52:51 AM) jglick: How does that help anything? Any tools relying on a specific build format will need to be updated anyway.
            (11:53:24 AM) jglick: And note that the original impetus for this PR (https://github.com/jenkinsci/jenkins/issues/1376) pointed out several problems with the timestamp format on its own.
            (11:54:45 AM) jglick: The worst that happens after downgrading is that historical build records are invisible, which is not exactly fatal.
            (12:34:50 PM) danielbeck: jglick: It's pretty bad for workflows that rely on access to older builds (Copy Artifact, Promoted Builds, etc.)
            (01:01:20 PM) kohsuke: jglick: symlinks behave like directories, so anyone looking for directories by timestamp will find them, including earlier versions of Jenkins
            (01:03:50 PM) jglick: kohsuke: is your only point to lessen the impact of migration after downgrading?
            (01:04:14 PM) kohsuke: Yes, that's my main concern with this PR
            (01:04:15 PM) jglick: Do not want to create symlinks for *new* builds certainly.
            (01:04:36 PM) kohsuke: Why not?
            (01:04:41 PM) jglick: Adds noise forever/.
            (01:04:44 PM) jglick: forever.
            (01:04:58 PM) jglick: And given the problems we have had with symlinks, would be better to use them less.
            (01:05:15 PM) kohsuke: It doesn't have to be forever but for a while I'd think it'd be a good thing to do
            (01:05:58 PM) kohsuke: But anyway, that's a lesser point compared to not shuffling stuff in $JENKINS_HOME
            (01:09:04 PM) jglick: So what is your suggestion? During migration, swap symlink vs. dir status for existing builds, adjusting build.xml as I already do; then for a while (say one LTS cycle) continue to create timestamp symlinks for new builds, provided of course that they do not clash with those of earlier builds (which is possible now that there is no enforced 1s delay), but do not read them? I kind of doubt this really works anyway, since older versions
            (01:09:04 PM) jglick: of Jenkins will try to delete the number when a build is deleted, assuming it is a symlink, and fail because it is not a symlink.
            (01:13:41 PM) jglick: kohsuke ^
            jgeboski jglick jgornick 
            (01:14:41 PM) kohsuke: jglick: Yeah, something like that.
            (01:15:51 PM) jglick: Since I do not think earlier versions would actually be able to handle the new format even w/ the addition of a symlink, would rather just provide a script to reverse the migration if you really need to downgrade.
            (01:15:57 PM) kohsuke: I don't think failing to delete build records is as big of a problem, if it fails --- its impact is limited too
            (01:16:19 PM) kohsuke: I can do that experiment quickly
            (01:17:06 PM) kohsuke: And one correction: I wasn't suggesting you swap symlink vs dir but I guess that's needed to keep the newer versions simpler?
            (01:22:50 PM) jglick: kohsuke: yes I think you to swap symlink vs. dir for existing records
            (01:23:25 PM) jglick: Either way, keeping a mixture of old and new layouts seems error-prone. Have not studied what impact this would have.
            (01:23:57 PM) jglick: Still personally prefer a simple migration, with an advertised script to revert if desired (which would work for new builds too).
            (01:25:14 PM) kohsuke: OK, perhaps you are right about mixing layout
            jgeboski jglick jgornick 
            (01:25:44 PM) kohsuke: jglick: let me see if the older version can read timestamp as symlink and build number as dir
            (01:25:51 PM) kohsuke: I think it's a worthy experiment
            (01:26:01 PM) jglick: Worth experimenting.
            
            Show
            kohsuke Kohsuke Kawaguchi added a comment - - edited Copying the IRC conversation: (11:39:48 AM) jglick: kohsuke: I know you are alive https://github.com/jenkinsci/jenkins/pull/1379 do not try to hide from me :-) (11:40:17 AM) kohsuke: Yes, I'm alive (11:41:34 AM) kohsuke: This is a scary change (11:43:29 AM) kohsuke: jglick: you sure about automatically running the migration script? I assume it means it won't be downgradable (11:44:16 AM) jglick: kohsuke: correct it is not downgradable (well, without losing build records I mean). But that is necessary to get the benefits of code simplification. (11:46:12 AM) jglick: And yes it is a scary change, but then again the current situation is to me scarier. (11:46:35 AM) kohsuke: does it try to create symlink from build ID to the number dir? (11:47:01 AM) jglick: kohsuke: no. Why? (11:47:02 AM) kohsuke: Looks like not. The ID as timestamp is completely gone (11:47:21 AM) jglick: The timestamp becomes a regular field in build.xml. (11:47:54 AM) kohsuke: I thought perhaps the way to go is to start switching around timestamp=dir & number=symlink (11:48:17 AM) kohsuke: presumably that would still allow you for lazy loading to try to find a match deterministically in one go (11:48:18 AM) jglick: What is the advantage to having symlinks for the timestamp? (11:48:29 AM) kohsuke: for compatibility (11:48:34 AM) jglick: The five mentioned plugins need to be updated anyway. (11:48:42 AM) jglick: So there is no compatibility concern for them. (11:49:26 AM) jglick: (Once they are fixed to expect the new layout, I mean.) (11:51:21 AM) kohsuke: I'm trying to think of ways to avoid doing large irreversible edits to $JENKINS_HOME (11:51:50 AM) kohsuke: Leaving the timestamp as symlink and not renaming existing directories would let you do that (11:52:51 AM) jglick: How does that help anything? Any tools relying on a specific build format will need to be updated anyway. (11:53:24 AM) jglick: And note that the original impetus for this PR (https://github.com/jenkinsci/jenkins/issues/1376) pointed out several problems with the timestamp format on its own. (11:54:45 AM) jglick: The worst that happens after downgrading is that historical build records are invisible, which is not exactly fatal. (12:34:50 PM) danielbeck: jglick: It's pretty bad for workflows that rely on access to older builds (Copy Artifact, Promoted Builds, etc.) (01:01:20 PM) kohsuke: jglick: symlinks behave like directories, so anyone looking for directories by timestamp will find them, including earlier versions of Jenkins (01:03:50 PM) jglick: kohsuke: is your only point to lessen the impact of migration after downgrading? (01:04:14 PM) kohsuke: Yes, that's my main concern with this PR (01:04:15 PM) jglick: Do not want to create symlinks for *new* builds certainly. (01:04:36 PM) kohsuke: Why not? (01:04:41 PM) jglick: Adds noise forever/. (01:04:44 PM) jglick: forever. (01:04:58 PM) jglick: And given the problems we have had with symlinks, would be better to use them less. (01:05:15 PM) kohsuke: It doesn't have to be forever but for a while I'd think it'd be a good thing to do (01:05:58 PM) kohsuke: But anyway, that's a lesser point compared to not shuffling stuff in $JENKINS_HOME (01:09:04 PM) jglick: So what is your suggestion? During migration, swap symlink vs. dir status for existing builds, adjusting build.xml as I already do; then for a while (say one LTS cycle) continue to create timestamp symlinks for new builds, provided of course that they do not clash with those of earlier builds (which is possible now that there is no enforced 1s delay), but do not read them? I kind of doubt this really works anyway, since older versions (01:09:04 PM) jglick: of Jenkins will try to delete the number when a build is deleted, assuming it is a symlink, and fail because it is not a symlink. (01:13:41 PM) jglick: kohsuke ^ jgeboski jglick jgornick (01:14:41 PM) kohsuke: jglick: Yeah, something like that. (01:15:51 PM) jglick: Since I do not think earlier versions would actually be able to handle the new format even w/ the addition of a symlink, would rather just provide a script to reverse the migration if you really need to downgrade. (01:15:57 PM) kohsuke: I don't think failing to delete build records is as big of a problem, if it fails --- its impact is limited too (01:16:19 PM) kohsuke: I can do that experiment quickly (01:17:06 PM) kohsuke: And one correction: I wasn't suggesting you swap symlink vs dir but I guess that's needed to keep the newer versions simpler? (01:22:50 PM) jglick: kohsuke: yes I think you to swap symlink vs. dir for existing records (01:23:25 PM) jglick: Either way, keeping a mixture of old and new layouts seems error-prone. Have not studied what impact this would have. (01:23:57 PM) jglick: Still personally prefer a simple migration, with an advertised script to revert if desired (which would work for new builds too). (01:25:14 PM) kohsuke: OK, perhaps you are right about mixing layout jgeboski jglick jgornick (01:25:44 PM) kohsuke: jglick: let me see if the older version can read timestamp as symlink and build number as dir (01:25:51 PM) kohsuke: I think it's a worthy experiment (01:26:01 PM) jglick: Worth experimenting.
            Hide
            jglick Jesse Glick added a comment -

            And continued:

            [14:52:57] <jglick> How does that help anything? Any tools relying on a specific build format will need to be updated anyway.
            [14:53:30] <jglick> And note that the original impetus for this PR (https://github.com/jenkinsci/jenkins/issues/1376) pointed out several problems with the timestamp format on its own.
            [14:54:51] <jglick> The worst that happens after downgrading is that historical build records are invisible, which is not exactly fatal.
            
            Show
            jglick Jesse Glick added a comment - And continued: [14:52:57] <jglick> How does that help anything? Any tools relying on a specific build format will need to be updated anyway. [14:53:30] <jglick> And note that the original impetus for this PR (https://github.com/jenkinsci/jenkins/issues/1376) pointed out several problems with the timestamp format on its own. [14:54:51] <jglick> The worst that happens after downgrading is that historical build records are invisible, which is not exactly fatal.
            Hide
            kohsuke Kohsuke Kawaguchi added a comment -

            Experimented what happens if I swap the directory vs symlink.

            Before:

            % ls -la
            total 16
            drwxrwxr-x 4 kohsuke kohsuke 4096 Sep 15 17:51 .
            drwxrwxr-x 4 kohsuke kohsuke 4096 Sep 15 17:51 ..
            lrwxrwxrwx 1 kohsuke kohsuke   19 Apr 18 10:42 1 -> 2014-04-18_10-42-35
            lrwxrwxrwx 1 kohsuke kohsuke   19 Sep 15 17:51 2 -> 2014-09-15_17-51-46
            drwxrwxr-x 2 kohsuke kohsuke 4096 Apr 18 10:42 2014-04-18_10-42-35
            drwxrwxr-x 2 kohsuke kohsuke 4096 Sep 15 17:51 2014-09-15_17-51-46
            lrwxrwxrwx 1 kohsuke kohsuke    2 Apr 18 10:39 lastFailedBuild -> -1
            lrwxrwxrwx 1 kohsuke kohsuke    1 Sep 15 17:51 lastStableBuild -> 2
            lrwxrwxrwx 1 kohsuke kohsuke    1 Sep 15 17:51 lastSuccessfulBuild -> 2
            lrwxrwxrwx 1 kohsuke kohsuke    2 Apr 18 10:39 lastUnstableBuild -> -1
            lrwxrwxrwx 1 kohsuke kohsuke    2 Apr 18 10:39 lastUnsuccessfulBuild -> -1
            

            After:

            total 16
            drwxrwxr-x 4 kohsuke kohsuke 4096 Sep 15 17:52 .
            drwxrwxr-x 4 kohsuke kohsuke 4096 Sep 15 17:51 ..
            drwxrwxr-x 2 kohsuke kohsuke 4096 Apr 18 10:42 1
            drwxrwxr-x 2 kohsuke kohsuke 4096 Sep 15 17:51 2
            lrwxrwxrwx 1 kohsuke kohsuke    1 Sep 15 17:52 2014-04-18_10-42-35 -> 1
            lrwxrwxrwx 1 kohsuke kohsuke    1 Sep 15 17:52 2014-09-15_17-51-46 -> 2
            lrwxrwxrwx 1 kohsuke kohsuke    2 Apr 18 10:39 lastFailedBuild -> -1
            lrwxrwxrwx 1 kohsuke kohsuke    1 Sep 15 17:51 lastStableBuild -> 2
            lrwxrwxrwx 1 kohsuke kohsuke    1 Sep 15 17:51 lastSuccessfulBuild -> 2
            lrwxrwxrwx 1 kohsuke kohsuke    2 Apr 18 10:39 lastUnstableBuild -> -1
            lrwxrwxrwx 1 kohsuke kohsuke    2 Apr 18 10:39 lastUnsuccessfulBuild -> -1
            

            When I started, the build record did not load as I got the following error:

            Sep 15, 2014 5:53:08 PM hudson.model.RunMap retrieve
            WARNING: skipping non-build directory /files/kohsuke/ws/jenkins/jenkins/war/work/jobs/foo/builds/2014-09-15_17-51-46
            Sep 15, 2014 5:53:08 PM hudson.model.RunMap retrieve
            WARNING: skipping non-build directory /files/kohsuke/ws/jenkins/jenkins/war/work/jobs/foo/builds/2014-04-18_10-42-35
            

            This is because of the way the Run.parseTimestampFromBuildDir method is implemented:

                /*package*/ static long parseTimestampFromBuildDir(@Nonnull File buildDir) 
                        throws IOException, InvalidDirectoryNameException {
                    try {
                        if(Util.isSymlink(buildDir)) {
                            // "Util.resolveSymlink(file)" resolves NTFS symlinks. 
                            File target = Util.resolveSymlinkToFile(buildDir);
                            if(target != null)
                                buildDir = target;
                        }
                        // canonicalization to ensure we are looking at the ID in the directory name
                        // as opposed to build numbers which are used in symlinks
                        // (just in case the symlink check above did not work)
                        buildDir = buildDir.getCanonicalFile();
                        return ID_FORMATTER.get().parse(buildDir.getName()).getTime();
                    } catch (ParseException e) {
                        throw new InvalidDirectoryNameException(buildDir);
                    } catch (InterruptedException e) {
                        throw new IOException("Interrupted while resolving symlink directory "+buildDir,e);
                    }
                }
            

            The canonical path in this case is build number and not timestamp, ID_FORMATTER.get().parse(...) fails and the above code results in InvalidDirectoryNameException.

            The bottom line, the downgradable data migration through swapping dir vs symlink doesn't work.

            So perhaps we are really back to the "provide downgrade script" idea.

            Or we'll leave the complexity a bit by leaving the existing data as-is, and only add new builds in the new layout.

            What if we make new build directory names different from all the existing patterns, for example b123? The migrator could leave old directories intact, and just add b123 -> 2014-04-18_10-42-35 kind of symlink in place, which leaves existing build records intact. Could something like that let us keep most of the code simplification while protecting existing build records?

            Show
            kohsuke Kohsuke Kawaguchi added a comment - Experimented what happens if I swap the directory vs symlink. Before: % ls -la total 16 drwxrwxr-x 4 kohsuke kohsuke 4096 Sep 15 17:51 . drwxrwxr-x 4 kohsuke kohsuke 4096 Sep 15 17:51 .. lrwxrwxrwx 1 kohsuke kohsuke 19 Apr 18 10:42 1 -> 2014-04-18_10-42-35 lrwxrwxrwx 1 kohsuke kohsuke 19 Sep 15 17:51 2 -> 2014-09-15_17-51-46 drwxrwxr-x 2 kohsuke kohsuke 4096 Apr 18 10:42 2014-04-18_10-42-35 drwxrwxr-x 2 kohsuke kohsuke 4096 Sep 15 17:51 2014-09-15_17-51-46 lrwxrwxrwx 1 kohsuke kohsuke 2 Apr 18 10:39 lastFailedBuild -> -1 lrwxrwxrwx 1 kohsuke kohsuke 1 Sep 15 17:51 lastStableBuild -> 2 lrwxrwxrwx 1 kohsuke kohsuke 1 Sep 15 17:51 lastSuccessfulBuild -> 2 lrwxrwxrwx 1 kohsuke kohsuke 2 Apr 18 10:39 lastUnstableBuild -> -1 lrwxrwxrwx 1 kohsuke kohsuke 2 Apr 18 10:39 lastUnsuccessfulBuild -> -1 After: total 16 drwxrwxr-x 4 kohsuke kohsuke 4096 Sep 15 17:52 . drwxrwxr-x 4 kohsuke kohsuke 4096 Sep 15 17:51 .. drwxrwxr-x 2 kohsuke kohsuke 4096 Apr 18 10:42 1 drwxrwxr-x 2 kohsuke kohsuke 4096 Sep 15 17:51 2 lrwxrwxrwx 1 kohsuke kohsuke 1 Sep 15 17:52 2014-04-18_10-42-35 -> 1 lrwxrwxrwx 1 kohsuke kohsuke 1 Sep 15 17:52 2014-09-15_17-51-46 -> 2 lrwxrwxrwx 1 kohsuke kohsuke 2 Apr 18 10:39 lastFailedBuild -> -1 lrwxrwxrwx 1 kohsuke kohsuke 1 Sep 15 17:51 lastStableBuild -> 2 lrwxrwxrwx 1 kohsuke kohsuke 1 Sep 15 17:51 lastSuccessfulBuild -> 2 lrwxrwxrwx 1 kohsuke kohsuke 2 Apr 18 10:39 lastUnstableBuild -> -1 lrwxrwxrwx 1 kohsuke kohsuke 2 Apr 18 10:39 lastUnsuccessfulBuild -> -1 When I started, the build record did not load as I got the following error: Sep 15, 2014 5:53:08 PM hudson.model.RunMap retrieve WARNING: skipping non-build directory /files/kohsuke/ws/jenkins/jenkins/war/work/jobs/foo/builds/2014-09-15_17-51-46 Sep 15, 2014 5:53:08 PM hudson.model.RunMap retrieve WARNING: skipping non-build directory /files/kohsuke/ws/jenkins/jenkins/war/work/jobs/foo/builds/2014-04-18_10-42-35 This is because of the way the Run.parseTimestampFromBuildDir method is implemented: /*package*/ static long parseTimestampFromBuildDir(@Nonnull File buildDir) throws IOException, InvalidDirectoryNameException { try { if(Util.isSymlink(buildDir)) { // "Util.resolveSymlink(file)" resolves NTFS symlinks. File target = Util.resolveSymlinkToFile(buildDir); if(target != null) buildDir = target; } // canonicalization to ensure we are looking at the ID in the directory name // as opposed to build numbers which are used in symlinks // (just in case the symlink check above did not work) buildDir = buildDir.getCanonicalFile(); return ID_FORMATTER.get().parse(buildDir.getName()).getTime(); } catch (ParseException e) { throw new InvalidDirectoryNameException(buildDir); } catch (InterruptedException e) { throw new IOException("Interrupted while resolving symlink directory "+buildDir,e); } } The canonical path in this case is build number and not timestamp, ID_FORMATTER.get().parse(...) fails and the above code results in InvalidDirectoryNameException . The bottom line, the downgradable data migration through swapping dir vs symlink doesn't work. So perhaps we are really back to the "provide downgrade script" idea. Or we'll leave the complexity a bit by leaving the existing data as-is, and only add new builds in the new layout. What if we make new build directory names different from all the existing patterns, for example b123 ? The migrator could leave old directories intact, and just add b123 -> 2014-04-18_10-42-35 kind of symlink in place, which leaves existing build records intact. Could something like that let us keep most of the code simplification while protecting existing build records?
            Hide
            jglick Jesse Glick added a comment -

            Daniel Beck (ref: ZD-22496) noted that the current code behaves poorly if build directories are deleted but broken numeric symlinks are left behind. Need to check that behavior in the context of the revised code, where the symlinks would be the timestamps.

            Show
            jglick Jesse Glick added a comment - Daniel Beck (ref: ZD-22496) noted that the current code behaves poorly if build directories are deleted but broken numeric symlinks are left behind. Need to check that behavior in the context of the revised code, where the symlinks would be the timestamps.
            Hide
            jglick Jesse Glick added a comment -

            What if we make new build directory names […and] leave old directories intact […]

            Cannot see a straightforward way to make this work. We cannot rely on symlinks because of Windows users. The new code expects timestamp to be persistent, and number to be computed, which clashes with the format expected by older versions of Jenkins.

            Providing a tool to reverse the migration for anyone who needs to downgrade seems less risky than managing mixed-format records.

            Show
            jglick Jesse Glick added a comment - What if we make new build directory names […and] leave old directories intact […] Cannot see a straightforward way to make this work. We cannot rely on symlinks because of Windows users. The new code expects timestamp to be persistent, and number to be computed, which clashes with the format expected by older versions of Jenkins. Providing a tool to reverse the migration for anyone who needs to downgrade seems less risky than managing mixed-format records.
            Hide
            jglick Jesse Glick added a comment -

            check that behavior in the context of the revised code, where the symlinks would be the timestamps

            Correction: after the migration, there are not any timestamp symlinks. The only symlinks that remain inside builds are lastStableBuild and the like. So whatever bug existed previously should become obsolete.

            Show
            jglick Jesse Glick added a comment - check that behavior in the context of the revised code, where the symlinks would be the timestamps Correction: after the migration, there are not any timestamp symlinks. The only symlinks that remain inside builds are lastStableBuild and the like. So whatever bug existed previously should become obsolete.
            Hide
            scm_issue_link SCM/JIRA link daemon added a comment -

            Code changed in jenkins
            User: Kohsuke Kawaguchi
            Path:
            changelog.html
            core/src/main/java/jenkins/model/RunIdMigrator.java
            core/src/main/resources/jenkins/model/RunIdMigrator/UnmigrationInstruction/index.jelly
            http://jenkins-ci.org/commit/jenkins/711b3325adf629585d60aa5a2bcac1d49b8324ae
            Log:
            JENKINS-24380

            • Recorded the fix in changelog.
            • Added a separate screen to show the unmigration instruction, which
              makes it easier for people to find it than search logs.
            Show
            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Kohsuke Kawaguchi Path: changelog.html core/src/main/java/jenkins/model/RunIdMigrator.java core/src/main/resources/jenkins/model/RunIdMigrator/UnmigrationInstruction/index.jelly http://jenkins-ci.org/commit/jenkins/711b3325adf629585d60aa5a2bcac1d49b8324ae Log: JENKINS-24380 Recorded the fix in changelog. Added a separate screen to show the unmigration instruction, which makes it easier for people to find it than search logs.
            Hide
            dogfood dogfood added a comment -

            Integrated in jenkins_main_trunk #3891
            JENKINS-24380 (Revision 711b3325adf629585d60aa5a2bcac1d49b8324ae)

            Result = UNSTABLE
            kohsuke : 711b3325adf629585d60aa5a2bcac1d49b8324ae
            Files :

            • core/src/main/java/jenkins/model/RunIdMigrator.java
            • core/src/main/resources/jenkins/model/RunIdMigrator/UnmigrationInstruction/index.jelly
            • changelog.html
            Show
            dogfood dogfood added a comment - Integrated in jenkins_main_trunk #3891 JENKINS-24380 (Revision 711b3325adf629585d60aa5a2bcac1d49b8324ae) Result = UNSTABLE kohsuke : 711b3325adf629585d60aa5a2bcac1d49b8324ae Files : core/src/main/java/jenkins/model/RunIdMigrator.java core/src/main/resources/jenkins/model/RunIdMigrator/UnmigrationInstruction/index.jelly changelog.html
            Hide
            scm_issue_link SCM/JIRA link daemon added a comment -

            Code changed in jenkins
            User: Jesse Glick
            Path:
            src/main/java/com/cloudbees/jenkins/support/impl/AboutJenkins.java
            http://jenkins-ci.org/commit/support-core-plugin/ffb47e151f50cf1ce0618e339b8e4a592d96845d
            Log:
            JENKINS-24380 Updated to handle proposed new build directory format.

            Show
            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jesse Glick Path: src/main/java/com/cloudbees/jenkins/support/impl/AboutJenkins.java http://jenkins-ci.org/commit/support-core-plugin/ffb47e151f50cf1ce0618e339b8e4a592d96845d Log: JENKINS-24380 Updated to handle proposed new build directory format.
            Hide
            jglick Jesse Glick added a comment -

            Kohsuke Kawaguchi merged without using the magic keyword, so this did not get autoclosed.

            Show
            jglick Jesse Glick added a comment - Kohsuke Kawaguchi merged without using the magic keyword, so this did not get autoclosed.
            Hide
            scm_issue_link SCM/JIRA link daemon added a comment -

            Code changed in jenkins
            User: Jesse Glick
            Path:
            core/src/main/java/jenkins/model/RunIdMigrator.java
            http://jenkins-ci.org/commit/jenkins/bacca38aac1320d2a571a3fab1c7decbd7170f62
            Log:
            JENKINS-24380 Linking to Wiki from log message too.

            Show
            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jesse Glick Path: core/src/main/java/jenkins/model/RunIdMigrator.java http://jenkins-ci.org/commit/jenkins/bacca38aac1320d2a571a3fab1c7decbd7170f62 Log: JENKINS-24380 Linking to Wiki from log message too.
            Hide
            dogfood dogfood added a comment -

            Integrated in jenkins_main_trunk #3898
            JENKINS-24380 Linking to Wiki from log message too. (Revision bacca38aac1320d2a571a3fab1c7decbd7170f62)

            Result = UNSTABLE
            jesse glick : bacca38aac1320d2a571a3fab1c7decbd7170f62
            Files :

            • core/src/main/java/jenkins/model/RunIdMigrator.java
            Show
            dogfood dogfood added a comment - Integrated in jenkins_main_trunk #3898 JENKINS-24380 Linking to Wiki from log message too. (Revision bacca38aac1320d2a571a3fab1c7decbd7170f62) Result = UNSTABLE jesse glick : bacca38aac1320d2a571a3fab1c7decbd7170f62 Files : core/src/main/java/jenkins/model/RunIdMigrator.java
            Hide
            maedula Hans Baer added a comment -

            After update to 1.597 my jobs fail with an Opss exception.

            Executing the unmigrate job will cause
            Exception in thread "main" java.lang.NullPointerException
            at jenkins.model.RunIdMigrator.unmigrateJobsDir(RunIdMigrator.java:310)
            at jenkins.model.RunIdMigrator.unmigrateJobsDir(RunIdMigrator.java:323)
            at jenkins.model.RunIdMigrator.main(RunIdMigrator.java:307)

            Now I stuck with not being able to downgrade nor being able to use 1.597

            Show
            maedula Hans Baer added a comment - After update to 1.597 my jobs fail with an Opss exception. Executing the unmigrate job will cause Exception in thread "main" java.lang.NullPointerException at jenkins.model.RunIdMigrator.unmigrateJobsDir(RunIdMigrator.java:310) at jenkins.model.RunIdMigrator.unmigrateJobsDir(RunIdMigrator.java:323) at jenkins.model.RunIdMigrator.main(RunIdMigrator.java:307) Now I stuck with not being able to downgrade nor being able to use 1.597
            Hide
            jwmillerx John Miller added a comment -

            I am having this issue also.. I get the oops page when I upgrade to 1.597 but can not downgrade

            javax.servlet.ServletException: org.apache.commons.jelly.JellyTagException: jar:file:/export/jenkins/.jenkins/war/WEB-INF/lib/jenkins-core-1.597.jar!/lib/hudson/project/projectActionFloatingBox.jelly:38:74: <st:include> hudson.model.Run.getIDFormatter()Ljava/text/DateFormat;
            at org.kohsuke.stapler.jelly.JellyClassTearOff.serveIndexJelly(JellyClassTearOff.java:117)
            at org.kohsuke.stapler.jelly.JellyFacet.handleIndexRequest(JellyFacet.java:127)
            at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:735)
            at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
            at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:249)
            at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
            at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
            at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
            at org.kohsuke.stapler.Stapler.invoke(Stapler.java:649)
            at org.kohsuke.stapler.Stapler.service(Stapler.java:238)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
            at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494)
            at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:123)
            at hudson.plugins.greenballs.GreenBallFilter.doFilter(GreenBallFilter.java:58)
            at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:120)
            at jenkins.metrics.impl.MetricsFilter.doFilter(MetricsFilter.java:117)
            at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:120)
            at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:114)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
            at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
            at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
            at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
            at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
            at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117)
            at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
            at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
            at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
            at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
            at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
            at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
            at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
            at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93)
            at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
            at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
            at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67)
            at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
            at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
            at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:164)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
            at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
            at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
            at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
            at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1474)
            at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
            at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
            at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533)
            at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
            at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
            at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
            at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
            at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
            at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
            at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
            at org.eclipse.jetty.server.Server.handle(Server.java:370)
            at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
            at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:949)
            at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1011)
            at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644)
            at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
            at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
            at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
            at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
            at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
            at java.lang.Thread.run(Thread.java:744)
            Caused by: org.apache.commons.jelly.JellyTagException: jar:file:/export/jenkins/.jenkins/war/WEB-INF/lib/jenkins-core-1.597.jar!/lib/hudson/project/projectActionFloatingBox.jelly:38:74: <st:include> hudson.model.Run.getIDFormatter()Ljava/text/DateFormat;
            at org.apache.commons.jelly.impl.TagScript.handleException(TagScript.java:745)
            at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:289)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:161)
            at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:150)
            at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
            at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
            at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
            at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99)
            at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)
            at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.apache.commons.jelly.tags.core.CoreTagLibrary$1.run(CoreTagLibrary.java:98)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
            at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99)
            at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91)
            at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
            at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
            at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
            at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120)
            at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
            at org.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:95)
            at org.kohsuke.stapler.jelly.DefaultScriptInvoker.invokeScript(DefaultScriptInvoker.java:63)
            at org.kohsuke.stapler.jelly.DefaultScriptInvoker.invokeScript(DefaultScriptInvoker.java:53)
            at org.kohsuke.stapler.jelly.JellyClassTearOff.serveIndexJelly(JellyClassTearOff.java:112)
            ... 69 more
            Caused by: java.lang.NoSuchMethodError: hudson.model.Run.getIDFormatter()Ljava/text/DateFormat;
            at hudson.plugins.disk_usage.ProjectDiskUsageAction.getBuildsDiskUsageAllSubItems(ProjectDiskUsageAction.java:165)
            at hudson.plugins.disk_usage.ProjectDiskUsageAction.getBuildsDiskUsage(ProjectDiskUsageAction.java:226)
            at hudson.plugins.disk_usage.ProjectDiskUsageAction.getBuildsDiskUsage(ProjectDiskUsageAction.java:203)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:606)
            at org.apache.commons.jexl.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:258)
            at org.apache.commons.jexl.parser.ASTMethod.execute(ASTMethod.java:104)
            at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:83)
            at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:57)
            at org.apache.commons.jexl.parser.ASTExpression.value(ASTExpression.java:54)
            at org.apache.commons.jexl.parser.ASTMethod.execute(ASTMethod.java:81)
            at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:83)
            at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:57)
            at org.apache.commons.jexl.parser.ASTReferenceExpression.value(ASTReferenceExpression.java:51)
            at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:80)
            at hudson.ExpressionFactory2$JexlExpression.evaluate(ExpressionFactory2.java:74)
            at org.apache.commons.jelly.impl.ExpressionScript.run(ExpressionScript.java:66)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
            at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.apache.commons.jelly.tags.core.CoreTagLibrary$1.run(CoreTagLibrary.java:98)
            at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
            at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
            at org.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:95)
            at org.kohsuke.stapler.jelly.IncludeTag.doTag(IncludeTag.java:147)
            at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
            ... 107 more

            Show
            jwmillerx John Miller added a comment - I am having this issue also.. I get the oops page when I upgrade to 1.597 but can not downgrade javax.servlet.ServletException: org.apache.commons.jelly.JellyTagException: jar: file:/export/jenkins/.jenkins/war/WEB-INF/lib/jenkins-core-1.597.jar!/lib/hudson/project/projectActionFloatingBox.jelly:38:74: <st:include> hudson.model.Run.getIDFormatter()Ljava/text/DateFormat; at org.kohsuke.stapler.jelly.JellyClassTearOff.serveIndexJelly(JellyClassTearOff.java:117) at org.kohsuke.stapler.jelly.JellyFacet.handleIndexRequest(JellyFacet.java:127) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:735) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876) at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:249) at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:649) at org.kohsuke.stapler.Stapler.service(Stapler.java:238) at javax.servlet.http.HttpServlet.service(HttpServlet.java:848) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:123) at hudson.plugins.greenballs.GreenBallFilter.doFilter(GreenBallFilter.java:58) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:120) at jenkins.metrics.impl.MetricsFilter.doFilter(MetricsFilter.java:117) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:120) at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:114) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482) at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84) at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249) at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76) at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:164) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482) at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482) at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482) at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1474) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116) at org.eclipse.jetty.server.Server.handle(Server.java:370) at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489) at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:949) at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1011) at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:644) at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235) at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82) at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668) at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52) at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744) Caused by: org.apache.commons.jelly.JellyTagException: jar: file:/export/jenkins/.jenkins/war/WEB-INF/lib/jenkins-core-1.597.jar!/lib/hudson/project/projectActionFloatingBox.jelly:38:74: <st:include> hudson.model.Run.getIDFormatter()Ljava/text/DateFormat; at org.apache.commons.jelly.impl.TagScript.handleException(TagScript.java:745) at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:289) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:161) at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:150) at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269) at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99) at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105) at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99) at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91) at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.apache.commons.jelly.tags.core.CoreTagLibrary$1.run(CoreTagLibrary.java:98) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105) at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.kohsuke.stapler.jelly.CallTagLibScript$1.run(CallTagLibScript.java:99) at org.apache.commons.jelly.tags.define.InvokeBodyTag.doTag(InvokeBodyTag.java:91) at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99) at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99) at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105) at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120) at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105) at org.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:95) at org.kohsuke.stapler.jelly.DefaultScriptInvoker.invokeScript(DefaultScriptInvoker.java:63) at org.kohsuke.stapler.jelly.DefaultScriptInvoker.invokeScript(DefaultScriptInvoker.java:53) at org.kohsuke.stapler.jelly.JellyClassTearOff.serveIndexJelly(JellyClassTearOff.java:112) ... 69 more Caused by: java.lang.NoSuchMethodError: hudson.model.Run.getIDFormatter()Ljava/text/DateFormat; at hudson.plugins.disk_usage.ProjectDiskUsageAction.getBuildsDiskUsageAllSubItems(ProjectDiskUsageAction.java:165) at hudson.plugins.disk_usage.ProjectDiskUsageAction.getBuildsDiskUsage(ProjectDiskUsageAction.java:226) at hudson.plugins.disk_usage.ProjectDiskUsageAction.getBuildsDiskUsage(ProjectDiskUsageAction.java:203) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.apache.commons.jexl.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:258) at org.apache.commons.jexl.parser.ASTMethod.execute(ASTMethod.java:104) at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:83) at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:57) at org.apache.commons.jexl.parser.ASTExpression.value(ASTExpression.java:54) at org.apache.commons.jexl.parser.ASTMethod.execute(ASTMethod.java:81) at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:83) at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:57) at org.apache.commons.jexl.parser.ASTReferenceExpression.value(ASTReferenceExpression.java:51) at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:80) at hudson.ExpressionFactory2$JexlExpression.evaluate(ExpressionFactory2.java:74) at org.apache.commons.jelly.impl.ExpressionScript.run(ExpressionScript.java:66) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99) at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.apache.commons.jelly.tags.core.CoreTagLibrary$1.run(CoreTagLibrary.java:98) at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95) at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105) at org.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:95) at org.kohsuke.stapler.jelly.IncludeTag.doTag(IncludeTag.java:147) at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269) ... 107 more
            Hide
            chorn Cameron Horn added a comment -

            Got a ton of messages like this:
            Jan 20, 2015 1:24:00 PM jenkins.model.RunIdMigrator doMigrate
            WARNING: failed to rename 2014-12-05_14-18-42 to 1

            Ended up with every job timestamp set to 1970. Was able to downgrade.

            Show
            chorn Cameron Horn added a comment - Got a ton of messages like this: Jan 20, 2015 1:24:00 PM jenkins.model.RunIdMigrator doMigrate WARNING: failed to rename 2014-12-05_14-18-42 to 1 Ended up with every job timestamp set to 1970. Was able to downgrade.
            Hide
            jglick Jesse Glick added a comment -

            Please file blocking issues as needed rather than reopening this one.

            The “failed to rename” is already filed as JENKINS-26519 and will be fixed in 1.598; you need to delete legacyId files and rerun the migration, as described in that issue.

            Show
            jglick Jesse Glick added a comment - Please file blocking issues as needed rather than reopening this one. The “failed to rename” is already filed as JENKINS-26519 and will be fixed in 1.598; you need to delete legacyId files and rerun the migration, as described in that issue.
            Hide
            jglick Jesse Glick added a comment -

            The Disk Usage plugin issue is already filed in JENKINS-26496; disable that plugin until its maintainer merges my PR, unless you want to run a snapshot build.

            The NPE from unmigrateJobsDir I have not seen. Apparently there is a file f for which f.isDirectory() && f.listFiles() == null, which seems anomalous (usually null from listFiles means the directory does not really exist), but prior to Java 7 there is no way to get a detailed exception from a file listing so I can only speculate about what that might have been. Anyway I can make that code more robust in 1.599.

            Show
            jglick Jesse Glick added a comment - The Disk Usage plugin issue is already filed in JENKINS-26496 ; disable that plugin until its maintainer merges my PR, unless you want to run a snapshot build. The NPE from unmigrateJobsDir I have not seen. Apparently there is a file f for which f.isDirectory() && f.listFiles() == null , which seems anomalous (usually null from listFiles means the directory does not really exist), but prior to Java 7 there is no way to get a detailed exception from a file listing so I can only speculate about what that might have been. Anyway I can make that code more robust in 1.599.
            Hide
            scm_issue_link SCM/JIRA link daemon added a comment -

            Code changed in jenkins
            User: Jesse Glick
            Path:
            src/main/java/hudson/plugins/disk_usage/BuildDiskUsageAction.java
            src/main/java/hudson/plugins/disk_usage/DiskUsageBuildInformation.java
            src/main/java/hudson/plugins/disk_usage/DiskUsageUtil.java
            src/main/java/hudson/plugins/disk_usage/ProjectDiskUsage.java
            src/main/java/hudson/plugins/disk_usage/ProjectDiskUsageAction.java
            http://jenkins-ci.org/commit/disk-usage-plugin/19e500d2a168a1dfedf8987c618b4a4d0c9be8a0
            Log:
            JENKINS-24380 Stop relying on the format of Run.id.

            Show
            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jesse Glick Path: src/main/java/hudson/plugins/disk_usage/BuildDiskUsageAction.java src/main/java/hudson/plugins/disk_usage/DiskUsageBuildInformation.java src/main/java/hudson/plugins/disk_usage/DiskUsageUtil.java src/main/java/hudson/plugins/disk_usage/ProjectDiskUsage.java src/main/java/hudson/plugins/disk_usage/ProjectDiskUsageAction.java http://jenkins-ci.org/commit/disk-usage-plugin/19e500d2a168a1dfedf8987c618b4a4d0c9be8a0 Log: JENKINS-24380 Stop relying on the format of Run.id.
            Hide
            scm_issue_link SCM/JIRA link daemon added a comment -

            Code changed in jenkins
            User: Oliver Gondža
            Path:
            src/main/java/hudson/plugins/disk_usage/BuildDiskUsageAction.java
            src/main/java/hudson/plugins/disk_usage/DiskUsageBuildInformation.java
            src/main/java/hudson/plugins/disk_usage/DiskUsageUtil.java
            src/main/java/hudson/plugins/disk_usage/ProjectDiskUsage.java
            src/main/java/hudson/plugins/disk_usage/ProjectDiskUsageAction.java
            http://jenkins-ci.org/commit/disk-usage-plugin/e1555569bfb43cde12816de9abe08039ea043e48
            Log:
            Merge pull request #26 from jglick/build-number-is-id-JENKINS-24380

            JENKINS-24380 Stop relying on the format of Run.id

            Compare: https://github.com/jenkinsci/disk-usage-plugin/compare/f9c0ef96b19a...e1555569bfb4

            Show
            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Oliver Gondža Path: src/main/java/hudson/plugins/disk_usage/BuildDiskUsageAction.java src/main/java/hudson/plugins/disk_usage/DiskUsageBuildInformation.java src/main/java/hudson/plugins/disk_usage/DiskUsageUtil.java src/main/java/hudson/plugins/disk_usage/ProjectDiskUsage.java src/main/java/hudson/plugins/disk_usage/ProjectDiskUsageAction.java http://jenkins-ci.org/commit/disk-usage-plugin/e1555569bfb43cde12816de9abe08039ea043e48 Log: Merge pull request #26 from jglick/build-number-is-id- JENKINS-24380 JENKINS-24380 Stop relying on the format of Run.id Compare: https://github.com/jenkinsci/disk-usage-plugin/compare/f9c0ef96b19a...e1555569bfb4
            Hide
            scm_issue_link SCM/JIRA link daemon added a comment -

            Code changed in jenkins
            User: Jesse Glick
            Path:
            src/main/java/hudson/plugins/build_publisher/ExternalProjectProperty.java
            src/main/java/hudson/plugins/build_publisher/HTTPBuildTransmitter.java
            http://jenkins-ci.org/commit/build-publisher-plugin/9a44c001e80cb5575aae92db53642667fd419e6c
            Log:
            JENKINS-24380 Stop relying on the format of Run.id.

            Show
            scm_issue_link SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jesse Glick Path: src/main/java/hudson/plugins/build_publisher/ExternalProjectProperty.java src/main/java/hudson/plugins/build_publisher/HTTPBuildTransmitter.java http://jenkins-ci.org/commit/build-publisher-plugin/9a44c001e80cb5575aae92db53642667fd419e6c Log: JENKINS-24380 Stop relying on the format of Run.id.
            Hide
            ydubreuil Yoann Dubreuil added a comment -

            Adding link to wiki

            Show
            ydubreuil Yoann Dubreuil added a comment - Adding link to wiki

              People

              Assignee:
              jglick Jesse Glick
              Reporter:
              jglick Jesse Glick
              Votes:
              3 Vote for this issue
              Watchers:
              10 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: