Uploaded image for project: 'ModeShape'
  1. ModeShape
  2. MODE-2306

Modeshape 3.8 -> 4.0.0.Beta1 Rolling Upgrade

XMLWordPrintable

    • Icon: Feature Request Feature Request
    • Resolution: Won't Do
    • Icon: Critical Critical
    • None
    • 3.8.0.Final, 4.0.0.Beta1
    • Common
    • None

      I am using modeshape in embedded mode with JDBC persistence through infinispan. Since infinispan made incompatible changes from version 5 to 6
      an rolling upgrade procedure is required to migrate data as described here:

      http://infinispan.org/docs/6.0.x/user_guide/user_guide.html#_Data_migration_section
      http://infinispan.org/docs/6.0.x/user_guide/user_guide.html#_rolling_upgrades_for_infinispan_library_embedded_mode

      The modeshape 3.8 node is configured to run the infinispan command-line interface server and the caches on the new modeshape 4.0.0.Beta1 node are configured to use the infinispan
      command-line interface cache loader via jmx connection to the old node as described in rolling upgrade documentation. The new node does not start up because an exception occurs when the class
      'CacheSchematicDb' is calling store.get("") with empty parameters. This call translates to a command-line interface client 'get' call without parameters and causes a severe parsing error.

      Call during startup on new node with modeshape 4.0.0.Beta1:

      org.infinispan.schematic.internal.CacheSchematicDb.CacheSchematicDb(Cache<String, SchematicEntry>)
      
      ...
              String schemaCacheName = store.getName() + "Schemas";
      
              // Load the database document from the cache ...
              SchematicEntry databaseDocument = store.get("");
              if (databaseDocument != null && databaseDocument.hasDocumentContent()) {
      ...		
      

      Exception on old node with modeshape 3.8 (this is also thrown back to the new node and prevents its startup):

      DEBUG [org.infinispan.jmx.ResourceDMBean] <Argument value before transformation: get
       and its class: class java.lang.String. For method.invoke we need it to be class: java.lang.String>
      ERROR [org.infinispan.cli.interpreter.Interpreter] - <ISPN019003: Interpreter error>
      org.infinispan.cli.interpreter.ParseException: line 1:4 no viable alternative at input '\n'
              at org.infinispan.cli.interpreter.Interpreter.execute(Interpreter.java:163)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
              at java.lang.reflect.Method.invoke(Method.java:606)
              at org.infinispan.jmx.ResourceDMBean.invoke(ResourceDMBean.java:303)
              at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
              at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
              at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1487)
              at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:97)
              at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1328)
              at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1420)
              at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:848)
              at sun.reflect.GeneratedMethodAccessor59.invoke(Unknown Source)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
              at java.lang.reflect.Method.invoke(Method.java:606)
              at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:322)
              at sun.rmi.transport.Transport$1.run(Transport.java:177)
              at sun.rmi.transport.Transport$1.run(Transport.java:174)
              at java.security.AccessController.doPrivileged(Native Method)
              at sun.rmi.transport.Transport.serviceCall(Transport.java:173)
              at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:556)
              at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:811)
              at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:670)
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
              at java.lang.Thread.run(Thread.java:724)
      

              Unassigned Unassigned
              dev_java Bernhard D. (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated:
                Resolved: