-
Bug
-
Resolution: Postponed
-
Critical
-
None
-
Ubuntu 8.04 LTS, AMD Athlon X2 3200+, 2048MB RAM
java.runtime.name Java(TM) SE Runtime Environment
java.runtime.version 1.6.0_14-b08
java.specification.name Java Platform API Specification
java.specification.vendor Sun Microsystems Inc.
java.specification.version 1.6
java.vendor Sun Microsystems Inc.
java.vendor.url http://java.sun.com/
java.vendor.url.bug http://java.sun.com/cgi-bin/bugreport.cgi
java.version 1.6.0_14
java.vm.info mixed mode
java.vm.name Java HotSpot(TM) Client VM
java.vm.specification.name Java Virtual Machine Specification
java.vm.specification.vendor Sun Microsystems Inc.
java.vm.specification.version 1.0
java.vm.vendor Sun Microsystems Inc.
java.vm.version 14.0-b16
os.arch i386
os.name Linux
os.version 2.6.24-27-server
Ubuntu 8.04 LTS, AMD Athlon X2 3200+, 2048MB RAM java.runtime.name Java(TM) SE Runtime Environment java.runtime.version 1.6.0_14-b08 java.specification.name Java Platform API Specification java.specification.vendor Sun Microsystems Inc. java.specification.version 1.6 java.vendor Sun Microsystems Inc. java.vendor.url http://java.sun.com/ java.vendor.url.bug http://java.sun.com/cgi-bin/bugreport.cgi java.version 1.6.0_14 java.vm.info mixed mode java.vm.name Java HotSpot(TM) Client VM java.vm.specification.name Java Virtual Machine Specification java.vm.specification.vendor Sun Microsystems Inc. java.vm.specification.version 1.0 java.vm.vendor Sun Microsystems Inc. java.vm.version 14.0-b16 os.arch i386 os.name Linux os.version 2.6.24-27-server
Note: I was able to workaround this issue, and the workaround code is enclosed below.
When trying to build a Java project (any Java project) using an Ant build step from within Hudson, the build fails with the following error:
--------------------------------------------------
Started by user anonymous
[workspace] $ cvsnt -q update -PdC -D "Saturday, March 27, 2010 4:11:43 AM UTC"
? ${build.dir}
? ${dist.dir}
$ no changes detected
Deleting old artifacts from #36
FATAL: null
java.lang.UnsupportedOperationException
at java.util.AbstractMap$SimpleImmutableEntry.setValue(AbstractMap.java:726)
at hudson.EnvVars.resolve(EnvVars.java:156)
at hudson.model.AbstractBuild.getEnvironment(AbstractBuild.java:689)
at hudson.tasks.Ant.perform(Ant.java:134)
at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19)
at hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:582)
at hudson.model.Build$RunnerImpl.build(Build.java:165)
at hudson.model.Build$RunnerImpl.doRun(Build.java:132)
at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:416)
at hudson.model.Run.run(Run.java:1243)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
at hudson.model.ResourceController.execute(ResourceController.java:88)
at hudson.model.Executor.run(Executor.java:122)
--------------------------------------------------
This makes Hudson virtually useless, as Ant is obviously required to compile my Java applications.
After many hours of troubleshooting, I was able to get build 1281 to work, but when I migrated to GlassFish 3, the security broke.
After many more hours of troubleshooting, I was able to determine that the issue resides in the hudson/main/core/src/main/java/hudson/EnvVars.java file, with the resolve(Map<String, String> env) method. The workaround I developed was to eliminate the entry.setValue() from processing. The workaround code is:
--------------------------------------------------
//JLV Software Development Workaround Code
public static void resolve(Map<String, String> env) {
java.util.logging.Logger jLog = java.util.logging.Logger.getLogger("hudson.tasks"); //Get a logger to help debug code
jLog.fine("EnvVars.java // resolve // env.size()=\"" + env.size() + "\""); //Log the size of the Map
for (Map.Entry<String,String> entry: env.entrySet())
{ jLog.fine("EnvVars.java // resolve // entry.getValue()=\"" + entry.getValue() + "\"" + " .getKey() =\"" + entry.getKey() + "\""); //Log each Key/Value pair // entry.setValue(entry.getValue()); //Commented out as workaround. } }
--------------------------------------------------
Reviewing the exception, I believe (and it's just a guess) that this is due to the fact that two of my system variables ("NODE_NAME", "CLASSPATH") are currently reported as empty values ("") when logged. If this is true, I recommend that the code be modified to check for empty values, and then only try to perform a .setValue on non-empty entries.
- duplicates
-
JENKINS-6055 UnsupportedOperationException
- Resolved
-
JENKINS-7511 Hudson fails build with UnsupportedOperationException due to attempted modification of SimpleImmutableEntry at EnvVars.java:178
- Closed
- is related to
-
JENKINS-7159 Ant build fails with UnsupportedOperationException
- Closed