Uploaded image for project: 'Apache Whirr (retired)'
  1. Apache Whirr (retired)
  2. WHIRR-728

Empty locationid for vanilla openstack results in NullPointerException

    Details

    • Type: Bug
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: 0.8.2
    • Fix Version/s: None
    • Component/s: service/zookeeper
    • Environment:

      Description

      In the whirr version 0.8.2 a NullPointerException occurs with configureServices with zookeeper during firewall operations.

      Setting location-id to RegionOne fixes it.
      Reporting this because I don't know if this is a bug or proper behaviour. I would expect the location-id to be RegionOne taken from whirr.image-id or whirr.hardware-id if location-id is not set?

      Also all my whirr-runs require jclouds.openstack-nova.auto-generate-keypairs to be set to true, otherwise an authorization exception is raised. Should I specify another issue for this?

      Log:

      14:02:08.135 [pool-4-thread-2] INFO org.apache.whirr.compute.NodeStarter - Nodes started: [{id=RegionOne/da02c9df-2026-44d7-a08a-7d48a6e231b9, providerId=da02c9df-2026-44d7-a08a-7d48a6e231b9, name=whirrtest-1-f8a, location=

      {scope=HOST, id=d3781468178d18f8a789261ff3cb9c3ed0c0444837e6d6bb5a896961, description=d3781468178d18f8a789261ff3cb9c3ed0c0444837e6d6bb5a896961, parent=RegionOne}, group=whirrtest-1, imageId=RegionOne/b647a9cd-99fa-4247-b775-dc0198f3777f, os={family=unrecognized, name=ubuntu-lucid-64, description=ubuntu-lucid-64, is64Bit=true}, status=RUNNING, loginPort=22, hostname=whirrtest-1-f8a, privateAddresses=[10.11.12.2], publicAddresses=[172.25.95.3], hardware={id=RegionOne/15, providerId=15, name=custom, location={scope=ZONE, id=RegionOne, description=RegionOne, parent=openstack-nova}, processors=[{cores=1.0, speed=1.0}], ram=256, volumes=[{type=LOCAL, size=10.0, bootDevice=true, durable=true}], supportsImage=ALWAYS_TRUE}, loginUser=root}, {id=RegionOne/518a5a35-9fea-4df7-aa91-ade52406b6a8, providerId=518a5a35-9fea-4df7-aa91-ade52406b6a8, name=whirrtest-1-17a, location={scope=HOST, id=d3781468178d18f8a789261ff3cb9c3ed0c0444837e6d6bb5a896961, description=d3781468178d18f8a789261ff3cb9c3ed0c0444837e6d6bb5a896961, parent=RegionOne}

      , group=whirrtest-1, imageId=RegionOne/b647a9cd-99fa-4247-b775-dc0198f3777f, os=

      {family=unrecognized, name=ubuntu-lucid-64, description=ubuntu-lucid-64, is64Bit=true}, status=RUNNING, loginPort=22, hostname=whirrtest-1-17a, privateAddresses=[10.11.12.3], publicAddresses=[172.25.95.2], hardware={id=RegionOne/15, providerId=15, name=custom, location={scope=ZONE, id=RegionOne, description=RegionOne, parent=openstack-nova}, processors=[{cores=1.0, speed=1.0}], ram=256, volumes=[{type=LOCAL, size=10.0, bootDevice=true, durable=true}], supportsImage=ALWAYS_TRUE}, loginUser=root}]
      14:02:08.139 [ForkJoinPool-1-worker-2] WARN o.a.w.state.ClusterStateStoreFactory - No cluster state is going to be persisted. There is no easy way to retrieve instance roles after launch.
      14:02:08.140 [ForkJoinPool-1-worker-1] INFO org.rugco.test.WhirrLaunchTest - Bootstrapped following cluster: Cluster{instances=[Instance{roles=[zookeeper], publicIp=172.25.95.3, privateIp=10.11.12.2, id=RegionOne/da02c9df-2026-44d7-a08a-7d48a6e231b9, nodeMetadata={id=RegionOne/da02c9df-2026-44d7-a08a-7d48a6e231b9, providerId=da02c9df-2026-44d7-a08a-7d48a6e231b9, name=whirrtest-1-f8a, location={scope=HOST, id=d3781468178d18f8a789261ff3cb9c3ed0c0444837e6d6bb5a896961, description=d3781468178d18f8a789261ff3cb9c3ed0c0444837e6d6bb5a896961, parent=RegionOne}, group=whirrtest-1, imageId=RegionOne/b647a9cd-99fa-4247-b775-dc0198f3777f, os={family=unrecognized, name=ubuntu-lucid-64, description=ubuntu-lucid-64, is64Bit=true}

      , status=RUNNING, loginPort=22, hostname=whirrtest-1-f8a, privateAddresses=[10.11.12.2], publicAddresses=[172.25.95.3], hardware={id=RegionOne/15, providerId=15, name=custom, location=

      {scope=ZONE, id=RegionOne, description=RegionOne, parent=openstack-nova}, processors=[{cores=1.0, speed=1.0}], ram=256, volumes=[{type=LOCAL, size=10.0, bootDevice=true, durable=true}], supportsImage=ALWAYS_TRUE}, loginUser=root}}, Instance{roles=[zookeeper], publicIp=172.25.95.2, privateIp=10.11.12.3, id=RegionOne/518a5a35-9fea-4df7-aa91-ade52406b6a8, nodeMetadata={id=RegionOne/518a5a35-9fea-4df7-aa91-ade52406b6a8, providerId=518a5a35-9fea-4df7-aa91-ade52406b6a8, name=whirrtest-1-17a, location={scope=HOST, id=d3781468178d18f8a789261ff3cb9c3ed0c0444837e6d6bb5a896961, description=d3781468178d18f8a789261ff3cb9c3ed0c0444837e6d6bb5a896961, parent=RegionOne}, group=whirrtest-1, imageId=RegionOne/b647a9cd-99fa-4247-b775-dc0198f3777f, os={family=unrecognized, name=ubuntu-lucid-64, description=ubuntu-lucid-64, is64Bit=true}, status=RUNNING, loginPort=22, hostname=whirrtest-1-17a, privateAddresses=[10.11.12.3], publicAddresses=[172.25.95.2], hardware={id=RegionOne/15, providerId=15, name=custom, location={scope=ZONE, id=RegionOne, description=RegionOne, parent=openstack-nova}

      , processors=[

      {cores=1.0, speed=1.0}

      ], ram=256, volumes=[

      {type=LOCAL, size=10.0, bootDevice=true, durable=true}

      ], supportsImage=ALWAYS_TRUE}, loginUser=root}}]}
      14:02:08.566 [ForkJoinPool-1-worker-1] INFO o.a.whirr.service.FirewallManager - Authorizing firewall ingress to [RegionOne/da02c9df-2026-44d7-a08a-7d48a6e231b9, RegionOne/518a5a35-9fea-4df7-aa91-ade52406b6a8] on ports [80, 22, 2181] for [213.126.101.146/32]
      14:02:08.566 [ForkJoinPool-1-worker-1] INFO o.a.whirr.service.FirewallManager - Authorizing firewall ingress to [RegionOne/da02c9df-2026-44d7-a08a-7d48a6e231b9, RegionOne/518a5a35-9fea-4df7-aa91-ade52406b6a8] on ports [2181] for [213.126.101.146/32]
      14:02:08.566 [ForkJoinPool-1-worker-1] INFO o.a.whirr.service.FirewallManager - Authorizing firewall ingress to [RegionOne/da02c9df-2026-44d7-a08a-7d48a6e231b9, RegionOne/518a5a35-9fea-4df7-aa91-ade52406b6a8] on ports [80, 22, 2181] for [213.126.101.146/32]
      java.lang.RuntimeException: java.lang.NullPointerException: arg[0] in

      {clazz=interface org.jclouds.openstack.nova.v2_0.extensions.SecurityGroupAsyncApi, method=public abstract com.google.common.base.Optional org.jclouds.openstack.nova.v2_0.NovaApi.getSecurityGroupExtensionForZone(java.lang.String), args=[null], returnVal=Sync Proxy for: $Proxy94}

      at org.rugco.deployer.deployer.WhirrWrapper$$anonfun$launchInstance$1.applyOrElse(WhirrWrapper.scala:80)
      at org.rugco.deployer.deployer.WhirrWrapper$$anonfun$launchInstance$1.applyOrElse(WhirrWrapper.scala:71)
      at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:33)
      at scala.concurrent.Future$$anonfun$onFailure$1.apply(Future.scala:137)
      at scala.concurrent.Future$$anonfun$onFailure$1.apply(Future.scala:136)
      at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:29)
      at scala.concurrent.impl.ExecutionContextImpl$$anon$3.exec(ExecutionContextImpl.scala:107)
      at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:262)
      at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:975)
      at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1478)
      at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:104)
      Caused by: java.lang.NullPointerException: arg[0] in

      {clazz=interface org.jclouds.openstack.nova.v2_0.extensions.SecurityGroupAsyncApi, method=public abstract com.google.common.base.Optional org.jclouds.openstack.nova.v2_0.NovaApi.getSecurityGroupExtensionForZone(java.lang.String), args=[null], returnVal=Sync Proxy for: $Proxy94}

      at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:235)
      at org.jclouds.openstack.v2_0.functions.PresentWhenExtensionAnnotationNamespaceEqualsAnyNamespaceInExtensionsSet.apply(PresentWhenExtensionAnnotationNamespaceEqualsAnyNamespaceInExtensionsSet.java:70)
      at org.jclouds.openstack.v2_0.functions.PresentWhenExtensionAnnotationNamespaceEqualsAnyNamespaceInExtensionsSet.apply(PresentWhenExtensionAnnotationNamespaceEqualsAnyNamespaceInExtensionsSet.java:46)
      at org.jclouds.concurrent.internal.SyncProxy.invoke(SyncProxy.java:159)
      at com.sun.proxy.$Proxy63.getSecurityGroupExtensionForZone(Unknown Source)
      at org.apache.whirr.service.FirewallManager.authorizeIngress(FirewallManager.java:310)
      at org.apache.whirr.service.FirewallManager.authorizeAllRules(FirewallManager.java:242)
      at org.apache.whirr.service.ClusterActionHandlerSupport.handleFirewallRules(ClusterActionHandlerSupport.java:220)
      at org.apache.whirr.service.zookeeper.ZooKeeperClusterActionHandler.beforeConfigure(ZooKeeperClusterActionHandler.java:87)
      at org.apache.whirr.service.ClusterActionHandlerSupport.beforeAction(ClusterActionHandlerSupport.java:58)
      at org.apache.whirr.actions.ScriptBasedClusterAction.execute(ScriptBasedClusterAction.java:123)
      at org.apache.whirr.ClusterController.configureServices(ClusterController.java:161)
      at org.apache.whirr.ClusterController.configureServices(ClusterController.java:153)
      at org.rugco.deployer.deployer.WhirrWrapper$$anonfun$configureServices$1.apply(WhirrWrapper.scala:40)
      at org.rugco.deployer.deployer.WhirrWrapper$$anonfun$configureServices$1.apply(WhirrWrapper.scala:38)
      at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
      at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
      ... 5 more
      14:02:08.576 [ForkJoinPool-1-worker-2] ERROR org.rugco.test.WhirrLaunchTest - CRITICAL the cluster failed to launch and the automated node termination option was not selected, there might be orphaned nodes.
      java.lang.NullPointerException: arg[0] in

      {clazz=interface org.jclouds.openstack.nova.v2_0.extensions.SecurityGroupAsyncApi, method=public abstract com.google.common.base.Optional org.jclouds.openstack.nova.v2_0.NovaApi.getSecurityGroupExtensionForZone(java.lang.String), args=[null], returnVal=Sync Proxy for: $Proxy94}

      at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:235) ~[guava-13.0.jar:na]
      at org.jclouds.openstack.v2_0.functions.PresentWhenExtensionAnnotationNamespaceEqualsAnyNamespaceInExtensionsSet.apply(PresentWhenExtensionAnnotationNamespaceEqualsAnyNamespaceInExtensionsSet.java:70) ~[openstack-keystone-1.5.8.jar:1.5.8]
      at org.jclouds.openstack.v2_0.functions.PresentWhenExtensionAnnotationNamespaceEqualsAnyNamespaceInExtensionsSet.apply(PresentWhenExtensionAnnotationNamespaceEqualsAnyNamespaceInExtensionsSet.java:46) ~[openstack-keystone-1.5.8.jar:1.5.8]
      at org.jclouds.concurrent.internal.SyncProxy.invoke(SyncProxy.java:159) ~[jclouds-core-1.5.8.jar:1.5.8]
      at com.sun.proxy.$Proxy63.getSecurityGroupExtensionForZone(Unknown Source) ~[na:na]
      at org.apache.whirr.service.FirewallManager.authorizeIngress(FirewallManager.java:310) ~[whirr-core-0.8.2.jar:0.8.2]
      at org.apache.whirr.service.FirewallManager.authorizeAllRules(FirewallManager.java:242) ~[whirr-core-0.8.2.jar:0.8.2]
      at org.apache.whirr.service.ClusterActionHandlerSupport.handleFirewallRules(ClusterActionHandlerSupport.java:220) ~[whirr-core-0.8.2.jar:0.8.2]
      at org.apache.whirr.service.zookeeper.ZooKeeperClusterActionHandler.beforeConfigure(ZooKeeperClusterActionHandler.java:87) ~[whirr-zookeeper-0.8.2.jar:0.8.2]
      at org.apache.whirr.service.ClusterActionHandlerSupport.beforeAction(ClusterActionHandlerSupport.java:58) ~[whirr-core-0.8.2.jar:0.8.2]
      at org.apache.whirr.actions.ScriptBasedClusterAction.execute(ScriptBasedClusterAction.java:123) ~[whirr-core-0.8.2.jar:0.8.2]
      at org.apache.whirr.ClusterController.configureServices(ClusterController.java:161) ~[whirr-core-0.8.2.jar:0.8.2]
      at org.apache.whirr.ClusterController.configureServices(ClusterController.java:153) ~[whirr-core-0.8.2.jar:0.8.2]

        Activity

        Hide
        wernerbu Werner Buck added a comment -

        Just found out that the problem can not be fixed when using different templates per role.
        If I define template like such:
        "1 test+test, 2 test2"
        And instead of global locationId/hardwareId, I want to set it individually for each role: "test+test" and "test2".
        Then I still have to define the global locationId not to get this error.
        But I am worried this doesn't work if the locationId defined in the the individual role is different from the global one.

        Show
        wernerbu Werner Buck added a comment - Just found out that the problem can not be fixed when using different templates per role. If I define template like such: "1 test+test, 2 test2" And instead of global locationId/hardwareId, I want to set it individually for each role: "test+test" and "test2". Then I still have to define the global locationId not to get this error. But I am worried this doesn't work if the locationId defined in the the individual role is different from the global one.

          People

          • Assignee:
            Unassigned
            Reporter:
            wernerbu Werner Buck
          • Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:

              Development