Java Mailing List Archive

http://www.junlu.com/

Home » dev-digest.tomcat »

dev Digest 31 Jul 2010 04:29:21 -0000 Issue 5303

dev-digest-help

2010-07-31


Author LoginPost Reply

dev Digest 31 Jul 2010 04:29:21 -0000 Issue 5303

Topics (messages 108193 through 108211):

DO NOT REPLY [Bug 49407] backup manager reports too few current sessions
 108193 by: bugzilla.apache.org

Re: More sources of Tomcat memory leaks
 108194 by: Sylvain Laurent

DO NOT REPLY [Bug 49673] New: JNDI not working
 108195 by: bugzilla.apache.org

DO NOT REPLY [Bug 49132] JNDI not working
 108196 by: bugzilla.apache.org

DO NOT REPLY [Bug 49673] JNDI not working
 108197 by: bugzilla.apache.org

DO NOT REPLY [Bug 49665] When file not found error occurs it does not tell you which file caused the error.
 108198 by: bugzilla.apache.org

DO NOT REPLY [Bug 49674] New: libservice.a: Malformed archive in commons-daemon
 108199 by: bugzilla.apache.org

Re: [PROPOSAL] Definition of active sessions
 108200 by: Keiichi Fujino

Re: svn commit: r980378 - in /tomcat/trunk: java/org/apache/catalina/ha/ java/org/apache/catalina/ha/session/ java/org/apache/catalina/ha/tcp/ webapps/docs/config/
 108201 by: Keiichi Fujino
 108202 by: Keiichi Fujino

[PROPOSAL] remove domainReplication propety
 108203 by: Keiichi Fujino

DO NOT REPLY [Bug 49668] Deeply nested references from ThreadLocal objects are not cleared
 108204 by: bugzilla.apache.org

DO NOT REPLY [Bug 49159] Improve ThreadLocal memory leak clean-up
 108205 by: bugzilla.apache.org

Re: svn commit: r980535 - in /tomcat/trunk: java/org/apache/catalina/session/ManagerBase.java java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java   webapps/docs/changelog.xml
 108206 by: Rainer Jung

DO NOT REPLY [Bug 49674] libservice.a: Malformed archive in commons-daemon
 108207 by: bugzilla.apache.org

DO NOT REPLY [Bug 49679] New: Session ID changes
 108208 by: bugzilla.apache.org

DO NOT REPLY [Bug 49679] Session ID changes
 108209 by: bugzilla.apache.org
 108210 by: bugzilla.apache.org

Re: Project tomcat-trunk-test (in module tomcat-trunk) failed
 108211 by: Bill Barker

Administrivia:

---------------------------------------------------------------------
To post to the list, e-mail: dev@(protected)
To unsubscribe, e-mail: dev-digest-unsubscribe@(protected)
For additional commands, e-mail: dev-digest-help@(protected)

----------------------------------------------------------------------


Attachment: dev_108193.ezm (zipped)
https://issues.apache.org/bugzilla/show_bug.cgi?id=49407

--- Comment #1 from Mark Thomas <markt@(protected) ---
This has been fixed for Tomcat 7 and the HTML Manager application enhanced to
differentiate between Primary, Backup and Proxy sessions.

I suspect the changes are too fundamental (Backup manager changed to included
backup sessions in list of active sessions) to be back-ported but I have
started a discussion on the dev list

--
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.


Attachment: dev_108194.ezm (zipped)
IMHO, clearing threadlocals is a bad idea, it has even been disabled by default because of concurrency issues.
Furthermore, the solution you propose would be limited to some type of classes (Map in your case).

https://issues.apache.org/bugzilla/show_bug.cgi?id=49159 is still pending but the solution proposed would cure this issue in a cleaner way.

Sylvain

On 29 juil. 2010, at 17:00, Arjen Knibbe wrote:

