5 Replies Latest reply on Sep 19, 2016 3:41 PM by aj_rodrigues

    Wilfdly 10 clustering - IllegalArgumentException: Illegal base64 character 2b

    mpicque

      We upgraded our wildfly production platform from 7.1 to 10.0.0.Final.

      We have a cluster with 4 nodes with default session replication configuration on JDK 1.8.0_72.

       

      Since then we experience these exceptions below :

       

      2016-02-23 07:49:06,453 ERROR [org.infinispan.remoting.rpc.RpcManagerImpl] (default task-30) ISPN000073: Unexpected error while replicating: org.infinispan.commons.CacheException: java.lang.IllegalArgumentException: Illegal base64 character 2b
          at org.infinispan.remoting.transport.jgroups.CommandAwareRpcDispatcher.rethrowAsCacheException(CommandAwareRpcDispatcher.java:132)
          at org.infinispan.remoting.transport.jgroups.CommandAwareRpcDispatcher.invokeRemoteCommands(CommandAwareRpcDispatcher.java:112)
          at org.infinispan.remoting.transport.jgroups.JGroupsTransport.invokeRemotelyAsync(JGroupsTransport.java:581)
          at org.infinispan.remoting.rpc.RpcManagerImpl.invokeRemotelyAsync(RpcManagerImpl.java:162)
          at org.infinispan.remoting.rpc.RpcManagerImpl.invokeRemotely(RpcManagerImpl.java:203)
          at org.infinispan.interceptors.distribution.TxDistributionInterceptor.visitLockControlCommand(TxDistributionInterceptor.java:161)
          at org.infinispan.commands.control.LockControlCommand.acceptVisitor(LockControlCommand.java:110)
          at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99)
          at org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:113)
          at org.infinispan.commands.AbstractVisitor.visitLockControlCommand(AbstractVisitor.java:163)
          at org.infinispan.commands.control.LockControlCommand.acceptVisitor(LockControlCommand.java:110)
          at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99)
          at org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:113)
          at org.infinispan.commands.AbstractVisitor.visitLockControlCommand(AbstractVisitor.java:163)
          at org.infinispan.commands.control.LockControlCommand.acceptVisitor(LockControlCommand.java:110)
          at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99)
          at org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:113)
          at org.infinispan.commands.AbstractVisitor.visitLockControlCommand(AbstractVisitor.java:163)
          at org.infinispan.commands.control.LockControlCommand.acceptVisitor(LockControlCommand.java:110)
          at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99)
          at org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:113)
          at org.infinispan.commands.AbstractVisitor.visitLockControlCommand(AbstractVisitor.java:163)
          at org.infinispan.commands.control.LockControlCommand.acceptVisitor(LockControlCommand.java:110)
          at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99)
          at org.infinispan.interceptors.locking.PessimisticLockingInterceptor.visitLockControlCommand(PessimisticLockingInterceptor.java:169)
          at org.infinispan.commands.control.LockControlCommand.acceptVisitor(LockControlCommand.java:110)
          at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99)
          at org.infinispan.interceptors.TxInterceptor.invokeNextInterceptorAndVerifyTransaction(TxInterceptor.java:157)
          at org.infinispan.interceptors.TxInterceptor.visitLockControlCommand(TxInterceptor.java:215)
          at org.infinispan.commands.control.LockControlCommand.acceptVisitor(LockControlCommand.java:110)
          at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99)
          at org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:113)
          at org.infinispan.commands.AbstractVisitor.visitLockControlCommand(AbstractVisitor.java:163)
          at org.infinispan.statetransfer.TransactionSynchronizerInterceptor.visitLockControlCommand(TransactionSynchronizerInterceptor.java:78)
          at org.infinispan.commands.control.LockControlCommand.acceptVisitor(LockControlCommand.java:110)
          at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99)
          at org.infinispan.statetransfer.StateTransferInterceptor.handleTxCommand(StateTransferInterceptor.java:238)
          at org.infinispan.statetransfer.StateTransferInterceptor.visitLockControlCommand(StateTransferInterceptor.java:102)
          at org.infinispan.commands.control.LockControlCommand.acceptVisitor(LockControlCommand.java:110)
          at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99)
          at org.infinispan.interceptors.InvocationContextInterceptor.handleAll(InvocationContextInterceptor.java:107)
          at org.infinispan.interceptors.InvocationContextInterceptor.visitLockControlCommand(InvocationContextInterceptor.java:81)
          at org.infinispan.commands.control.LockControlCommand.acceptVisitor(LockControlCommand.java:110)
          at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99)
          at org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:113)
          at org.infinispan.commands.AbstractVisitor.visitLockControlCommand(AbstractVisitor.java:163)
          at org.infinispan.commands.control.LockControlCommand.acceptVisitor(LockControlCommand.java:110)
          at org.infinispan.interceptors.InterceptorChain.invoke(InterceptorChain.java:336)
          at org.infinispan.cache.impl.CacheImpl.lock(CacheImpl.java:828)
          at org.infinispan.cache.impl.CacheImpl.lock(CacheImpl.java:810)
          at org.infinispan.cache.impl.AbstractDelegatingAdvancedCache.lock(AbstractDelegatingAdvancedCache.java:177)
          at org.wildfly.clustering.web.infinispan.session.InfinispanSessionMetaDataFactory.getValue(InfinispanSessionMetaDataFactory.java:84)
          at org.wildfly.clustering.web.infinispan.session.InfinispanSessionMetaDataFactory.findValue(InfinispanSessionMetaDataFactory.java:69)
          at org.wildfly.clustering.web.infinispan.session.InfinispanSessionMetaDataFactory.findValue(InfinispanSessionMetaDataFactory.java:39)
          at org.wildfly.clustering.web.infinispan.session.InfinispanSessionFactory.findValue(InfinispanSessionFactory.java:61)
          at org.wildfly.clustering.web.infinispan.session.InfinispanSessionFactory.findValue(InfinispanSessionFactory.java:40)
          at org.wildfly.clustering.web.infinispan.session.InfinispanSessionManager.findSession(InfinispanSessionManager.java:234)
          at org.wildfly.clustering.web.undertow.session.DistributableSessionManager.getSession(DistributableSessionManager.java:140)
          at io.undertow.servlet.spec.ServletContextImpl.getSession(ServletContextImpl.java:726)
          at io.undertow.servlet.spec.ServletContextImpl.getSession(ServletContextImpl.java:756)
          at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:69)
          at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
          at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
          at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
          at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
          at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
          at org.wildfly.mod_cluster.undertow.metric.RunningRequestsHttpHandler.handleRequest(RunningRequestsHttpHandler.java:69)
          at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
          at io.undertow.server.handlers.MetricsHandler.handleRequest(MetricsHandler.java:62)
          at io.undertow.servlet.core.MetricsChainHandler.handleRequest(MetricsChainHandler.java:59)
          at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:284)
          at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:263)
          at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)
          at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:174)
          at io.undertow.server.Connectors.executeRootHandler(Connectors.java:202)
          at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:793)
          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
          at java.lang.Thread.run(Thread.java:745)
      Caused by: java.lang.IllegalArgumentException: Illegal base64 character 2b
          at java.util.Base64$Decoder.decode0(Base64.java:714)
          at java.util.Base64$Decoder.decode(Base64.java:526)
          at java.util.Base64$Decoder.decode(Base64.java:549)
          at org.wildfly.clustering.web.infinispan.SessionIdentifierExternalizer$2.writeObject(SessionIdentifierExternalizer.java:55)
          at org.wildfly.clustering.web.infinispan.SessionIdentifierExternalizer$2.writeObject(SessionIdentifierExternalizer.java:52)
          at org.wildfly.clustering.web.infinispan.SessionKeyExternalizer.writeObject(SessionKeyExternalizer.java:57)
          at org.wildfly.clustering.web.infinispan.SessionKeyExternalizer.writeObject(SessionKeyExternalizer.java:37)
          at org.wildfly.clustering.infinispan.spi.marshalling.AdvancedExternalizerAdapter.writeObject(AdvancedExternalizerAdapter.java:49)
          at org.infinispan.marshall.core.ExternalizerTable$ForeignExternalizerAdapter.writeObject(ExternalizerTable.java:530)
          at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:138)
          at org.jboss.marshalling.AbstractObjectOutput.writeObject(AbstractObjectOutput.java:58)
          at org.jboss.marshalling.AbstractMarshaller.writeObject(AbstractMarshaller.java:111)
          at org.wildfly.clustering.marshalling.jboss.CollectionExternalizer.writeCollection(CollectionExternalizer.java:63)
          at org.wildfly.clustering.marshalling.jboss.CollectionExternalizer.writeObject(CollectionExternalizer.java:57)
          at org.wildfly.clustering.marshalling.jboss.CollectionExternalizer$ArrayListExternalizer.writeObject(CollectionExternalizer.java:91)
          at org.wildfly.clustering.infinispan.spi.marshalling.AdvancedExternalizerAdapter.writeObject(AdvancedExternalizerAdapter.java:49)
          at org.infinispan.marshall.core.ExternalizerTable$ForeignExternalizerAdapter.writeObject(ExternalizerTable.java:530)
          at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:138)
          at org.jboss.marshalling.AbstractObjectOutput.writeObject(AbstractObjectOutput.java:58)
          at org.jboss.marshalling.AbstractMarshaller.writeObject(AbstractMarshaller.java:111)
          at org.infinispan.marshall.exts.ReplicableCommandExternalizer.writeCommandParameters(ReplicableCommandExternalizer.java:66)
          at org.infinispan.marshall.exts.CacheRpcCommandExternalizer.marshallParameters(CacheRpcCommandExternalizer.java:128)
          at org.infinispan.marshall.exts.CacheRpcCommandExternalizer.writeObject(CacheRpcCommandExternalizer.java:112)
          at org.infinispan.marshall.exts.CacheRpcCommandExternalizer.writeObject(CacheRpcCommandExternalizer.java:68)
          at org.infinispan.marshall.core.ExternalizerTable$ExternalizerAdapter.writeObject(ExternalizerTable.java:481)
          at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:138)
          at org.jboss.marshalling.AbstractObjectOutput.writeObject(AbstractObjectOutput.java:58)
          at org.jboss.marshalling.AbstractMarshaller.writeObject(AbstractMarshaller.java:111)
          at org.infinispan.commons.marshall.jboss.AbstractJBossMarshaller.objectToObjectStream(AbstractJBossMarshaller.java:72)
          at org.infinispan.marshall.core.VersionAwareMarshaller.objectToBuffer(VersionAwareMarshaller.java:77)
          at org.infinispan.commons.marshall.AbstractMarshaller.objectToBuffer(AbstractMarshaller.java:41)
          at org.infinispan.commons.marshall.AbstractDelegatingMarshaller.objectToBuffer(AbstractDelegatingMarshaller.java:85)
          at org.infinispan.remoting.transport.jgroups.MarshallerAdapter.objectToBuffer(MarshallerAdapter.java:23)
          at org.infinispan.remoting.transport.jgroups.CommandAwareRpcDispatcher.marshallCall(CommandAwareRpcDispatcher.java:247)
          at org.infinispan.remoting.transport.jgroups.CommandAwareRpcDispatcher.processCalls(CommandAwareRpcDispatcher.java:286)
          at org.infinispan.remoting.transport.jgroups.CommandAwareRpcDispatcher.invokeRemoteCommands(CommandAwareRpcDispatcher.java:108)
          ... 77 more
      Caused by: an exception which occurred:
          in object org.wildfly.clustering.web.infinispan.session.SessionCreationMetaDataKey@86c1a81b
          in object java.util.ArrayList@86c1a83a
          in object org.infinispan.commands.control.LockControlCommand@c9ae1fd9
      

       

      It seems to occurs during session replication.

       

      Any ideas on the cause and the consequences ?

       

      Regards,

      Maxime Picque.

        • 1. Re: Wilfdly 10 clustering - IllegalArgumentException: Illegal base64 character 2b
          pferraro

          I see the problem...

          AS7 (via JBoss Web) allowed for the '+' character (i.e. 2b) in its session ID:

          http://anonsvn.jboss.org/repos/jbossweb/branches/7.0.x/java/org/apache/catalina/session/ManagerBase.java

          WildFly (via Undertow) does not:

          undertow/SecureRandomSessionIdGenerator.java at 1.3.x · undertow-io/undertow · GitHub

           

          The problem is, your users will likely have a cookie containing the old session ID, which contains a character that the distributed session manager does not expect.

          However, WildFly should not break like this if a session is requested using a session ID with an invalid character, and should instead respond as if the session was not found. See:

          [WFLY-6278] Requesting a session with an unexpected character causes request to fail - JBoss Issue Tracker

          • 2. Re: Wilfdly 10 clustering - IllegalArgumentException: Illegal base64 character 2b
            pferraro

            I've submitted a fix for this issue here: https://github.com/wildfly/wildfly/pull/8727

            • 3. Re: Wilfdly 10 clustering - IllegalArgumentException: Illegal base64 character 2b
              mpicque

              Thank you for the quick response!

               

              So do we have to wait for the patch or we have another solution in the meantime?

              We have also another error "illegal base64 character" :


              2016-02-25 10:14:03,761 ERROR [org.infinispan.remoting.rpc.RpcManagerImpl] (default task-35) ISPN000073: Unexpected error while replicating: org.infinispan.commons.CacheException: java.lang.IllegalArgumentException: Illegal base64 character 20
                  at org.infinispan.remoting.transport.jgroups.CommandAwareRpcDispatcher.rethrowAsCacheException(CommandAwareRpcDispatcher.java:132)
                  at org.infinispan.remoting.transport.jgroups.CommandAwareRpcDispatcher.invokeRemoteCommands(CommandAwareRpcDispatcher.java:112)
                  at org.infinispan.remoting.transport.jgroups.JGroupsTransport.invokeRemotelyAsync(JGroupsTransport.java:581)
                  at org.infinispan.remoting.rpc.RpcManagerImpl.invokeRemotelyAsync(RpcManagerImpl.java:162)
                  at org.infinispan.remoting.rpc.RpcManagerImpl.invokeRemotely(RpcManagerImpl.java:203)
                  at org.infinispan.interceptors.distribution.TxDistributionInterceptor.visitLockControlCommand(TxDistributionInterceptor.java:161)
                  at org.infinispan.commands.control.LockControlCommand.acceptVisitor(LockControlCommand.java:110)
                  at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99)
                  at org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:113)
                  at org.infinispan.commands.AbstractVisitor.visitLockControlCommand(AbstractVisitor.java:163)
                  at org.infinispan.commands.control.LockControlCommand.acceptVisitor(LockControlCommand.java:110)
                  at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99)
                  at org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:113)
                  at org.infinispan.commands.AbstractVisitor.visitLockControlCommand(AbstractVisitor.java:163)
                  at org.infinispan.commands.control.LockControlCommand.acceptVisitor(LockControlCommand.java:110)
                  at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99)
                  at org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:113)
                  at org.infinispan.commands.AbstractVisitor.visitLockControlCommand(AbstractVisitor.java:163)
                  at org.infinispan.commands.control.LockControlCommand.acceptVisitor(LockControlCommand.java:110)
                  at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99)
                  at org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:113)
                  at org.infinispan.commands.AbstractVisitor.visitLockControlCommand(AbstractVisitor.java:163)
                  at org.infinispan.commands.control.LockControlCommand.acceptVisitor(LockControlCommand.java:110)
                  at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99)
                  at org.infinispan.interceptors.locking.PessimisticLockingInterceptor.visitLockControlCommand(PessimisticLockingInterceptor.java:169)
                  at org.infinispan.commands.control.LockControlCommand.acceptVisitor(LockControlCommand.java:110)
                  at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99)
                  at org.infinispan.interceptors.TxInterceptor.invokeNextInterceptorAndVerifyTransaction(TxInterceptor.java:157)
                  at org.infinispan.interceptors.TxInterceptor.visitLockControlCommand(TxInterceptor.java:215)
                  at org.infinispan.commands.control.LockControlCommand.acceptVisitor(LockControlCommand.java:110)
                  at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99)
                  at org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:113)
                  at org.infinispan.commands.AbstractVisitor.visitLockControlCommand(AbstractVisitor.java:163)
                  at org.infinispan.statetransfer.TransactionSynchronizerInterceptor.visitLockControlCommand(TransactionSynchronizerInterceptor.java:78)
                  at org.infinispan.commands.control.LockControlCommand.acceptVisitor(LockControlCommand.java:110)
                  at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99)
                  at org.infinispan.statetransfer.StateTransferInterceptor.handleTxCommand(StateTransferInterceptor.java:238)
                  at org.infinispan.statetransfer.StateTransferInterceptor.visitLockControlCommand(StateTransferInterceptor.java:102)
                  at org.infinispan.commands.control.LockControlCommand.acceptVisitor(LockControlCommand.java:110)
                  at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99)
                  at org.infinispan.interceptors.InvocationContextInterceptor.handleAll(InvocationContextInterceptor.java:107)
                  at org.infinispan.interceptors.InvocationContextInterceptor.visitLockControlCommand(InvocationContextInterceptor.java:81)
                  at org.infinispan.commands.control.LockControlCommand.acceptVisitor(LockControlCommand.java:110)
                  at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99)
                  at org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:113)
                  at org.infinispan.commands.AbstractVisitor.visitLockControlCommand(AbstractVisitor.java:163)
                  at org.infinispan.commands.control.LockControlCommand.acceptVisitor(LockControlCommand.java:110)
                  at org.infinispan.interceptors.InterceptorChain.invoke(InterceptorChain.java:336)
                  at org.infinispan.cache.impl.CacheImpl.lock(CacheImpl.java:828)
                  at org.infinispan.cache.impl.CacheImpl.lock(CacheImpl.java:810)
                  at org.infinispan.cache.impl.AbstractDelegatingAdvancedCache.lock(AbstractDelegatingAdvancedCache.java:177)
                  at org.wildfly.clustering.web.infinispan.session.InfinispanSessionMetaDataFactory.getValue(InfinispanSessionMetaDataFactory.java:84)
                  at org.wildfly.clustering.web.infinispan.session.InfinispanSessionMetaDataFactory.findValue(InfinispanSessionMetaDataFactory.java:69)
                  at org.wildfly.clustering.web.infinispan.session.InfinispanSessionMetaDataFactory.findValue(InfinispanSessionMetaDataFactory.java:39)
                  at org.wildfly.clustering.web.infinispan.session.InfinispanSessionFactory.findValue(InfinispanSessionFactory.java:61)
                  at org.wildfly.clustering.web.infinispan.session.InfinispanSessionFactory.findValue(InfinispanSessionFactory.java:40)
                  at org.wildfly.clustering.web.infinispan.session.InfinispanSessionManager.findSession(InfinispanSessionManager.java:234)
                  at org.wildfly.clustering.web.undertow.session.DistributableSessionManager.getSession(DistributableSessionManager.java:140)
                  at io.undertow.servlet.spec.ServletContextImpl.getSession(ServletContextImpl.java:726)
                  at io.undertow.servlet.spec.ServletContextImpl.getSession(ServletContextImpl.java:756)
                  at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:69)
                  at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
                  at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
                  at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
                  at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
                  at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
                  at org.wildfly.mod_cluster.undertow.metric.RunningRequestsHttpHandler.handleRequest(RunningRequestsHttpHandler.java:69)
                  at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
                  at io.undertow.server.handlers.MetricsHandler.handleRequest(MetricsHandler.java:62)
                  at io.undertow.servlet.core.MetricsChainHandler.handleRequest(MetricsChainHandler.java:59)
                  at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:284)
                  at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:263)
                  at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)
                  at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:174)
                  at io.undertow.server.Connectors.executeRootHandler(Connectors.java:202)
                  at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:793)
                  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
                  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
                  at java.lang.Thread.run(Thread.java:745)
              Caused by: java.lang.IllegalArgumentException: Illegal base64 character 20
                  at java.util.Base64$Decoder.decode0(Base64.java:714)
                  at java.util.Base64$Decoder.decode(Base64.java:526)
                  at java.util.Base64$Decoder.decode(Base64.java:549)
                  at org.wildfly.clustering.web.infinispan.SessionIdentifierExternalizer$2.writeObject(SessionIdentifierExternalizer.java:55)
                  at org.wildfly.clustering.web.infinispan.SessionIdentifierExternalizer$2.writeObject(SessionIdentifierExternalizer.java:52)
                  at org.wildfly.clustering.web.infinispan.SessionKeyExternalizer.writeObject(SessionKeyExternalizer.java:57)
                  at org.wildfly.clustering.web.infinispan.SessionKeyExternalizer.writeObject(SessionKeyExternalizer.java:37)
                  at org.wildfly.clustering.infinispan.spi.marshalling.AdvancedExternalizerAdapter.writeObject(AdvancedExternalizerAdapter.java:49)
                  at org.infinispan.marshall.core.ExternalizerTable$ForeignExternalizerAdapter.writeObject(ExternalizerTable.java:530)
                  at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:138)
                  at org.jboss.marshalling.AbstractObjectOutput.writeObject(AbstractObjectOutput.java:58)
                  at org.jboss.marshalling.AbstractMarshaller.writeObject(AbstractMarshaller.java:111)
                  at org.wildfly.clustering.marshalling.jboss.CollectionExternalizer.writeCollection(CollectionExternalizer.java:63)
                  at org.wildfly.clustering.marshalling.jboss.CollectionExternalizer.writeObject(CollectionExternalizer.java:57)
                  at org.wildfly.clustering.marshalling.jboss.CollectionExternalizer$ArrayListExternalizer.writeObject(CollectionExternalizer.java:91)
                  at org.wildfly.clustering.infinispan.spi.marshalling.AdvancedExternalizerAdapter.writeObject(AdvancedExternalizerAdapter.java:49)
                  at org.infinispan.marshall.core.ExternalizerTable$ForeignExternalizerAdapter.writeObject(ExternalizerTable.java:530)
                  at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:138)
                  at org.jboss.marshalling.AbstractObjectOutput.writeObject(AbstractObjectOutput.java:58)
                  at org.jboss.marshalling.AbstractMarshaller.writeObject(AbstractMarshaller.java:111)
                  at org.infinispan.marshall.exts.ReplicableCommandExternalizer.writeCommandParameters(ReplicableCommandExternalizer.java:66)
                  at org.infinispan.marshall.exts.CacheRpcCommandExternalizer.marshallParameters(CacheRpcCommandExternalizer.java:128)
                  at org.infinispan.marshall.exts.CacheRpcCommandExternalizer.writeObject(CacheRpcCommandExternalizer.java:112)
                  at org.infinispan.marshall.exts.CacheRpcCommandExternalizer.writeObject(CacheRpcCommandExternalizer.java:68)
                  at org.infinispan.marshall.core.ExternalizerTable$ExternalizerAdapter.writeObject(ExternalizerTable.java:481)
                  at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:138)
                  at org.jboss.marshalling.AbstractObjectOutput.writeObject(AbstractObjectOutput.java:58)
                  at org.jboss.marshalling.AbstractMarshaller.writeObject(AbstractMarshaller.java:111)
                  at org.infinispan.commons.marshall.jboss.AbstractJBossMarshaller.objectToObjectStream(AbstractJBossMarshaller.java:72)
                  at org.infinispan.marshall.core.VersionAwareMarshaller.objectToBuffer(VersionAwareMarshaller.java:77)
                  at org.infinispan.commons.marshall.AbstractMarshaller.objectToBuffer(AbstractMarshaller.java:41)
                  at org.infinispan.commons.marshall.AbstractDelegatingMarshaller.objectToBuffer(AbstractDelegatingMarshaller.java:85)
                  at org.infinispan.remoting.transport.jgroups.MarshallerAdapter.objectToBuffer(MarshallerAdapter.java:23)
                  at org.infinispan.remoting.transport.jgroups.CommandAwareRpcDispatcher.marshallCall(CommandAwareRpcDispatcher.java:247)
                  at org.infinispan.remoting.transport.jgroups.CommandAwareRpcDispatcher.processCalls(CommandAwareRpcDispatcher.java:286)
                  at org.infinispan.remoting.transport.jgroups.CommandAwareRpcDispatcher.invokeRemoteCommands(CommandAwareRpcDispatcher.java:108)
                  ... 77 more
              Caused by: an exception which occurred:
                  in object org.wildfly.clustering.web.infinispan.session.SessionCreationMetaDataKey@3ad17537
                  in object java.util.ArrayList@3ad17556
                  in object org.infinispan.commands.control.LockControlCommand@bfd278df
              
              


              I don't know i that change anything to your fix.

              • 4. Re: Wilfdly 10 clustering - IllegalArgumentException: Illegal base64 character 2b
                pferraro

                That exception is due to the same problem - and is addressed by my fix.  I recommend that you checkout the 10.0.0.Final release from git, cherry-pick my commit, and rebuild.

                Until this is fixed, any client browser that contains a reference to an old JSESSIONID (from AS 7.1) containing the "+" character will throw an exception when they try to access your application on WF10.  At the moment, the only workaround is for these users to remove the corresponding cookie associated with your site, or wait for it to expire.

                • 5. Re: Wilfdly 10 clustering - IllegalArgumentException: Illegal base64 character 2b
                  aj_rodrigues

                  Hi everybody,

                   

                  I had the same problem and solved it replacing all white spaces by '+' (plus sign) .

                   

                  My client (Restful) sends an encoded base64 image to my server but in decode method threw an exception.

                   

                  My environment:

                  Java 8,

                  Wildfly 10.1.0.Final (updated from WildFly 10.0.0.Final)

                  Jackson 2.5.4

                   

                   

                  o/

                  Toninho Rodrigues