Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 2.0, 2.1
    • Fix Version/s: 2.0, 2.1
    • Component/s: Clustering
    • Security Level: public (Regular issues)
    • Labels:
      None
    • Patch Info:
      Patch Available

      Description

      Geronimo v1.x supports tomcat context level cluster, but Geronimo v2.0.x only support tomcat host level cluster.

        Activity

        YunFeng Ma created issue -
        YunFeng Ma made changes -
        Field Original Value New Value
        Attachment GERONIMO-3362.patch [ 12362762 ]
        Hide
        Paul McMahan added a comment -

        There was some discussion on dev about if and how context level clustering is supported in TC6.
        http://www.nabble.com/Context-level-clustering-not-supported-in-Tomcat-it-seems-tf3237711s134.html#a8998924

        From rereading that thread it's not clear to me whether or not it's OK to apply this patch. On the surface it seems harmless to just pass the cluster reference from the deployment plan on through to the tomcat objects But without a deeper understanding of whether or not tomcat6 does in fact respond correctly to that setting I am hesitant to do so.

        It would be a big help if you could please take a moment to explain your clustering configuration and how you tested your patch. Another concern in my mind is whether or not Geronimo's existing support for Engine/Host level clustering might be adversely affected by making this change (I don't think so, but am not convinced yet).

        Thanks for your help and cooperation.

        Show
        Paul McMahan added a comment - There was some discussion on dev about if and how context level clustering is supported in TC6. http://www.nabble.com/Context-level-clustering-not-supported-in-Tomcat-it-seems-tf3237711s134.html#a8998924 From rereading that thread it's not clear to me whether or not it's OK to apply this patch. On the surface it seems harmless to just pass the cluster reference from the deployment plan on through to the tomcat objects But without a deeper understanding of whether or not tomcat6 does in fact respond correctly to that setting I am hesitant to do so. It would be a big help if you could please take a moment to explain your clustering configuration and how you tested your patch. Another concern in my mind is whether or not Geronimo's existing support for Engine/Host level clustering might be adversely affected by making this change (I don't think so, but am not convinced yet). Thanks for your help and cooperation.
        Donald Woods made changes -
        Affects Version/s 2.0 [ 12312600 ]
        Fix Version/s 2.0.x [ 12312601 ]
        Assignee Donald Woods [ drwoods ]
        Fix Version/s 2.0 [ 12312600 ]
        Fix Version/s 2.1 [ 12312602 ]
        Affects Version/s 2.0.x [ 12312601 ]
        Hide
        Donald Woods added a comment -

        YunFeng used 2 Linux machines and the Servlet examples as described in http://cwiki.apache.org/confluence/display/GMOxSAMPLES/Apache+Geronimo+v1.1+Samples
        to verify that the Context and Host Level sample write-ups still worked.

        Show
        Donald Woods added a comment - YunFeng used 2 Linux machines and the Servlet examples as described in http://cwiki.apache.org/confluence/display/GMOxSAMPLES/Apache+Geronimo+v1.1+Samples to verify that the Context and Host Level sample write-ups still worked.
        Hide
        Donald Woods added a comment -

        Committed revision 562257 in trunk (2.1)
        Committed revision 562258 in branches/2.0

        Show
        Donald Woods added a comment - Committed revision 562257 in trunk (2.1) Committed revision 562258 in branches/2.0
        Donald Woods made changes -
        Resolution Fixed [ 1 ]
        Status Open [ 1 ] Closed [ 6 ]
        Hide
        YunFeng Ma added a comment -

        I used the servlet examples in http://cwiki.apache.org/confluence/display/GMOxSAMPLES/Apache+Geronimo+v1.1+Samples, but the deployment plan has been changed as following:

        <web-app xmlns="http://geronimo.apache.org/xml/ns/j2ee/web/tomcat-1.2"
                 xmlns:dep="http://geronimo.apache.org/xml/ns/deployment-1.2">
        
            <dep:environment>
              <dep:moduleId>
                <dep:groupId>org.apache.geronimo.samples</dep:groupId>
                <dep:artifactId>servlet-examples-cluster-server1</dep:artifactId>
                <dep:version>2.0</dep:version>
                <dep:type>war</dep:type>
              </dep:moduleId>
              <dep:dependencies/>
              <dep:hidden-classes/>
              <dep:non-overridable-classes/>
            </dep:environment>
        
            <context-root>/servlet-examples-cluster</context-root>
        
            <security-realm-name>geronimo-properties-realm</security-realm-name>
            <security>
              <default-principal>
                <principal name="anonymous" class="org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal"/>
              </default-principal>
              <role-mappings>
                <role role-name="tomcat">
                  <principal name="admin" class="org.apache.geronimo.security.realm.providers.GeronimoGroupPrincipal"/>
                </role>
              </role-mappings>
            </security>
        
            <cluster>TomcatCluster</cluster>
            <gbean class="org.apache.geronimo.tomcat.cluster.CatalinaClusterGBean" name="TomcatCluster">
                <attribute name="className">org.apache.catalina.ha.tcp.SimpleTcpCluster</attribute>
                <attribute name="initParams">
                    managerClassName=org.apache.catalina.ha.session.DeltaManager
                    expireSessionsOnShutdown=false
                    useDirtyFlag=true
                    notifyListenersOnReplication=true
                </attribute>
                <reference name="TomcatValveChain">
                    <name>ReplicationValve</name>
                </reference>
                <reference name="ClusterListenerChain">
                    <name>ClusterSessionListener</name>
                </reference>
                <reference name="Channel">
                    <name>TomcatGroupChannel</name>
                </reference>
            </gbean>
            <gbean class="org.apache.geronimo.tomcat.cluster.ChannelGBean" name="TomcatGroupChannel">
                <attribute name="className">org.apache.catalina.tribes.group.GroupChannel</attribute>
                <attribute name="initParams"/>
                <reference name="Membership">
                    <name>TomcatMembership</name>
                </reference>
                <reference name="Receiver">
                    <name>TomcatReceiver</name>
                </reference>
                <reference name="Sender">
                    <name>TomcatSender</name>
                </reference>
                <reference name="ChannelInterceptor">
                    <name>TomcatChannelInterceptor</name>
                </reference>
            </gbean>
            <gbean class="org.apache.geronimo.tomcat.cluster.MembershipServiceGBean" name="TomcatMembership">
                <attribute name="className">org.apache.catalina.tribes.membership.McastService</attribute>
                <attribute name="initParams">
                    mcastAddr=228.0.0.4
                    mcastPort=45564
                    mcastFrequency=500
                    mcastDropTime=3000
                </attribute>
            </gbean>
            <gbean class="org.apache.geronimo.tomcat.cluster.ReceiverGBean" name="TomcatReceiver">
                <attribute name="className">org.apache.catalina.tribes.transport.nio.NioReceiver</attribute>
                <attribute name="initParams">
                    tcpListenAddress=192.168.1.100
                    tcpListenPort=4001
                    tcpSelectorTimeout=100
                    tcpThreadCount=6
                </attribute>
            </gbean>
            <gbean class="org.apache.geronimo.tomcat.cluster.SenderGBean" name="TomcatSender">
                <attribute name="className">org.apache.catalina.tribes.transport.ReplicationTransmitter</attribute>
                <attribute name="initParams">
                    replicationMode=pooled
                    waitForAck=true
                </attribute>
            </gbean>
            <gbean class="org.apache.geronimo.tomcat.ValveGBean" name="ReplicationValve">
                <attribute name="className">org.apache.catalina.ha.tcp.ReplicationValve</attribute>
                <attribute name="initParams">filter=.*\.gif;.*\.js;.*\.css;.*\.png;.*\.jpeg;.*\.jpg;.*\.htm;.*\.html;.*\.txt;</attribute>
                <reference name="NextValve">
                    <name>JvmRouteBinderValve</name>
                </reference>
            </gbean>
            <gbean class="org.apache.geronimo.tomcat.ValveGBean" name="JvmRouteBinderValve">
                <attribute name="className">org.apache.catalina.ha.session.JvmRouteBinderValve</attribute>
                <attribute name="initParams">enabled=true</attribute>
            </gbean>
            <gbean class="org.apache.geronimo.tomcat.cluster.ClusterListenerGBean" name="ClusterSessionListener">
                <attribute name="className">org.apache.catalina.ha.session.ClusterSessionListener</attribute>
                <reference name="NextListener">
                    <name>JvmRouteSessionIDBinderListener</name>
                </reference>
            </gbean>
            <gbean class="org.apache.geronimo.tomcat.cluster.ClusterListenerGBean" name="JvmRouteSessionIDBinderListener">
                <attribute name="className">org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener</attribute>
            </gbean>
            <gbean class="org.apache.geronimo.tomcat.cluster.ChannelInterceptorGBean" name="TomcatChannelInterceptor">
                <attribute name="className">org.apache.catalina.tribes.group.interceptors.TcpFailureDetector</attribute>
            </gbean>
        </web-app>
        
        Show
        YunFeng Ma added a comment - I used the servlet examples in http://cwiki.apache.org/confluence/display/GMOxSAMPLES/Apache+Geronimo+v1.1+Samples , but the deployment plan has been changed as following: <web-app xmlns= "http: //geronimo.apache.org/xml/ns/j2ee/web/tomcat-1.2" xmlns:dep= "http: //geronimo.apache.org/xml/ns/deployment-1.2" > <dep:environment> <dep:moduleId> <dep:groupId>org.apache.geronimo.samples</dep:groupId> <dep:artifactId>servlet-examples-cluster-server1</dep:artifactId> <dep:version>2.0</dep:version> <dep:type>war</dep:type> </dep:moduleId> <dep:dependencies/> <dep:hidden-classes/> <dep:non-overridable-classes/> </dep:environment> <context-root>/servlet-examples-cluster</context-root> <security-realm-name>geronimo-properties-realm</security-realm-name> <security> < default -principal> <principal name= "anonymous" class= "org.apache.geronimo.security.realm.providers.GeronimoUserPrincipal" /> </ default -principal> <role-mappings> <role role-name= "tomcat" > <principal name= "admin" class= "org.apache.geronimo.security.realm.providers.GeronimoGroupPrincipal" /> </role> </role-mappings> </security> <cluster>TomcatCluster</cluster> <gbean class= "org.apache.geronimo.tomcat.cluster.CatalinaClusterGBean" name= "TomcatCluster" > <attribute name= "className" >org.apache.catalina.ha.tcp.SimpleTcpCluster</attribute> <attribute name= "initParams" > managerClassName=org.apache.catalina.ha.session.DeltaManager expireSessionsOnShutdown= false useDirtyFlag= true notifyListenersOnReplication= true </attribute> <reference name= "TomcatValveChain" > <name>ReplicationValve</name> </reference> <reference name= "ClusterListenerChain" > <name>ClusterSessionListener</name> </reference> <reference name= "Channel" > <name>TomcatGroupChannel</name> </reference> </gbean> <gbean class= "org.apache.geronimo.tomcat.cluster.ChannelGBean" name= "TomcatGroupChannel" > <attribute name= "className" >org.apache.catalina.tribes.group.GroupChannel</attribute> <attribute name= "initParams" /> <reference name= "Membership" > <name>TomcatMembership</name> </reference> <reference name= "Receiver" > <name>TomcatReceiver</name> </reference> <reference name= "Sender" > <name>TomcatSender</name> </reference> <reference name= "ChannelInterceptor" > <name>TomcatChannelInterceptor</name> </reference> </gbean> <gbean class= "org.apache.geronimo.tomcat.cluster.MembershipServiceGBean" name= "TomcatMembership" > <attribute name= "className" >org.apache.catalina.tribes.membership.McastService</attribute> <attribute name= "initParams" > mcastAddr=228.0.0.4 mcastPort=45564 mcastFrequency=500 mcastDropTime=3000 </attribute> </gbean> <gbean class= "org.apache.geronimo.tomcat.cluster.ReceiverGBean" name= "TomcatReceiver" > <attribute name= "className" >org.apache.catalina.tribes.transport.nio.NioReceiver</attribute> <attribute name= "initParams" > tcpListenAddress=192.168.1.100 tcpListenPort=4001 tcpSelectorTimeout=100 tcpThreadCount=6 </attribute> </gbean> <gbean class= "org.apache.geronimo.tomcat.cluster.SenderGBean" name= "TomcatSender" > <attribute name= "className" >org.apache.catalina.tribes.transport.ReplicationTransmitter</attribute> <attribute name= "initParams" > replicationMode=pooled waitForAck= true </attribute> </gbean> <gbean class= "org.apache.geronimo.tomcat.ValveGBean" name= "ReplicationValve" > <attribute name= "className" >org.apache.catalina.ha.tcp.ReplicationValve</attribute> <attribute name= "initParams" >filter=.*\.gif;.*\.js;.*\.css;.*\.png;.*\.jpeg;.*\.jpg;.*\.htm;.*\.html;.*\.txt;</attribute> <reference name= "NextValve" > <name>JvmRouteBinderValve</name> </reference> </gbean> <gbean class= "org.apache.geronimo.tomcat.ValveGBean" name= "JvmRouteBinderValve" > <attribute name= "className" >org.apache.catalina.ha.session.JvmRouteBinderValve</attribute> <attribute name= "initParams" >enabled= true </attribute> </gbean> <gbean class= "org.apache.geronimo.tomcat.cluster.ClusterListenerGBean" name= "ClusterSessionListener" > <attribute name= "className" >org.apache.catalina.ha.session.ClusterSessionListener</attribute> <reference name= "NextListener" > <name>JvmRouteSessionIDBinderListener</name> </reference> </gbean> <gbean class= "org.apache.geronimo.tomcat.cluster.ClusterListenerGBean" name= "JvmRouteSessionIDBinderListener" > <attribute name= "className" >org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener</attribute> </gbean> <gbean class= "org.apache.geronimo.tomcat.cluster.ChannelInterceptorGBean" name= "TomcatChannelInterceptor" > <attribute name= "className" >org.apache.catalina.tribes.group.interceptors.TcpFailureDetector</attribute> </gbean> </web-app>
        Transition Time In Source Status Execution Times Last Executer Last Execution Date
        Open Open Closed Closed
        3d 10h 26m 1 Donald Woods 02/Aug/07 22:24

          People

          • Assignee:
            Donald Woods
            Reporter:
            YunFeng Ma
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development