>
>
> markt-2 wrote:
>>
>> Please could you create a Bugzilla entry (against Tomact 7) for each
>> issue you identified so that this valuable work doesn't get forgotten
>> about?
>>
>> 95% of the work should just be a copy and paste.
>>
> I created three Bugzilla entries:
>
> 49667 for the JdbcLeakPreventer issue.
> 49668 for the ThreadLocal issue.
> 49669 for the PolicyFile issue.
>
> The problem with the LoaderHandler is a question of patience: after an hour
> or two, it will go away.
>
> I searched for an "upgrading to Tomcat 7" manual in the Tomcat documentation
> to check if the new JreMemoryLeakPreventionListener is mentioned, but I
> could not find any guidelines for upgrading...
>
>
> markt-2 wrote:
>>
>> PS How do you fancy trying to fix some of these issues?
>>
> I didn't try to write a subclass of WebappClassLoader. In stead, I used the
> destroy() method of the HttpServlet to clean things up.
>
> Clearing the PolicyFile reference is trivial:
>   /**
>   * Clear references from Policy.
>   */
>   private void clearReferencesPolicy()
>   {
>     System.out.println("About to clear Policy references");
>     ClassLoader myLoader = this.getClass().getClassLoader();
>
>     try
>     {
>        Class<?> policyClass =
> Class.forName("javax.security.auth.Policy");
>        Field contextClassLoaderField =
> policyClass.getDeclaredField("contextClassLoader");
>        contextClassLoaderField.setAccessible(true);
>
>        Object contextClassLoaderObj =
> contextClassLoaderField.get(null);
>        if (contextClassLoaderObj == myLoader)
>        {
>           System.out.println("Policy: setting contextClassLoader to
> null");
>           contextClassLoaderField.set(null, null);
>        }
>     }
>     catch (Throwable e)
>     {
>        System.err.println("Clearing Policy references");
>        e.printStackTrace();
>     }
>   }
>
> Clearing of the JDBC Drivers can be done by running the same loop twice:
>
>   /**
>   * Clear the JDBC drivers for the first time.
>   * This will load JDBC drivers that were loaded by other applications
>   * but not by this one, and can be found this class's loader.
>   */
>   public void clearJdbcDrivers()
>   {
>     System.out.println("About to deregister JDBC drivers");
>
>     try
>     {
>        // This will list all drivers visible to this class loader
>        Enumeration<Driver> drivers = DriverManager.getDrivers();
>        while (drivers.hasMoreElements())
>        {
>           Driver driver = drivers.nextElement();
>           // Only unload the drivers this web app loaded
>           if (driver.getClass().getClassLoader() !=
>             this.getClass().getClassLoader()) {
>             continue;
>           }
>           System.out.println("Deregistering driver " + driver);
>           DriverManager.deregisterDriver(driver);
>        }
>     }
>     catch (Exception e)
>     {
>        System.err.println("Deregistering JDBC drivers");        
>        e.printStackTrace();
>     }
>   }
> This is done first in the destroy method of the servlet, and again in the
> JdbcLeakPreventer. That gives nasty warnings about JDBC Drivers being
> forcibly unregistered. I suggest the loop should not run before, but just
> after the loop in the JdbcLeakPreventer, without outputting messages.
>
> Now for the real fancy thing: deeply clearing of the ThreadLocal references.
> It starts with a modified copy of the methods in WebappClassLoader for
> clearing ThreadLocal references:
>   /**
>   * Clear references to the ClassLoader in nested Maps and Collections
>   * of ThreadLocal objects.
>   */
>   @SuppressWarnings("unchecked")
>   private void clearReferencesThreadLocalsDeep()
>   {
>     System.out.println("About to clear deep references from
> ThreadLocals");
>
>     Thread[] threads = getThreads();
>
>     try
>     {
>        // Make the fields in the Thread class that store ThreadLocals
>        // accessible
>        Field threadLocalsField =
>           Thread.class.getDeclaredField("threadLocals");
>        threadLocalsField.setAccessible(true);
>        Field inheritableThreadLocalsField =
>           Thread.class.getDeclaredField("inheritableThreadLocals");
>        inheritableThreadLocalsField.setAccessible(true);
>        // Make the underlying array of ThreadLoad.ThreadLocalMap.Entry
> objects
>        // accessible
>        Class<?> tlmClass =
>        Class.forName("java.lang.ThreadLocal$ThreadLocalMap");
>        Field tableField = tlmClass.getDeclaredField("table");
>        tableField.setAccessible(true);
>
>        for (int i = 0; i < threads.length; i++)
>        {
>           Object threadLocalMap;
>           if (threads[i] != null)
>           {
>             // Clear the first map
>             threadLocalMap = threadLocalsField.get(threads[i]);
>             clearThreadLocalMapDeep("threadLocals", threadLocalMap,
> tableField);
>             // Clear the second map
>             threadLocalMap =
>                inheritableThreadLocalsField.get(threads[i]);
>             clearThreadLocalMapDeep("inheritableThreadLocals",
> threadLocalMap, tableField);
>           }
>        }
>     }
>     catch (Throwable e)
>     {
>        System.err.println("Clearing Deep ThreadLocal references");
>        e.printStackTrace();
>     }
>   }
>
>   /*
>   * Clears the given thread local map object. Also pass in the field that
>   * points to the internal table to save re-calculating it on every
>   * call to this method.
>   */
>   @SuppressWarnings("unchecked")
>   private void clearThreadLocalMapDeep(String mapName, Object map, Field
> internalTableField)
>     throws Exception
>   {
>     if (map != null)
>     {
>        Object[] table = (Object[]) internalTableField.get(map);
>        if (table != null) {
>           for (int j =0; j < table.length; j++) {
>             if (table[j] != null) {
>                // Check the key
>                Object key = ((Reference<?>) table[j]).get();
>                if (clearRecursive("ThreadLocal " + mapName + " deep
> key", key))
>                {
>                   System.out.println
>                     ( "Clearing of ThreadLocal table "
>                     + mapName
>                     + " key "
>                     + key
>                     + " left to Tomcat WebappClassLoader"
>                     );
>                }
>
>                // Check the value
>                Field valueField =
>                   table[j].getClass().getDeclaredField("value");
>                valueField.setAccessible(true);
>                Object value = valueField.get(table[j]);
>                if (clearRecursive("ThreadLocal " + mapName + " deep
> value", value))
>                {
>                   System.out.println
>                     ( "Clearing of ThreadLocal table "
>                     + mapName
>                     + " value "
>                     + value
>                     + " left to Tomcat WebappClassLoader"
>                     );
>                }
>             }
>           }
>        }
>     }
>   }
>
> The new thing in here is the clearRecursive(String, Object) method that is
> supposed to clear deep references to the WebappClassLoader.
> For my particular case, it would be sufficient to go down the keys of
> HashMaps, but I thought I make it more general. Beside Maps, consider
> Iterables also, and trace both the keys and the values in Maps. And nested
> issues could (at least in theory) contain a loop, causing an infinite
> recursion. To prevent that, I keep the inspected objects in a class member:
>
>   /**
>   * Save inspected objects to prevent double work
>   * and infinite recursions.
>   */
>   private LinkedList seen = new LinkedList();
>
> The methods for deep clearing are:
>   /**
>   * Inspect an Object, return whether to remove the reference to it.
>   * The reference has to be removed in the following situations:
>   * <ul>
>   *  <li>It refers to the ClassLoader of this class.</li>
>   *  <li>It refers to an Object of a Class that has been loaded
>   *     by the ClassLoader of this class.</li>
>   *  <li>It refers to a Class that has been loaded by the ClassLoader of
> this class.</li>
>   *  <li>The object is assignable to Map
>   *     and a call to {@(protected)
> true.</li>
>   *  <li>The object is assignable to Collection
>   *     and a call to {@(protected),
> Collection)} returns true.</li>
>   * </ul>
>   * @param info for logging purposes.
>   * @param object to be inspected.
>   * @return whether to remove the reference to this object.
>   */
>   @SuppressWarnings("unchecked")
>   private boolean clearRecursive(String info, Object object)
>   {
>     if (object == null)
>     {
>        return false;
>     }
>
>     ClassLoader myLoader = getClass().getClassLoader();
>     if ( object == myLoader
>       || object.getClass().getClassLoader() == myLoader
>       || (object instanceof Class && ((Class<?>)
> object).getClassLoader() == myLoader)
>       )
>     {
>        return true;
>     }
>
>     // Prevent double work and infinite recursions.
>     // Using containsKey can throw ClassCastException
>     // So, use the surest way
>     for (Object item: seen)
>     {
>        if (item == seen)
>        {
>           return false;
>        }
>     }
>     seen.add(object);
>
>     if (object instanceof Map)
>     {
>        return clearMapRecursive(info, (Map<Object, Object>) object);
>     }
>     else if (object instanceof Iterable)
>     {
>        return clearIterableRecursive(info, (Iterable) object);
>     }
>
>     return false;
>   }
>
>   /**
>   * Clear a collection recursively.
>   * @param info for logging purposes.
>   * @param iterable the Collection to be cleared.
>   * @return false.
>   */
>   private boolean clearIterableRecursive(String info, Iterable iterable)
>   {
>     Vector goners = new Vector();
>     Iterator iterator = iterable.iterator();
>
>     // Special treatment for Collections
>     // in case the Iterator cannot remove
>     // but the Collection itself can.
>     if (iterable instanceof Collection)
>     {
>        Collection collection = (Collection) iterable;
>
>        for (Object key: collection)
>        {
>           if (clearRecursive(info, key))
>           {
>             goners.add(key);
>           }
>        }
>        for (Object goner: goners.toArray())
>        {
>           System.out.println(info + ": removed key referring
> ClassLoader from Collection");
>           collection.remove(goner);
>        }
>        return false;
>     }
>
>     while (iterator.hasNext())
>     {
>        if (clearRecursive(info, iterator.next()))
>        {
>           iterator.remove();
>        }
>     }
>
>     return false;
>   }
>
>   /**
>   * Clear a map recursively.
>   * @param info for logging purposes.
>   * @param map the Map to be cleared.
>   * @return false.
>   */
>   private boolean clearMapRecursive(final String info, final Map<Object,
> Object> map)
>   {
>     Vector goners = new Vector();
>     Object value;
>     for (Object key: map.keySet())
>     {
>        if (clearRecursive(info, key))
>        {
>           goners.add(key);
>        }
>        else
>        {
>           value = map.get(key);
>           if (clearRecursive(info, value))
>           {
>             try
>             {
>                map.put(key, null);
>                System.out.println(info + ": removed value referring
> ClassLoader from Map");
>             }
>             catch (NullPointerException n)
>             {
>                goners.add(key);
>             }
>           }
>        }
>     }
>     for (Object goner: goners.toArray())
>     {
>        System.out.println(info + ": removed key referring ClassLoader
> from Map");
>        map.remove(goner);
>     }
>
>     return false;
>   }
>
> Hope you 'll enjoy
>
> Arjen
> --
> View this message in context: http://old.nabble.com/More-sources-of-Tomcat-memory-leaks-tp29264214p29297364.html
> Sent from the Tomcat - Dev mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@(protected)
> For additional commands, e-mail: dev-help@(protected)
>



Attachment: dev_108195.ezm (zipped)
https://issues.apache.org/bugzilla/show_bug.cgi?id=49673

      Summary: JNDI not working
      Product: Tomcat 6
      Version: 6.0.29
      Platform: All
    OS/Version: All
       Status: NEW
      Severity: regression
      Priority: P2
     Component: Servlet & JSP API
    AssignedTo: dev@(protected)
    ReportedBy: mitchell@(protected)
          CC: alvins1982@(protected)
    Depends on: 49132


+++ This bug was initially created as a clone of Bug #49132 +++

This bug exists in Tomcat 6.0.29, too. Any chance of back-porting the fix?

Simple web-app test to lookup the environment context is throwing an exception
- below code is taken from tomcat 6/7 docs - 2nd line throws a NameNotFound
Exception 'comp' not found.

// Obtain our environment naming context
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");

--
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.


Attachment: dev_108196.ezm (zipped)
https://issues.apache.org/bugzilla/show_bug.cgi?id=49132

Steve Mitchell <mitchell@(protected):

      What   |Removed              |Added
----------------------------------------------------------------------------
        Blocks|                   |49673

--
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.


Attachment: dev_108197.ezm (zipped)
https://issues.apache.org/bugzilla/show_bug.cgi?id=49673

Mark Thomas <markt@(protected):

      What   |Removed              |Added
----------------------------------------------------------------------------
        Status|NEW                 |RESOLVED
     Resolution|                   |INVALID

--- Comment #1 from Mark Thomas <markt@(protected) ---
The Tomcat 7 bug doesn't apply to Tomcat 6. This looks like user error. Please
use the users list if you require assistance.

--
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.


Attachment: dev_108198.ezm (zipped)
https://issues.apache.org/bugzilla/show_bug.cgi?id=49665

Ted Leung <tedmanleung@(protected):

      What   |Removed              |Added
----------------------------------------------------------------------------
Attachment #25815|0                  |1
    is obsolete|                   |

--- Comment #3 from Ted Leung <tedmanleung@(protected) ---
Created an attachment (id=25816)
--> (https://issues.apache.org/bugzilla/attachment.cgi?id=25816)
patch to show jsp filename and location causing error

This patch file has a fix to show the filename and location for the taglib file
not found as well as "Name was not previously introduced as per JSP.5.3"
errors.

This is a cumulative patch so the previous patches are now obsolete.

--
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.


Attachment: dev_108199.ezm (zipped)
https://issues.apache.org/bugzilla/show_bug.cgi?id=49674

      Summary: libservice.a: Malformed archive in commons-daemon
      Product: Tomcat 6
      Version: 6.0.29
      Platform: All
    OS/Version: Linux
       Status: NEW
      Severity: trivial
      Priority: P2
     Component: Catalina
    AssignedTo: dev@(protected)
    ReportedBy: pas256@(protected)


The file bin/commons-daemon-native.tar.gz contains dirty (already compiled)
code. On some systems this causes "make" to return the following error:

ar: libservice.a: Malformed archive

The solution is to run "make clean" before running "make".

I believe that "make clean" should be run before creating the tgz file, so that
there are no compiled/generated files laying around.

--
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.


Attachment: dev_108200.ezm (zipped)
> I intend to make the following changes unless there are any objections:
> - modify BackupManager to treat backup sessions as active
> - list all known sessions in the manager application
> - mark sessions as primary, backup or proxy in the manager application
> user interface
> - only provide session details in the manager application for primary or
> backup sessions (i.e. ones where there is already a local copy of the
> full session)
>

+1.


--
Keiichi.Fujino


Attachment: dev_108201.ezm (zipped)
Hi.

SimpleTcpCluster#sendClusterDomain called when domainReplication is
true is as follows now.

===SimpleTcpCluster#sendClusterDomain===
public void sendClusterDomain(ClusterMessage msg) {
  send(msg,null);
}
=== ===
the msg is transmitted to all cluster members.
domainReplication does not work correctly.

Tomcat7 and Tomcat6 have
org.apache.catalina.tribes.group.interceptors.DomainFilterInterceptor.
If DomainFilterInterceptor is used, session can be sent only to the
same domain.
Is DomainFilterInterceptor used instead of domainReplication?

--
Keiichi.Fujino

45:32 2010
> New Revision: 980378
>
> URL: http://svn.apache.org/viewvc?rev=980378&view=rev
> Log:
> Remove deprecated defaultMode attribute
> Clarify current behaviour of maxActiveSessions
> Clean-up cluster-manager docs
>
> Modified:
>    tomcat/trunk/java/org/apache/catalina/ha/ClusterManager.java
>    tomcat/trunk/java/org/apache/catalina/ha/session/BackupManager.java
>    tomcat/trunk/java/org/apache/catalina/ha/session/DeltaManager.java
>    tomcat/trunk/java/org/apache/catalina/ha/tcp/SimpleTcpCluster.java
>    tomcat/trunk/webapps/docs/config/cluster-manager.xml
>
> Modified: tomcat/trunk/java/org/apache/catalina/ha/ClusterManager.java
> URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ha/ClusterManager.java?rev=980378&r1=980377&r2=980378&view=diff
> ==============================================================================
> --- tomcat/trunk/java/org/apache/catalina/ha/ClusterManager.java (original)
> +++ tomcat/trunk/java/org/apache/catalina/ha/ClusterManager.java Thu Jul 29 09:45:32 2010
> @@(protected)
>     */
>    public void setDomainReplication(boolean domainReplication);
>
> -   /**
> -    * @param mode The mode
> -    * @since 5.5.10
> -    */
> -   public void setDefaultMode(boolean mode);
> -
> -   /**
> -    * @since 5.5.10
> -    */
> -   public boolean isDefaultMode();
> -
>    public ReplicationStream getReplicationStream(byte[] data) throws IOException;
>
>    public ReplicationStream getReplicationStream(byte[] data, int offset, int length) throws IOException;
>
> Modified: tomcat/trunk/java/org/apache/catalina/ha/session/BackupManager.java
> URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ha/session/BackupManager.java?rev=980378&r1=980377&r2=980378&view=diff
> ==============================================================================
> --- tomcat/trunk/java/org/apache/catalina/ha/session/BackupManager.java (original)
> +++ tomcat/trunk/java/org/apache/catalina/ha/session/BackupManager.java Thu Jul 29 09:45:32 2010
> @@(protected)
>     public void setDomainReplication(boolean sendClusterDomainOnly) {
>     }
>
> -    /**
> -     * @return Returns the defaultMode.
> -     */
> -    public boolean isDefaultMode() {
> -        return false;
> -    }
> -    /**
> -     * @param defaultMode The defaultMode to set.
> -     */
> -    public void setDefaultMode(boolean defaultMode) {
> -    }
> -
>     public void setExpireSessionsOnShutdown(boolean expireSessionsOnShutdown)
>     {
>         mExpireSessionsOnShutdown = expireSessionsOnShutdown;
>
> Modified: tomcat/trunk/java/org/apache/catalina/ha/session/DeltaManager.java
> URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ha/session/DeltaManager.java?rev=980378&r1=980377&r2=980378&view=diff
> ==============================================================================
> --- tomcat/trunk/java/org/apache/catalina/ha/session/DeltaManager.java (original)
> +++ tomcat/trunk/java/org/apache/catalina/ha/session/DeltaManager.java Thu Jul 29 09:45:32 2010
> @@(protected)
>      */
>     protected static String managerName = "DeltaManager";
>     protected String name = null;
> -    protected boolean defaultMode = false;
>     private CatalinaCluster cluster = null;
>
>     /**
> @@(protected)
>     }
>
>
> -    /**
> -     * @return Returns the defaultMode.
> -     */
> -    public boolean isDefaultMode() {
> -        return defaultMode;
> -    }
> -    /**
> -     * @param defaultMode The defaultMode to set.
> -     */
> -    public void setDefaultMode(boolean defaultMode) {
> -        this.defaultMode = defaultMode;
> -    }
> -
> -    public CatalinaCluster getCluster() {
> +   public CatalinaCluster getCluster() {
>         return cluster;
>     }
>
>
> Modified: tomcat/trunk/java/org/apache/catalina/ha/tcp/SimpleTcpCluster.java
> URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ha/tcp/SimpleTcpCluster.java?rev=980378&r1=980377&r2=980378&view=diff
> ==============================================================================
> --- tomcat/trunk/java/org/apache/catalina/ha/tcp/SimpleTcpCluster.java (original)
> +++ tomcat/trunk/java/org/apache/catalina/ha/tcp/SimpleTcpCluster.java Thu Jul 29 09:45:32 2010
> @@(protected)
>         String clusterName = getManagerName(cmanager.getName(), manager);
>         cmanager.setName(clusterName);
>         cmanager.setCluster(this);
> -        cmanager.setDefaultMode(false);
>
>         managers.put(clusterName, cmanager);
>         // Notify our interested LifecycleListeners
>
> Modified: tomcat/trunk/webapps/docs/config/cluster-manager.xml
> URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/config/cluster-manager.xml?rev=980378&r1=980377&r2=980378&view=diff
> ==============================================================================
> --- tomcat/trunk/webapps/docs/config/cluster-manager.xml (original)
> +++ tomcat/trunk/webapps/docs/config/cluster-manager.xml Thu Jul 29 09:45:32 2010
> @@(protected) @@
>  </section>
>
>  <section name="Introduction">
> -  <p>
> -  A cluster manager is an extension to Tomcat's session manager interface,
> -  <code>org.apache.catalina.Manager</code>
> -  A cluster manager must implement the <code>org.apache.catalina.ha.ClusterManager</code> and is solely
> -  responsible for how the session is replicated.<br/>
> -  There are currently two different managers, the <code>org.apache.catalina.ha.session.DeltaManager</code> replicates deltas
> -  of session data to all members in the cluster. This implementation is proven and works very well, but has a limitation
> -  as it requires the cluster members to be homogeneous, all nodes must deploy the same applications and be exact replicas.
> -  The <code>org.apache.catalina.ha.session.BackupManager</code> also replicates deltas but only to one backup node.
> -  The location of the backup node is known to all nodes in the cluster. It also supports heterogeneous deployments,
> -  so the manager knows at what locations the webapp is deployed.<br/>
> -  We are planning to add more managers with even more sophisticated backup mechanism to support even larger clusters.
> -  Check back soon!
> -  </p>
> +  <p>A cluster manager is an extension to Tomcat's session manager interface,
> +  <code>org.apache.catalina.Manager</code>.
> +  A cluster manager must implement the
> +  <code>org.apache.catalina.ha.ClusterManager</code> and is solely  responsible
> +  for how the session is replicated.<br/>
> +  There are currently two different managers, the
> +  <code>org.apache.catalina.ha.session.DeltaManager</code> replicates deltas of
> +  session data to all members in the cluster. This implementation is proven and
> +  works very well, but has a limitation as it requires the cluster members to be
> +  homogeneous, all nodes must deploy the same applications and be exact
> +  replicas. The <code>org.apache.catalina.ha.session.BackupManager</code> also
> +  replicates deltas but only to one backup node. The location of the backup node
> +  is known to all nodes in the cluster. It also supports heterogeneous
> +  deployments, so the manager knows at what locations the web application is
> +  deployed.</p>
>  </section>
>
>  <section name="The &lt;Manager&gt;">
> -  <p>
> -   The <code>&lt;Manager&gt;</code> element defined inside the <code>&lt;Cluster&gt;</code> element
> -   is the template defined for all web applications that are marked <code>&lt;distributable/&gt;</code>
> -   in their <code>web.xml</code> file.
> -   However, you can still override the manager implementation on a per web application basis,
> -   by putting the <code>&lt;Manager&gt;</code> inside the <code>&lt;Context&gt;</code> element either in the
> -   <code><a href="context.html">context.xml</a></code> file or the <code><a href="index.html">server.xml</a></code> file.
> -  </p>
> +  <p>The <code>&lt;Manager&gt;</code> element defined inside the
> +  <code>&lt;Cluster&gt;</code> element is the template defined for all web
> +  applications that are marked <code>&lt;distributable/&gt;</code> in their
> +  <code>web.xml</code> file. However, you can still override the manager
> +  implementation on a per web application basis, by putting the
> +  <code>&lt;Manager&gt;</code> inside the <code>&lt;Context&gt;</code> element
> +  either in the <code><a href="context.html">context.xml</a></code> file or the
> +  <code><a href="index.html">server.xml</a></code> file.</p>
>  </section>
>
>  <section name="Attributes">
>   <subsection name="Common Attributes">
>     <attributes>
> -     <attribute name="className" required="true">
> -     </attribute>
> -     <attribute name="name" required="false">
> -      <b>The name of this cluster manager, the name is used to identify a session manager on a node.
> -      The name might get modified by the <code>Cluster</code> element to make it unique in the container.</b>
> -     </attribute>
> -     <attribute name="defaultMode" required="false">
> -      <b>Deprecated since 6.0.0</b>
> -     </attribute>
> -     <attribute name="notifyListenersOnReplication" required="false">
> -       Set to <code>true</code> if you wish to have session listeners notified when
> -       session attributes are being replicated or removed across Tomcat nodes in the cluster.
> -     </attribute>
> -     <attribute name="expireSessionsOnShutdown" required="false">
> -       When a webapplication is being shutdown, Tomcat issues an expire call to each session to
> -       notify all the listeners. If you wish for all sessions to expire on all nodes when
> -       a shutdown occurs on one node, set this value to <code>true</code>.
> -       Default value is <code>false</code>.
> -     </attribute>
> -
> +      <attribute name="className" required="true">
> +      </attribute>
> +      <attribute name="name" required="false">
> +        <b>The name of this cluster manager, the name is used to identify a
> +        session manager on a node. The name might get modified by the
> +        <code>Cluster</code> element to make it unique in the container.</b>
> +      </attribute>
> +      <attribute name="notifyListenersOnReplication" required="false">
> +        Set to <code>true</code> if you wish to have session listeners notified
> +        when session attributes are being replicated or removed across Tomcat
> +        nodes in the cluster.
> +      </attribute>
> +      <attribute name="expireSessionsOnShutdown" required="false">
> +        When a web application is being shutdown, Tomcat issues an expire call
> +        to each session to notify all the listeners. If you wish for all
> +        sessions to expire on all nodes when a shutdown occurs on one node, set
> +        this value to <code>true</code>. Default value is <code>false</code>.
> +      </attribute>
>     </attributes>
>   </subsection>
>   <subsection name="org.apache.catalina.ha.session.DeltaManager Attributes">
>     <attributes>
> -     <attribute name="domainReplication" required="false">
> -      Set to true if you wish sessions to be replicated only to members that have the same logical
> -      domain set. If set to false, session replication will ignore the domain setting the
> -      <code><a href="cluster-membership.html">&lt;Membership&gt;</a></code>
> -      element.
> -     </attribute>
> -     <attribute name="expireSessionsOnShutdown" required="false">
> -       When a webapplication is being shutdown, Tomcat issues an expire call to each session to
> -       notify all the listeners. If you wish for all sessions to expire on all nodes when
> -       a shutdown occurs on one node, set this value to <code>true</code>.
> -       Default value is <code>false</code>.
> -     </attribute>
> -     <attribute name="stateTransferTimeout" required="false">
> -       The time in seconds to wait for a session state transfer to complete from another node
> -       when a node is starting up.
> -       Default value is <code>60</code> seconds.
> -     </attribute>
> +      <attribute name="domainReplication" required="false">
> +        Set to true if you wish sessions to be replicated only to members that
> +        have the same logical domain set. If set to false, session replication
> +        will ignore the domain setting the
> +        <code><a href="cluster-membership.html">&lt;Membership&gt;</a></code>
> +        element.
> +      </attribute>
> +      <attribute name="expireSessionsOnShutdown" required="false">
> +        When a web application is being shutdown, Tomcat issues an expire call
> +        to each session to notify all the listeners. If you wish for all
> +        sessions to expire on all nodes when a shutdown occurs on one node, set
> +        this value to <code>true</code>.
> +        Default value is <code>false</code>.
> +      </attribute>
> +      <attribute name="maxActiveSessions" required="false">
> +        The maximum number of active sessions that will be created by this
> +        Manager, or -1 (the default) for no limit. For this manager, all
> +        sessions are counted as active sessions irrespective if whether or not
> +        the current node is the primary node for the session.
> +      </attribute>
> +      <attribute name="stateTransferTimeout" required="false">
> +        The time in seconds to wait for a session state transfer to complete
> +        from another node when a node is starting up.
> +        Default value is <code>60</code> seconds.
> +      </attribute>
>     </attributes>
>   </subsection>
>   <subsection name="org.apache.catalina.ha.session.BackupManager Attributes">
>     <attributes>
> -     <attribute name="mapSendOptions" required="false">
> -       The backup manager uses a replicated map, this map is sending and
> -       receiving messages. You can setup the flag for how this map is sending
> -       messages, the default value is <code>6</code>(synchronous).<br/>
> -       Note that if you use asynchronous messaging it is possible for update
> -       messages for a session to be processed by the receiving node in a
> -       different order to the order in which they were sent.
> -     </attribute>
> +      <attribute name="mapSendOptions" required="false">
> +        The backup manager uses a replicated map, this map is sending and
> +        receiving messages. You can setup the flag for how this map is sending
> +        messages, the default value is <code>6</code>(synchronous).<br/>
> +        Note that if you use asynchronous messaging it is possible for update
> +        messages for a session to be processed by the receiving node in a
> +        different order to the order in which they were sent.
> +      </attribute>
> +      <attribute name="maxActiveSessions" required="false">
> +        The maximum number of active sessions that will be created by this
> +        Manager, or -1 (the default) for no limit. For this manager, only
> +        sessions where the current node is the primary node for the session are
> +        considered active sessions.
> +      </attribute>
>     </attributes>
>   </subsection>
>  </section>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@(protected)
> For additional commands, e-mail: dev-help@(protected)
>
>



--
Keiichi.Fujino


Attachment: dev_108202.ezm (zipped)
Sorry.
This rev is just remove defaultMode and add maxActiveSessions.
domainReplication was not related.
I send another proposal mail.

--
Keiichi.Fujino



Fujino <kfujino@(protected)>:
> Hi.
>
> SimpleTcpCluster#sendClusterDomain called when domainReplication is
> true is as follows now.
>
> ===SimpleTcpCluster#sendClusterDomain===
> public void sendClusterDomain(ClusterMessage msg) {
>    send(msg,null);
> }
> === ===
> the msg is transmitted to all cluster members.
> domainReplication does not work correctly.
>
> Tomcat7 and Tomcat6 have
> org.apache.catalina.tribes.group.interceptors.DomainFilterInterceptor.
> If DomainFilterInterceptor is used, session can be sent only to the
> same domain.
> Is DomainFilterInterceptor used instead of domainReplication?
>
> --
> Keiichi.Fujino
>
> 45:32 2010
>> New Revision: 980378
>>
>> URL: http://svn.apache.org/viewvc?rev=980378&view=rev
>> Log:
>> Remove deprecated defaultMode attribute
>> Clarify current behaviour of maxActiveSessions
>> Clean-up cluster-manager docs
>>
>> Modified:
>>    tomcat/trunk/java/org/apache/catalina/ha/ClusterManager.java
>>    tomcat/trunk/java/org/apache/catalina/ha/session/BackupManager.java
>>    tomcat/trunk/java/org/apache/catalina/ha/session/DeltaManager.java
>>    tomcat/trunk/java/org/apache/catalina/ha/tcp/SimpleTcpCluster.java
>>    tomcat/trunk/webapps/docs/config/cluster-manager.xml
>>
>> Modified: tomcat/trunk/java/org/apache/catalina/ha/ClusterManager.java
>> URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ha/ClusterManager.java?rev=980378&r1=980377&r2=980378&view=diff
>> ==============================================================================
>> --- tomcat/trunk/java/org/apache/catalina/ha/ClusterManager.java (original)
>> +++ tomcat/trunk/java/org/apache/catalina/ha/ClusterManager.java Thu Jul 29 09:45:32 2010
>> @@(protected)
>>     */
>>    public void setDomainReplication(boolean domainReplication);
>>
>> -   /**
>> -    * @param mode The mode
>> -    * @since 5.5.10
>> -    */
>> -   public void setDefaultMode(boolean mode);
>> -
>> -   /**
>> -    * @since 5.5.10
>> -    */
>> -   public boolean isDefaultMode();
>> -
>>    public ReplicationStream getReplicationStream(byte[] data) throws IOException;
>>
>>    public ReplicationStream getReplicationStream(byte[] data, int offset, int length) throws IOException;
>>
>> Modified: tomcat/trunk/java/org/apache/catalina/ha/session/BackupManager.java
>> URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ha/session/BackupManager.java?rev=980378&r1=980377&r2=980378&view=diff
>> ==============================================================================
>> --- tomcat/trunk/java/org/apache/catalina/ha/session/BackupManager.java (original)
>> +++ tomcat/trunk/java/org/apache/catalina/ha/session/BackupManager.java Thu Jul 29 09:45:32 2010
>> @@(protected)
>>     public void setDomainReplication(boolean sendClusterDomainOnly) {
>>     }
>>
>> -    /**
>> -     * @return Returns the defaultMode.
>> -     */
>> -    public boolean isDefaultMode() {
>> -        return false;
>> -    }
>> -    /**
>> -     * @param defaultMode The defaultMode to set.
>> -     */
>> -    public void setDefaultMode(boolean defaultMode) {
>> -    }
>> -
>>     public void setExpireSessionsOnShutdown(boolean expireSessionsOnShutdown)
>>     {
>>         mExpireSessionsOnShutdown = expireSessionsOnShutdown;
>>
>> Modified: tomcat/trunk/java/org/apache/catalina/ha/session/DeltaManager.java
>> URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ha/session/DeltaManager.java?rev=980378&r1=980377&r2=980378&view=diff
>> ==============================================================================
>> --- tomcat/trunk/java/org/apache/catalina/ha/session/DeltaManager.java (original)
>> +++ tomcat/trunk/java/org/apache/catalina/ha/session/DeltaManager.java Thu Jul 29 09:45:32 2010
>> @@(protected)
>>      */
>>     protected static String managerName = "DeltaManager";
>>     protected String name = null;
>> -    protected boolean defaultMode = false;
>>     private CatalinaCluster cluster = null;
>>
>>     /**
>> @@(protected)
>>     }
>>
>>
>> -    /**
>> -     * @return Returns the defaultMode.
>> -     */
>> -    public boolean isDefaultMode() {
>> -        return defaultMode;
>> -    }
>> -    /**
>> -     * @param defaultMode The defaultMode to set.
>> -     */
>> -    public void setDefaultMode(boolean defaultMode) {
>> -        this.defaultMode = defaultMode;
>> -    }
>> -
>> -    public CatalinaCluster getCluster() {
>> +   public CatalinaCluster getCluster() {
>>         return cluster;
>>     }
>>
>>
>> Modified: tomcat/trunk/java/org/apache/catalina/ha/tcp/SimpleTcpCluster.java
>> URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ha/tcp/SimpleTcpCluster.java?rev=980378&r1=980377&r2=980378&view=diff
>> ==============================================================================
>> --- tomcat/trunk/java/org/apache/catalina/ha/tcp/SimpleTcpCluster.java (original)
>> +++ tomcat/trunk/java/org/apache/catalina/ha/tcp/SimpleTcpCluster.java Thu Jul 29 09:45:32 2010
>> @@(protected)
>>         String clusterName = getManagerName(cmanager.getName(), manager);
>>         cmanager.setName(clusterName);
>>         cmanager.setCluster(this);
>> -        cmanager.setDefaultMode(false);
>>
>>         managers.put(clusterName, cmanager);
>>         // Notify our interested LifecycleListeners
>>
>> Modified: tomcat/trunk/webapps/docs/config/cluster-manager.xml
>> URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/config/cluster-manager.xml?rev=980378&r1=980377&r2=980378&view=diff
>> ==============================================================================
>> --- tomcat/trunk/webapps/docs/config/cluster-manager.xml (original)
>> +++ tomcat/trunk/webapps/docs/config/cluster-manager.xml Thu Jul 29 09:45:32 2010
>> @@(protected) @@
>>  </section>
>>
>>  <section name="Introduction">
>> -  <p>
>> -  A cluster manager is an extension to Tomcat's session manager interface,
>> -  <code>org.apache.catalina.Manager</code>
>> -  A cluster manager must implement the <code>org.apache.catalina.ha.ClusterManager</code> and is solely
>> -  responsible for how the session is replicated.<br/>
>> -  There are currently two different managers, the <code>org.apache.catalina.ha.session.DeltaManager</code> replicates deltas
>> -  of session data to all members in the cluster. This implementation is proven and works very well, but has a limitation
>> -  as it requires the cluster members to be homogeneous, all nodes must deploy the same applications and be exact replicas.
>> -  The <code>org.apache.catalina.ha.session.BackupManager</code> also replicates deltas but only to one backup node.
>> -  The location of the backup node is known to all nodes in the cluster. It also supports heterogeneous deployments,
>> -  so the manager knows at what locations the webapp is deployed.<br/>
>> -  We are planning to add more managers with even more sophisticated backup mechanism to support even larger clusters.
>> -  Check back soon!
>> -  </p>
>> +  <p>A cluster manager is an extension to Tomcat's session manager interface,
>> +  <code>org.apache.catalina.Manager</code>.
>> +  A cluster manager must implement the
>> +  <code>org.apache.catalina.ha.ClusterManager</code> and is solely  responsible
>> +  for how the session is replicated.<br/>
>> +  There are currently two different managers, the
>> +  <code>org.apache.catalina.ha.session.DeltaManager</code> replicates deltas of
>> +  session data to all members in the cluster. This implementation is proven and
>> +  works very well, but has a limitation as it requires the cluster members to be
>> +  homogeneous, all nodes must deploy the same applications and be exact
>> +  replicas. The <code>org.apache.catalina.ha.session.BackupManager</code> also
>> +  replicates deltas but only to one backup node. The location of the backup node
>> +  is known to all nodes in the cluster. It also supports heterogeneous
>> +  deployments, so the manager knows at what locations the web application is
>> +  deployed.</p>
>>  </section>
>>
>>  <section name="The &lt;Manager&gt;">
>> -  <p>
>> -   The <code>&lt;Manager&gt;</code> element defined inside the <code>&lt;Cluster&gt;</code> element
>> -   is the template defined for all web applications that are marked <code>&lt;distributable/&gt;</code>
>> -   in their <code>web.xml</code> file.
>> -   However, you can still override the manager implementation on a per web application basis,
>> -   by putting the <code>&lt;Manager&gt;</code> inside the <code>&lt;Context&gt;</code> element either in the
>> -   <code><a href="context.html">context.xml</a></code> file or the <code><a href="index.html">server.xml</a></code> file.
>> -  </p>
>> +  <p>The <code>&lt;Manager&gt;</code> element defined inside the
>> +  <code>&lt;Cluster&gt;</code> element is the template defined for all web
>> +  applications that are marked <code>&lt;distributable/&gt;</code> in their
>> +  <code>web.xml</code> file. However, you can still override the manager
>> +  implementation on a per web application basis, by putting the
>> +  <code>&lt;Manager&gt;</code> inside the <code>&lt;Context&gt;</code> element
>> +  either in the <code><a href="context.html">context.xml</a></code> file or the
>> +  <code><a href="index.html">server.xml</a></code> file.</p>
>>  </section>
>>
>>  <section name="Attributes">
>>   <subsection name="Common Attributes">
>>     <attributes>
>> -     <attribute name="className" required="true">
>> -     </attribute>
>> -     <attribute name="name" required="false">
>> -      <b>The name of this cluster manager, the name is used to identify a session manager on a node.
>> -      The name might get modified by the <code>Cluster</code> element to make it unique in the container.</b>
>> -     </attribute>
>> -     <attribute name="defaultMode" required="false">
>> -      <b>Deprecated since 6.0.0</b>
>> -     </attribute>
>> -     <attribute name="notifyListenersOnReplication" required="false">
>> -       Set to <code>true</code> if you wish to have session listeners notified when
>> -       session attributes are being replicated or removed across Tomcat nodes in the cluster.
>> -     </attribute>
>> -     <attribute name="expireSessionsOnShutdown" required="false">
>> -       When a webapplication is being shutdown, Tomcat issues an expire call to each session to
>> -       notify all the listeners. If you wish for all sessions to expire on all nodes when
>> -       a shutdown occurs on one node, set this value to <code>true</code>.
>> -       Default value is <code>false</code>.
>> -     </attribute>
>> -
>> +      <attribute name="className" required="true">
>> +      </attribute>
>> +      <attribute name="name" required="false">
>> +        <b>The name of this cluster manager, the name is used to identify a
>> +        session manager on a node. The name might get modified by the
>> +        <code>Cluster</code> element to make it unique in the container.</b>
>> +      </attribute>
>> +      <attribute name="notifyListenersOnReplication" required="false">
>> +        Set to <code>true</code> if you wish to have session listeners notified
>> +        when session attributes are being replicated or removed across Tomcat
>> +        nodes in the cluster.
>> +      </attribute>
>> +      <attribute name="expireSessionsOnShutdown" required="false">
>> +        When a web application is being shutdown, Tomcat issues an expire call
>> +        to each session to notify all the listeners. If you wish for all
>> +        sessions to expire on all nodes when a shutdown occurs on one node, set
>> +        this value to <code>true</code>. Default value is <code>false</code>.
>> +      </attribute>
>>     </attributes>
>>   </subsection>
>>   <subsection name="org.apache.catalina.ha.session.DeltaManager Attributes">
>>     <attributes>
>> -     <attribute name="domainReplication" required="false">
>> -      Set to true if you wish sessions to be replicated only to members that have the same logical
>> -      domain set. If set to false, session replication will ignore the domain setting the
>> -      <code><a href="cluster-membership.html">&lt;Membership&gt;</a></code>
>> -      element.
>> -     </attribute>
>> -     <attribute name="expireSessionsOnShutdown" required="false">
>> -       When a webapplication is being shutdown, Tomcat issues an expire call to each session to
>> -       notify all the listeners. If you wish for all sessions to expire on all nodes when
>> -       a shutdown occurs on one node, set this value to <code>true</code>.
>> -       Default value is <code>false</code>.
>> -     </attribute>
>> -     <attribute name="stateTransferTimeout" required="false">
>> -       The time in seconds to wait for a session state transfer to complete from another node
>> -       when a node is starting up.
>> -       Default value is <code>60</code> seconds.
>> -     </attribute>
>> +      <attribute name="domainReplication" required="false">
>> +        Set to true if you wish sessions to be replicated only to members that
>> +        have the same logical domain set. If set to false, session replication
>> +        will ignore the domain setting the
>> +        <code><a href="cluster-membership.html">&lt;Membership&gt;</a></code>
>> +        element.
>> +      </attribute>
>> +      <attribute name="expireSessionsOnShutdown" required="false">
>> +        When a web application is being shutdown, Tomcat issues an expire call
>> +        to each session to notify all the listeners. If you wish for all
>> +        sessions to expire on all nodes when a shutdown occurs on one node, set
>> +        this value to <code>true</code>.
>> +        Default value is <code>false</code>.
>> +      </attribute>
>> +      <attribute name="maxActiveSessions" required="false">
>> +        The maximum number of active sessions that will be created by this
>> +        Manager, or -1 (the default) for no limit. For this manager, all
>> +        sessions are counted as active sessions irrespective if whether or not
>> +        the current node is the primary node for the session.
>> +      </attribute>
>> +      <attribute name="stateTransferTimeout" required="false">
>> +        The time in seconds to wait for a session state transfer to complete
>> +        from another node when a node is starting up.
>> +        Default value is <code>60</code> seconds.
>> +      </attribute>
>>     </attributes>
>>   </subsection>
>>   <subsection name="org.apache.catalina.ha.session.BackupManager Attributes">
>>     <attributes>
>> -     <attribute name="mapSendOptions" required="false">
>> -       The backup manager uses a replicated map, this map is sending and
>> -       receiving messages. You can setup the flag for how this map is sending
>> -       messages, the default value is <code>6</code>(synchronous).<br/>
>> -       Note that if you use asynchronous messaging it is possible for update
>> -       messages for a session to be processed by the receiving node in a
>> -       different order to the order in which they were sent.
>> -     </attribute>
>> +      <attribute name="mapSendOptions" required="false">
>> +        The backup manager uses a replicated map, this map is sending and
>> +        receiving messages. You can setup the flag for how this map is sending
>> +        messages, the default value is <code>6</code>(synchronous).<br/>
>> +        Note that if you use asynchronous messaging it is possible for update
>> +        messages for a session to be processed by the receiving node in a
>> +        different order to the order in which they were sent.
>> +      </attribute>
>> +      <attribute name="maxActiveSessions" required="false">
>> +        The maximum number of active sessions that will be created by this
>> +        Manager, or -1 (the default) for no limit. For this manager, only
>> +        sessions where the current node is the primary node for the session are
>> +        considered active sessions.
>> +      </attribute>
>>     </attributes>
>>   </subsection>
>>  </section>
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe@(protected)
>> For additional commands, e-mail: dev-help@(protected)
>>
>>
>
>
>
> --
> Keiichi.Fujino
>



--
Keiichi.Fujino


Attachment: dev_108203.ezm (zipped)
Hi.

SimpleTcpCluster#sendClusterDomain called when domainReplication is
true is as follows now.

===SimpleTcpCluster#sendClusterDomain===
public void sendClusterDomain(ClusterMessage msg) {
 send(msg,null);
}
=== ===
the msg is transmitted to all cluster members.
domainReplication does not work correctly.

Tomcat7 and Tomcat6 have
org.apache.catalina.tribes.group.interceptors.DomainFilterInterceptor.
If DomainFilterInterceptor is used, session can be sent only to the
same domain.

Is DomainFilterInterceptor used instead of domainReplication?
Or, is SimpleTcpCluster#sendClusterDomain correctly fixed?

I intend to
remove domainReplication property in Tomcat7.0
and domainReplication property is changed to "Deprecated" in Tomcat6.0.

Any objections or advice?

--
Keiichi.Fujino


Attachment: dev_108204.ezm (zipped)
https://issues.apache.org/bugzilla/show_bug.cgi?id=49668

Arjen Knibbe <ArjenCornelis.Knibbe@(protected):

      What   |Removed              |Added
----------------------------------------------------------------------------
        Status|NEW                 |RESOLVED
     Resolution|                   |DUPLICATE

--- Comment #2 from Arjen Knibbe <ArjenCornelis.Knibbe@(protected) ---


*** This bug has been marked as a duplicate of bug 49159 ***

--
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.


Attachment: dev_108205.ezm (zipped)
https://issues.apache.org/bugzilla/show_bug.cgi?id=49159

Arjen Knibbe <ArjenCornelis.Knibbe@(protected):

      What   |Removed              |Added
----------------------------------------------------------------------------
          CC|                   |ArjenCornelis.Knibbe@(protected)
            |                   |ics.com

--- Comment #4 from Arjen Knibbe <ArjenCornelis.Knibbe@(protected) ---
*** Bug 49668 has been marked as a duplicate of this bug. ***

--
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.


Attachment: dev_108206.ezm (zipped)
On 29.07.2010 21:22, Mark Thomas wrote:
> On 29/07/2010 19:32, markt@(protected):
>> Author: markt
>> Date: Thu Jul 29 18:32:58 2010
>> New Revision: 980535
>>
>> URL: http://svn.apache.org/viewvc?rev=980535&view=rev
>> Log:
>> Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=49407
>> Make BackupManager and DeltaManager handle primary and backup sessions consistently
>
> I'm not at all convinced this is safe to backport to 6.0.x. What do
> others think?

I'm -0 to backporting.

Rainer


Attachment: dev_108207.ezm (zipped)
https://issues.apache.org/bugzilla/show_bug.cgi?id=49674

--- Comment #1 from Rainer Jung <rainer.jung@(protected) ---
This is a problem with the included version 1.0.2 of commons daemon and is
being tracked under

https://issues.apache.org/jira/browse/DAEMON-154

Hopefully there will be a 1.0.3 release of commons daemon without this defect
for the next Tomcat release.

You are right, the solution is to run "make clean" before "make".

--
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.


Attachment: dev_108208.ezm (zipped)
https://issues.apache.org/bugzilla/show_bug.cgi?id=49679

      Summary: Session ID changes
      Product: Tomcat 6
      Version: 6.0.24
      Platform: PC
    OS/Version: Windows XP
       Status: NEW
      Severity: normal
      Priority: P2
     Component: Cluster
    AssignedTo: dev@(protected)
    ReportedBy: osegarra@(protected)


Hi,

We are developing a web application wich uses session listeners and such kind
of stuff in order to control which users are loged in every time.

Nevertheless we have experienced a developement problem due to the session ID
changes when one node goes down.

30/07/2010 13:08:27 org.apache.catalina.ha.session.JvmRouteBinderValve
changeSessionID
FINE: Changed session from [18434EBFCF3D1009BBEEE5C02D370BCF.workerW37] to
[18434EBFCF3D1009BBEEE5C02D370BCF.workerW38]

I think session ID should not change its ID or should be a way to avoid this
rename processs.

Is there any workarround or fix for this issue ?

Thanks a lot.

--
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.


Attachment: dev_108209.ezm (zipped)
https://issues.apache.org/bugzilla/show_bug.cgi?id=49679

Mark Thomas <markt@(protected):

      What   |Removed              |Added
----------------------------------------------------------------------------
        Status|NEW                 |RESOLVED
     Resolution|                   |INVALID

--- Comment #1 from Mark Thomas <markt@(protected) ---
Bugzilla is not a support forum. Please use the users mailing list.

--
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.


Attachment: dev_108210.ezm (zipped)
https://issues.apache.org/bugzilla/show_bug.cgi?id=49679

--- Comment #2 from oscar <osegarra@(protected) ---
Sorry, you are right.

Thanks a lot.

(In reply to comment #1)
> Bugzilla is not a support forum. Please use the users mailing list.

--
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.


Attachment: dev_108211.ezm (zipped)
To whom it may engage...
   
This is an automated request, but not an unsolicited one. For
more information please visit http://gump.apache.org/nagged.html,
and/or contact the folk at general@(protected).

Project tomcat-trunk-test has an issue affecting its community integration.
This issue affects 1 projects.
The current state of this project is 'Failed', with reason 'Build Failed'.
For reference only, the following projects are affected by this:
  - tomcat-trunk-test : Java Servlet 3.0, Java Server Pages 2.2 & Expression Languag...


Full details are available at:
  http://vmgump.apache.org/gump/public/tomcat-trunk/tomcat-trunk-test/index.html

That said, some information snippets are provided here.

The following annotations (debug/informational/warning/error messages) were provided:
-DEBUG- Dependency on tomcat-trunk-dbcp exists, no need to add for property tomcat-dbcp-src.jar.
-DEBUG- Dependency on commons-daemon exists, no need to add for property commons-daemon.native.src.tgz.
-DEBUG- Dependency on commons-daemon exists, no need to add for property tomcat-native.tar.gz.
-DEBUG- Dependency on tomcat-trunk-dbcp exists, no need to add for property tomcat-dbcp.home.
-INFO- Failed with reason build failed
-INFO- Project Reports in: /srv/gump/public/workspace/tomcat-trunk/output/build/logs



The following work was performed:
http://vmgump.apache.org/gump/public/tomcat-trunk/tomcat-trunk-test/gump_work/build_tomcat-trunk_tomcat-trunk-test.html
Work Name: build_tomcat-trunk_tomcat-trunk-test (Type: Build)
Work ended in a state of : Failed
Elapsed: 6 mins 33 secs
Command Line: /usr/lib/jvm/java-6-sun/bin/java -Djava.awt.headless=true org.apache.tools.ant.Main -Dgump.merge=/srv/gump/public/gump/work/merge.xml -Dbuild.sysclasspath=only -Djunit.jar=/srv/gump/public/workspace/junit/dist/junit-30072010.jar -Dcommons-daemon.native.src.tgz=/srv/gump/public/workspace/apache-commons/daemon/dist/bin/commons-daemon-30072010-native-src.tar.gz -Dtomcat-native.tar.gz=/srv/gump/public/workspace/apache-commons/daemon/dist/bin/commons-daemon-30072010-native-src.tar.gz -Dexamples.sources.skip=true -Dtomcat-dbcp.home=/srv/gump/public/workspace/tomcat-trunk/tomcat-deps -Djdt.jar=/srv/gump/packages/eclipse/plugins/org.eclipse.jdt.core_3.4.2/jdtcore.jar -Dcommons-daemon.jar=/srv/gump/public/workspace/apache-commons/daemon/dist/commons-daemon-30072010.jar -Dtomcat-dbcp-src.jar=/srv/gump/public/workspace/tomcat-trunk/tomcat-deps/tomcat-dbcp-src.jar -Dcommons-pool.home=/srv/gump/public/workspace/apache-commons/pool -Dcommons-dbcp.home=/srv/gump/public/workspa
ce/apache-commons/dbcp -Dcheckstyle.jar=/srv/gump/public/workspace/checkstyle/target/dist/checkstyle-30072010/checkstyle-all-30072010.jar -Dtomcat-dbcp.jar=/srv/gump/public/workspace/tomcat-trunk/tomcat-deps/tomcat-dbcp-30072010.jar test
[Working Directory: /srv/gump/public/workspace/tomcat-trunk]
CLASSPATH: /usr/lib/jvm/java-6-sun/lib/tools.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/webapps/examples/WEB-INF/classes:/srv/gump/public/workspace/tomcat-trunk/output/testclasses:/srv/gump/public/workspace/ant/dist/lib/ant.jar:/srv/gump/public/workspace/ant/dist/lib/ant-launcher.jar:/srv/gump/public/workspace/ant/dist/lib/ant-jmf.jar:/srv/gump/public/workspace/ant/dist/lib/ant-junit.jar:/srv/gump/public/workspace/ant/dist/lib/ant-swing.jar:/srv/gump/public/workspace/ant/dist/lib/ant-apache-resolver.jar:/srv/gump/public/workspace/ant/dist/lib/ant-apache-xalan2.jar:/srv/gump/packages/junit3.8.1/junit.jar:/srv/gump/public/workspace/xml-commons/java/build/resolver.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/bin/bootstrap.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/bin/tomcat-juli.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/lib/annotations-api.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/lib/servlet-api.jar:/srv/gum
p/public/workspace/tomcat-trunk/output/build/lib/jsp-api.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/lib/el-api.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/lib/catalina.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/lib/catalina-ant.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/lib/tomcat-coyote.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/lib/jasper.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/lib/jasper-el.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/lib/catalina-tribes.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/lib/catalina-ha.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/lib/tomcat-api.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/lib/tomcat-util.jar:/srv/gump/packages/javamail-1.4/mail.jar:/srv/gump/packages/javamail-1.4/lib/mailapi.jar:/srv/gump/packages/jaf-1.1ea/activation.jar:/srv/gump/packages/eclipse/plugins/org.eclipse.jdt.core_3.4.2/jdtcore.jar:
/srv/gump/public/workspace/tomcat-trunk/tomcat-deps/tomcat-dbcp-30072010.jar:/srv/gump/public/workspace/apache-commons/daemon/dist/commons-daemon-30072010.jar:/srv/gump/public/workspace/junit/dist/junit-30072010.jar
---------------------------------------------
  [junit] INFO: Starting Servlet Engine: Apache Tomcat/7.0.1-dev
  [junit] Jul 30, 2010 9:28:40 PM org.apache.coyote.http11.Http11Protocol start
  [junit] INFO: Starting Coyote HTTP/1.1 on http-8001
  [junit] Jul 30, 2010 9:28:40 PM org.apache.coyote.http11.AbstractHttp11Protocol pause
  [junit] INFO: Pausing Coyote HTTP/1.1 on http-8001
  [junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 2.453 sec
  [junit] Jul 30, 2010 9:28:41 PM org.apache.catalina.core.StandardService stopInternal
  [junit] INFO: Stopping service Tomcat
  [junit] Jul 30, 2010 9:28:41 PM org.apache.coyote.http11.AbstractHttp11Protocol destroy
  [junit] INFO: Stopping Coyote HTTP/1.1 on http-8001
  [junit] Running org.apache.tomcat.util.http.TestCookiesNoStrictNamingSysProps
  [junit] Jul 30, 2010 9:28:43 PM org.apache.coyote.http11.Http11Protocol init
  [junit] INFO: Initializing Coyote HTTP/1.1 on http-8001
  [junit] Jul 30, 2010 9:28:43 PM org.apache.catalina.core.StandardService startInternal
  [junit] INFO: Starting service Tomcat
  [junit] Jul 30, 2010 9:28:43 PM org.apache.catalina.core.StandardEngine startInternal
  [junit] INFO: Starting Servlet Engine: Apache Tomcat/7.0.1-dev
  [junit] Jul 30, 2010 9:28:43 PM org.apache.coyote.http11.Http11Protocol start
  [junit] INFO: Starting Coyote HTTP/1.1 on http-8001
  [junit] Jul 30, 2010 9:28:43 PM org.apache.coyote.http11.AbstractHttp11Protocol pause
  [junit] INFO: Pausing Coyote HTTP/1.1 on http-8001
  [junit] Jul 30, 2010 9:28:44 PM org.apache.catalina.core.StandardService stopInternal
  [junit] INFO: Stopping service Tomcat
  [junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 2.24 sec
  [junit] Jul 30, 2010 9:28:44 PM org.apache.coyote.http11.AbstractHttp11Protocol destroy
  [junit] INFO: Stopping Coyote HTTP/1.1 on http-8001
  [junit] Running org.apache.tomcat.util.http.TestCookiesStrictSysProps
  [junit] Jul 30, 2010 9:28:46 PM org.apache.coyote.http11.Http11Protocol init
  [junit] INFO: Initializing Coyote HTTP/1.1 on http-8001
  [junit] Jul 30, 2010 9:28:46 PM org.apache.catalina.core.StandardService startInternal
  [junit] INFO: Starting service Tomcat
  [junit] Jul 30, 2010 9:28:46 PM org.apache.catalina.core.StandardEngine startInternal
  [junit] INFO: Starting Servlet Engine: Apache Tomcat/7.0.1-dev
  [junit] Jul 30, 2010 9:28:47 PM org.apache.coyote.http11.Http11Protocol start
  [junit] INFO: Starting Coyote HTTP/1.1 on http-8001
  [junit] Jul 30, 2010 9:28:47 PM org.apache.coyote.http11.AbstractHttp11Protocol pause
  [junit] INFO: Pausing Coyote HTTP/1.1 on http-8001
  [junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 2.556 sec
  [junit] Jul 30, 2010 9:28:48 PM org.apache.catalina.core.StandardService stopInternal
  [junit] INFO: Stopping service Tomcat
  [junit] Jul 30, 2010 9:28:48 PM org.apache.coyote.http11.AbstractHttp11Protocol destroy
  [junit] INFO: Stopping Coyote HTTP/1.1 on http-8001
  [junit] Running org.apache.tomcat.util.res.TestStringManager
  [junit] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 0.01 sec

BUILD FAILED
/srv/gump/public/workspace/tomcat-trunk/build.xml:957: The following error occurred while executing this line:
/srv/gump/public/workspace/tomcat-trunk/build.xml:1017: Some tests completed with a Failure. See /srv/gump/public/workspace/tomcat-trunk/output/build/logs for details.

Total time: 6 minutes 32 seconds
---------------------------------------------

To subscribe to this information via syndicated feeds:
- RSS: http://vmgump.apache.org/gump/public/tomcat-trunk/tomcat-trunk-test/rss.xml
- Atom: http://vmgump.apache.org/gump/public/tomcat-trunk/tomcat-trunk-test/atom.xml

============================== Gump Tracking Only ===
Produced by Gump version 2.3.
Gump Run 09001630072010, vmgump:vmgump-public:09001630072010
Gump E-mail Identifier (unique within run) #1.

--
Apache Gump
http://gump.apache.org/ [Instance: vmgump]

©2008 junlu.com - Jax Systems, LLC, U.S.A.