Hello everyone, I've run into [2] some time ago. First off, it's not a problem for me to just shorten the group names. However, I've brought this up with a colleague of mine and it's been suggested, that the limit of 63 characters is in there due to [1], which is obsolete, and that maybe the limit could be removed. I searched briefly through the RFCs that update [1], but couldn't find any clear proof that that the limit has been removed or is higher now.
I've rebuilt JClouds with DnsNameValidator with its max value = 200. The JClouds unit tests are passing and EC2 has no problems with long instance names (~150 characters) either. Other cloud providers might have some issues with that, but I wouldn't know. So the question is: could the limit of 63 characters on DnsNameValidator be removed or increased without impacting something I'm not aware of? If it could be increased, how high can we go? If its there for a reason, what is the reason? Thanks for any insights, R. [1]: https://tools.ietf.org/html/rfc1035#section-2.3.4 [2]: <<< stacktrace begin >>> java.lang.IllegalArgumentException: Object 'a-very-long-node-group-name-that-is-definitely-longer-than-sixty-three-characters-and-will-require-postprocessing' doesn't match dns naming constraints. Reason: Can't be null or empty. Length must be 3 to 63 symbols.. at org.jclouds.predicates.validators.DnsNameValidator.exception(DnsNameValidator.java:74) ~[jclouds-core-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT] at org.jclouds.predicates.validators.DnsNameValidator.validate(DnsNameValidator.java:51) ~[jclouds-core-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT] at org.jclouds.predicates.validators.DnsNameValidator.validate(DnsNameValidator.java:36) ~[jclouds-core-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT] at org.jclouds.compute.internal.FormatSharedNamesAndAppendUniqueStringToThoseWhichRepeat.checkGroup(FormatSharedNamesAndAppendUniqueStringToThoseWhichRepeat.java:124) ~[jclouds-compute-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT] at org.jclouds.compute.internal.FormatSharedNamesAndAppendUniqueStringToThoseWhichRepeat.sharedNameForGroup(FormatSharedNamesAndAppendUniqueStringToThoseWhichRepeat.java:120) ~[jclouds-compute-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT] at org.jclouds.ec2.compute.strategy.CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.getSecurityGroupsForTagAndOptions(CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.java:168) ~[ec2-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT] at org.jclouds.aws.ec2.compute.strategy.CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions.addSecurityGroups(CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions.java:199) ~[aws-ec2-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT] at org.jclouds.ec2.compute.strategy.CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.execute(CreateKeyPairAndSecurityGroupsAsNeededAndReturnRunOptions.java:80) ~[ec2-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT] at org.jclouds.aws.ec2.compute.strategy.CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions.execute(CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions.java:88) ~[aws-ec2-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT] at org.jclouds.aws.ec2.compute.strategy.CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions.execute(CreateKeyPairPlacementAndSecurityGroupsAsNeededAndReturnRunOptions.java:55) ~[aws-ec2-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT] at org.jclouds.ec2.compute.strategy.EC2CreateNodesInGroupThenAddToSet.createKeyPairAndSecurityGroupsAsNeededThenRunInstances(EC2CreateNodesInGroupThenAddToSet.java:213) ~[ec2-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT] at org.jclouds.ec2.compute.strategy.EC2CreateNodesInGroupThenAddToSet.runInstancesAndWarnOnInvisible(EC2CreateNodesInGroupThenAddToSet.java:151) ~[ec2-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT] at org.jclouds.ec2.compute.strategy.EC2CreateNodesInGroupThenAddToSet.execute(EC2CreateNodesInGroupThenAddToSet.java:132) ~[ec2-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT] at org.jclouds.compute.internal.BaseComputeService.createNodesInGroup(BaseComputeService.java:217) ~[jclouds-compute-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT] at org.jclouds.ec2.compute.EC2ComputeService.createNodesInGroup(EC2ComputeService.java:148) ~[ec2-2.0.0-SNAPSHOT.jar:2.0.0-SNAPSHOT] at org.wildfly.extras.sunstone.api.impl.AbstractJCloudsNode.createNode(AbstractJCloudsNode.java:154) ~[classes/:na] at org.wildfly.extras.sunstone.api.impl.ec2.EC2Node.<init>(EC2Node.java:81) ~[classes/:na] at org.wildfly.extras.sunstone.api.impl.ec2.EC2CloudProvider.createNodeInternal(EC2CloudProvider.java:74) ~[classes/:na] at org.wildfly.extras.sunstone.api.impl.AbstractJCloudsCloudProvider.lambda$createNode$3(AbstractJCloudsCloudProvider.java:101) ~[classes/:na] at org.wildfly.extras.sunstone.api.impl.AbstractJCloudsCloudProvider$$Lambda$9/2121317689.apply(Unknown Source) ~[na:na] at java.util.concurrent.ConcurrentHashMap.compute(ConcurrentHashMap.java:1853) ~[na:1.8.0_45] at org.wildfly.extras.sunstone.api.impl.AbstractJCloudsCloudProvider.createNode(AbstractJCloudsCloudProvider.java:96) ~[classes/:na] at org.wildfly.extras.sunstone.api.impl.AbstractJCloudsCloudProvider.createNode(AbstractJCloudsCloudProvider.java:84) ~[classes/:na] at org.wildfly.extras.sunstone.tests.ec2.EC2LongNodeGroupTest.testLongNodeGroup(EC2LongNodeGroupTest.java:36) ~[test-classes/:na] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_45] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_45] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_45] at java.lang.reflect.Method.invoke(Method.java:497) ~[na:1.8.0_45] at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) [junit-4.12.jar:4.12] at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) [junit-4.12.jar:4.12] at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) [junit-4.12.jar:4.12] at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) [junit-4.12.jar:4.12] at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) [junit-4.12.jar:4.12] at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) [junit-4.12.jar:4.12] at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) [junit-4.12.jar:4.12] at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) [junit-4.12.jar:4.12] at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) [junit-4.12.jar:4.12] at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) [junit-4.12.jar:4.12] at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) [junit-4.12.jar:4.12] at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) [junit-4.12.jar:4.12] at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) [junit-4.12.jar:4.12] at org.junit.runners.ParentRunner.run(ParentRunner.java:363) [junit-4.12.jar:4.12] at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:367) [surefire-junit4-2.19.1.jar:2.19.1] at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:274) [surefire-junit4-2.19.1.jar:2.19.1] at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238) [surefire-junit4-2.19.1.jar:2.19.1] at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:161) [surefire-junit4-2.19.1.jar:2.19.1] at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:290) [surefire-booter-2.19.1.jar:2.19.1] at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:242) [surefire-booter-2.19.1.jar:2.19.1] at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:121) [surefire-booter-2.19.1.jar:2.19.1] <<< stacktrace end >>>