diff --git a/core/src/main/java/jenkins/model/RunIdMigrator.java b/core/src/main/java/jenkins/model/RunIdMigrator.java
index 4666a5fb8655f146814ab6cf9ac284ba23646a34..88dc17b90026101b0a75a3abdca21bd1b8bab760 100644
--- a/core/src/main/java/jenkins/model/RunIdMigrator.java
+++ b/core/src/main/java/jenkins/model/RunIdMigrator.java
@@ -350,6 +350,12 @@ public final class RunIdMigrator {
return;
}
for (File job : jobDirs) {
+
+ if (job.getName().equals("builds")) {
+ // Might be maven modules, matrix builds, etc. which are direct children of job
+ unmigrateBuildsDir(job);
+ }
+
File[] kids = job.listFiles();
if (kids == null) {
continue;
@@ -361,7 +367,8 @@ public final class RunIdMigrator {
if (kid.getName().equals("builds")) {
unmigrateBuildsDir(kid);
} else {
- // Might be jobs, modules, promotions, etc.; we assume an ItemGroup.getRootDirFor implementation returns grandchildren.
+ // Might be jobs, modules, promotions, etc.; we assume an ItemGroup.getRootDirFor implementation
+ // returns grandchildren, unmigrateJobsDir(job) call above handles children.
unmigrateJobsDir(kid);
}
}
diff --git a/core/src/test/java/jenkins/model/RunIdMigratorTest.java b/core/src/test/java/jenkins/model/RunIdMigratorTest.java
index fb9805db779d2ea24e2f7e53b1040cf222875e35..4b890ac50a6d5b8de3d23dbf5678eeb7f3e19037 100644
--- a/core/src/test/java/jenkins/model/RunIdMigratorTest.java
+++ b/core/src/test/java/jenkins/model/RunIdMigratorTest.java
@@ -128,6 +128,26 @@ public class RunIdMigratorTest {
assertEquals("{1=→2014-01-02_03-04-05, 2014-01-02_03-04-05={build.xml='\n\n ok\n 1\n ok\n'}}", summarize());
}
+ @Test public void reverseMatrixAfterNewBuilds() throws Exception {
+ File root = dir;
+ dir = new File(dir, "jobs/someproject/Environment=prod/builds");
+ write("1/build.xml", "\n\n ok\n 1388649845000\n ok\n");
+ write("legacyIds", "");
+ assertEquals("{1={build.xml='\n\n ok\n 1388649845000\n ok\n'}, legacyIds=''}", summarize());
+ RunIdMigrator.main(root.getAbsolutePath());
+ assertEquals("{1=→2014-01-02_03-04-05, 2014-01-02_03-04-05={build.xml='\n\n ok\n 1\n ok\n'}}", summarize());
+ }
+
+ @Test public void reverseMavenAfterNewBuilds() throws Exception {
+ File root = dir;
+ dir = new File(dir, "jobs/someproject/test$test/builds");
+ write("1/build.xml", "\n\n ok\n 1388649845000\n ok\n");
+ write("legacyIds", "");
+ assertEquals("{1={build.xml='\n\n ok\n 1388649845000\n ok\n'}, legacyIds=''}", summarize());
+ RunIdMigrator.main(root.getAbsolutePath());
+ assertEquals("{1=→2014-01-02_03-04-05, 2014-01-02_03-04-05={build.xml='\n\n ok\n 1\n ok\n'}}", summarize());
+ }
+
// TODO test sane recovery from various error conditions
private void write(String file, String text) throws Exception {