SpringCloudCommandBus, using back-up http fails when using spring-cloud zookeeper

Has anyone ever got distributed command bus to work when using spring-cloud-zookeeper as service-discovery? I think there is a bug with latest Axon code (3.3.5).

When I enable distributed command bus and enable fallback over http I get the following exception on start-up:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘distributedCommandBus’ defined in class path resource [org/axonframework/boot/autoconfig/DistributedAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.axonframework.commandhandling.distributed.DistributedCommandBus]: Factory method ‘distributedCommandBus’ threw exception; nested exception is java.lang.UnsupportedOperationException
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:590)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1247)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1096)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:535)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:251)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1135)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1062)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:658)
… 19 common frames omitted
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.axonframework.commandhandling.distributed.DistributedCommandBus]: Factory method ‘distributedCommandBus’ threw exception; nested exception is java.lang.UnsupportedOperationException
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185)
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:582)
… 31 common frames omitted
Caused by: java.lang.UnsupportedOperationException: null
at java.util.AbstractMap.put(AbstractMap.java:209)
at org.axonframework.springcloud.commandhandling.SpringCloudCommandRouter.updateMembership(SpringCloudCommandRouter.java:191)
at org.axonframework.springcloud.commandhandling.SpringCloudHttpBackupCommandRouter.updateMembership(SpringCloudHttpBackupCommandRouter.java:207)
at org.axonframework.commandhandling.distributed.DistributedCommandBus.updateLoadFactor(DistributedCommandBus.java:191)
at org.axonframework.boot.autoconfig.DistributedAutoConfiguration.distributedCommandBus(DistributedAutoConfiguration.java:42)
at org.axonframework.boot.autoconfig.DistributedAutoConfiguration$$EnhancerBySpringCGLIB$$ba10958d.CGLIB$distributedCommandBus$0()
at org.axonframework.boot.autoconfig.DistributedAutoConfiguration$$EnhancerBySpringCGLIB$$ba10958d$$FastClassBySpringCGLIB$$723de74a.invoke()
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:361)
at org.axonframework.boot.autoconfig.DistributedAutoConfiguration$$EnhancerBySpringCGLIB$$ba10958d.distributedCommandBus()
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
… 32 common frames omitted

My config looks as follows:

spring:
  cloud:
    zookeeper:
      discovery:
        enabled: true
        preferIpAddress: true
      connect-string: <zookeeper-aws-ip>:2181

Hi,

unfortunately, it seems that every implementation uses a slightly different way to deal with the meta data. We have successfully tested with Eureka and Consul.
Could you file a bug report for this one in the AxonFramework repository (http://issues.axonframework.org)? Basically, Axon should ignore any exceptions that occur when attempting to put data in the meta data map.

Kind regards,

Allard Buijze