1 2 Previous Next 20 Replies Latest reply on Sep 12, 2006 5:00 AM by dimitris

    JBAS-1854 - Compatibility 3.2.x vs 4.2.x

    clebert.suconic

      I just executed a small portion of a compatibility test between 3.2.x and 4.2.x, and I've gotten serialization exceptions with GUID.

      Then looking at the source code Guid under 3.2.x is not implementing SerialVersionUID.

      So, can we add the SerialVersionUID on GUID@3.2.x from GUID@4.2.x?

        • 1. Re: JBAS-1854 - Compatibility 3.2.x vs 4.2.x
          clebert.suconic
          • 2. Re: JBAS-1854 - Compatibility 3.2.x vs 4.2.x
            starksm64

            For any serialVersionUID conflicts between 3.2.8 and 4.0.x we will have to do something like the following:

            import org.jboss.util.id.SerialVersion;
            
             /** @since 4.0.2, compatible with j2ee1.4 by default */
             final static long serialVersionUID;
             static
             {
             if (SerialVersion.version == SerialVersion.LEGACY)
             serialVersionUID = *the-402-serialVersionUID*;
             else
             serialVersionUID = *the-legacy-32x-serialVersionUID*;
             }
            


            The serialVersionUID compatibility mode is controlled by the org.jboss.j2ee.LegacySerialization system property existence as parsed in the org.jboss.util.id.SerialVersion class. The 328/402 interop is a conflicting definition with respect to legacy behavior for the SerialVersion class as for 4.0.2 legacy meant the 4.0.1 and 4.0.0.

            The default for 3.2.8 should be legacy interop with previous 3.2.x releases. Enabling interop with 4.0.x will break interop with previous 3.2.x releases so the user has to make that choice.


            • 3. Re: JBAS-1854 - Compatibility 3.2.x vs 4.2.x
              clebert.suconic

              I know a hard way to discover what's the current serialVersionUID. (Write a program that creates a ObjectStreamClass and inspects the versionUID).

              but it would be great if we have something ready, or if any IDE has that as an option.

              Is there any easy way of doing it?

              • 4. Re: JBAS-1854 - Compatibility 3.2.x vs 4.2.x
                dimitris

                I'm trying to clarify the scope & setup of the compatibility tests:

                Is the scope of http://jira.jboss.com/jira/browse/JBAS-1854 a series of 3.2.8 client --> 4.0.2 server tests?

                The way I undestand the compatibility test suite, this is done in the 4.x branch by including the 3.2.8 clients libs.

                The 3.2.x branch, will test a 4.0.2 client targeting a 3.2.8 server.

                Are we doing both? And for every setup what exact library version are we using?

                • 5. Re: JBAS-1854 - Compatibility 3.2.x vs 4.2.x
                  clebert.suconic

                  We are testing both ways:

                  3.2.x server using:
                  4.0.x client libraries (/client directory)
                  4.0.2
                  3.2.x (itself just to check the validity of the test)

                  4.0.x server using:
                  4.0.2
                  4.0.2-sp1
                  4.0.x (itself again just to check the validity of the test)
                  and 3.2.x client libraries

                  • 6. Re: JBAS-1854 - Compatibility 3.2.x vs 4.2.x

                     

                    "clebert.suconic@jboss.com" wrote:

                    but it would be great if we have something ready, or if any IDE has that as an option.

                    Eclipse does it for you


                    Is there any easy way of doing it?


                    I use this ant script which uses the serialver command that is a part of the JDK

                    <?xml version="1.0"?>
                    
                    
                    
                    <!-- ==========================================================================
                    
                    A template build file for building jboss3 applications
                    
                    Requires ant1.4+
                    
                    
                    
                    Distributable under the LGL
                    
                    See the terms of license at gnu.org
                    
                    =========================================================================== -->
                    
                    <project name="serialver" default="jboss" basedir=".">
                    
                    
                    <property file="build.properties"/>
                    
                    <property file="$(user.home}/build.properties"/>
                    
                    
                    
                    <!-- ==========================================================================
                    
                    Run the client
                    
                    =========================================================================== -->
                    
                    <target name="jboss">
                    
                    
                     <pathconvert targetos="unix" property="clientjars">
                     <path>
                     <fileset dir="${jboss.home}/client">
                    
                     <include name="*.jar"/>
                    
                     </fileset>
                     <fileset dir="${jboss.home}/server/all/lib">
                    
                     <include name="*.jar"/>
                    
                     </fileset>
                     </path>
                     </pathconvert>
                    
                     <exec executable="serialver">
                     <arg line="-classpath ${clientjars} ${class}"/>
                     </exec>
                    
                    
                    </target>
                    
                    
                    <target name="j2ee">
                    
                    
                     <pathconvert targetos="unix" property="clientjars">
                     <path>
                     <fileset dir="${j2ee.home}/lib">
                    
                     <include name="*.jar"/>
                    
                     </fileset>
                     </path>
                     </pathconvert>
                    
                     <exec executable="serialver">
                     <arg line="-classpath ${clientjars} ${class}"/>
                     </exec>
                    
                    
                    </target>
                    
                    
                    
                    </project>
                    


                    e.g.
                    ant -Dclass=org.jboss.some.Serializable

                    • 7. Re: JBAS-1854 - Compatibility 3.2.x vs 4.2.x
                      dimitris

                      I added the missing serialVersionUID to GUID so that it has by default the "legacy" 3.2.x (and 4.0.0/4.0.1 possibly?) value, which is overriden by the 4.0.2+ value when the system property org.jboss.j2ee.Serialization is set.

                      This is the opposite with 4.0.2+ where the property org.jboss.j2ee.LegacySerialization falls back to the 4.0.0/4.0.1 value.

                      So my question now is, how testing of this stuff gets automated?

                      When testing the server in Branch_3_2, we need to start it with -Dorg.jboss.j2ee.Serialization when testing using the 4.0.2/4.0.3SP1 client binaries. When testing using the 3.2.x client binaries the server must be started normally without the flag.

                      I guess the same goes for the compatibility tests on Branch_4_0.

                      • 8. Re: JBAS-1854 - Compatibility 3.2.x vs 4.2.x

                        Add a new parameter to the "scripts" in the testsuite that the jboss instances.

                        • 9. Re: JBAS-1854 - Compatibility 3.2.x vs 4.2.x
                          dimitris

                          So the build.xml would needs to change so that for each client library set, it starts and stops the server, with whatever serialization setting.

                          Otherwise we won't be able to run the tests agains the same version client binaries (e.g. 3.2.x -> 3.2.x)

                          • 10. Re: JBAS-1854 - Compatibility 3.2.x vs 4.2.x

                            Yes. I would to be able to pass in two new options, e.g.

                            ant test -Dtest=.... -Dclient.serialver=3.2.7 -Dserver.serialver=4.0.2
                            


                            • 11. Re: JBAS-1854 - Compatibility 3.2.x vs 4.2.x

                              Currently, we have -Dmatrix-versions which defines a directory with the following directory structure:

                               jboss_3_2_x/*.jar
                               jboss_3_2_7/*.jar
                               jboss_3_2_6/*.jar
                               jboss_4_0_x/*.jar
                               jboss_4_0_2/*.jar
                              


                              So it sounds like we will want two "matrix-versions" directories?
                               matrix-versions-3.2-legacy/
                               jboss_3_2_6/*.jar
                               jboss_3_2_7/*.jar
                              
                              and
                               matrix-versions-3.2-j2ee/
                               jboss_3_2_x/*.jar
                               jboss_4_0_x/*.jar
                               jboss_4_0_2/*.jar
                               jboss_4_0_3/*.jar
                              


                              And the second matrix test run will pass the org.jboss.j2ee.Serialization flag to the server.



                              • 12. Re: JBAS-1854 - Compatibility 3.2.x vs 4.2.x
                                dimitris

                                That looks fine. Maybe we want jboss_3_2_x to be in the matrix-versions-3.2-legacy dir.

                                • 13. Re: JBAS-1854 - Compatibility 3.2.x vs 4.2.x

                                   

                                  "adrian@jboss.org" wrote:
                                  Yes. I would to be able to pass in two new options,


                                  Ok, I'll try this instead. At least the compatbility assertions will be in the build.xml instead of implicit in some directory structure this way.

                                  • 14. Re: JBAS-1854 - Compatibility 3.2.x vs 4.2.x

                                    So this is what I ended up with:

                                     <target name="tests-matrix"
                                     description="Executes only the version check compatibility suite. Use -Dmatrix-versions=[version container] for this task" depends="maybejars" if="matrix-versions">
                                     <test-compatibility client-version="3_2_7" serialization-flag=""/>
                                     <test-compatibility client-version="3_2_6" serialization-flag=""/>
                                     <test-compatibility client-version="3_2_x" serialization-flag=""/>
                                    
                                     <test-compatibility client-version="4_0_x" serialization-flag="-Dorg.jboss.j2ee.Serialization"/>
                                     <test-compatibility client-version="4_0_2" serialization-flag="-Dorg.jboss.j2ee.Serialization"/>
                                     <test-compatibility client-version="4_0_3" serialization-flag="-Dorg.jboss.j2ee.Serialization"/>
                                     <test-compatibility client-version="4_0_3SP1" serialization-flag="-Dorg.jboss.j2ee.Serialization"/>
                                    
                                     </target>
                                    


                                    The results of this test will be availble (shortly) here:
                                    http://cruisecontrol.jboss.com/cc/buildresults/jboss-3.2-compatibility-matrix

                                    1 2 Previous Next