Robert, It looks like the license headers for these two files got accidentally changed with this commit:
incubator/river/jtsk/trunk/src/com/sun/jini/mercury/MailboxImpl.java incubator/river/jtsk/trunk/src/com/sun/jini/mercury/package.html -- Peter On Mon, Apr 21, 2008 at 11:54:48AM +0000, [EMAIL PROTECTED] wrote: > Author: resendes > Date: Mon Apr 21 04:54:44 2008 > New Revision: 650114 > > URL: http://svn.apache.org/viewvc?rev=650114&view=rev > Log: > Fixes for RIVER-206, RIVER-241 and RIVER-247 > > Modified: > incubator/river/jtsk/trunk/src/com/sun/jini/mahalo/TxnManagerImpl.java > incubator/river/jtsk/trunk/src/com/sun/jini/mercury/MailboxImpl.java > > incubator/river/jtsk/trunk/src/com/sun/jini/mercury/RemoteEventDataCursor.java > incubator/river/jtsk/trunk/src/com/sun/jini/mercury/package.html > > Modified: > incubator/river/jtsk/trunk/src/com/sun/jini/mahalo/TxnManagerImpl.java > URL: > http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/src/com/sun/jini/mahalo/TxnManagerImpl.java?rev=650114&r1=650113&r2=650114&view=diff > ============================================================================== > --- incubator/river/jtsk/trunk/src/com/sun/jini/mahalo/TxnManagerImpl.java > (original) > +++ incubator/river/jtsk/trunk/src/com/sun/jini/mahalo/TxnManagerImpl.java > Mon Apr 21 04:54:44 2008 > @@ -131,7 +131,7 @@ > > private transient int taskthreads = 50; > private transient long tasktimeout = 1000 * 15; > - private transient float taskload = 3.0f; > + private transient float taskload = 1.0f; > > > /* Its important here to schedule SettlerTasks on a */ > > Modified: incubator/river/jtsk/trunk/src/com/sun/jini/mercury/MailboxImpl.java > URL: > http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/src/com/sun/jini/mercury/MailboxImpl.java?rev=650114&r1=650113&r2=650114&view=diff > ============================================================================== > --- incubator/river/jtsk/trunk/src/com/sun/jini/mercury/MailboxImpl.java > (original) > +++ incubator/river/jtsk/trunk/src/com/sun/jini/mercury/MailboxImpl.java Mon > Apr 21 04:54:44 2008 > @@ -1,19 +1,19 @@ > /* > - * Licensed to the Apache Software Foundation (ASF) under one > - * or more contributor license agreements. See the NOTICE file > - * distributed with this work for additional information > - * regarding copyright ownership. The ASF licenses this file > - * to you under the Apache License, Version 2.0 (the > - * "License"); you may not use this file except in compliance > - * with the License. You may obtain a copy of the License at > * > - * http://www.apache.org/licenses/LICENSE-2.0 > + * Copyright 2005 Sun Microsystems, Inc. > + * > + * Licensed under the Apache License, Version 2.0 (the "License"); > + * you may not use this file except in compliance with the License. > + * You may obtain a copy of the License at > + * > + * http://www.apache.org/licenses/LICENSE-2.0 > * > * Unless required by applicable law or agreed to in writing, software > * distributed under the License is distributed on an "AS IS" BASIS, > * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. > * See the License for the specific language governing permissions and > * limitations under the License. > + * > */ > package com.sun.jini.mercury; > > @@ -448,6 +448,18 @@ > * The variable is guarded by <code>destroyLock</code>. > */ > private boolean destroySucceeded = false; > + > + /** > + * When destroying the space, how long to wait for a clean > + * unexport (which allows the destroy call to return) before > + * giving up calling <code>unexport(true)</code> > + */ > + private long maxUnexportDelay; > + > + /** > + * Length of time to sleep between unexport attempts > + */ > + private long unexportRetryDelay; > > /** > * Object used to prevent access to this service during the service's > @@ -845,6 +857,12 @@ > // Start snapshot thread > snapshotter = new SnapshotThread(); > } > + > + maxUnexportDelay = Config.getLongEntry(config, MERCURY, > + "maxUnexportDelay", 2 * MINUTES, 0, Long.MAX_VALUE); > + > + unexportRetryDelay = Config.getLongEntry(config, MERCURY, > + "unexportRetryDelay", SECONDS, 1, Long.MAX_VALUE); > > // Start threads > notifier = new Notifier(config); > @@ -2465,7 +2483,7 @@ > } > } > } > - /* If no events currently availalbe, wait up to timeout and > try > + /* If no events currently available, wait up to timeout and > try > * again. > * Note: wait(0) means wait until notified (i.e. forever) > */ > @@ -3229,9 +3247,6 @@ > */ > private class DestroyThread extends Thread { > > - /** Maximum delay for unexport attempts */ > - private static final long MAX_UNEXPORT_DELAY = 2 * MINUTES; > - > /** Create a non-daemon thread */ > public DestroyThread() { > super("DestroyThread"); > @@ -3284,9 +3299,8 @@ > } > } > > - > - long endTime = > - System.currentTimeMillis() + MAX_UNEXPORT_DELAY; > + long now = System.currentTimeMillis(); > + long endTime = now + maxUnexportDelay; > if (endTime < 0) { // Check for overflow > endTime = Long.MAX_VALUE; > } > @@ -3294,19 +3308,31 @@ > /**TODO > * - trap IllegalStateException from unexport > */ > - while ((!unexported) && > - (System.currentTimeMillis() < endTime)) > - { > + while ((!unexported) && (now < endTime)) { > /* wait for any pending operations to complete */ > - unexported = > - exporter.unexport(false); > + unexported = exporter.unexport(false); > if (!unexported) { > if (adminLogger.isLoggable(Level.FINEST)) { > adminLogger.log(Level.FINEST, > "Waiting for in-progress calls to complete"); > } > try { > - sleep(1000); > + /* Sleep for a finite time instead of yield. > + * In most VMs yield is a no-op so if > + * unexport(false) is not working (say because > + * there is a blocking query in progress) a > + * yield here results in a very tight loop > + * (plus there may be no other runnable threads) > + */ > + final long sleepTime = > + Math.min(unexportRetryDelay, endTime - now); > + > + /* sleepTime must > 0, unexportRetryDelay is > + * > 0 and if now >= end_time we would have > + * fallen out of the loop > + */ > + sleep(sleepTime); > + now = System.currentTimeMillis(); > } catch (InterruptedException ie) { > if (adminLogger.isLoggable(Levels.HANDLED)) { > adminLogger.log(Levels.HANDLED, > > Modified: > incubator/river/jtsk/trunk/src/com/sun/jini/mercury/RemoteEventDataCursor.java > URL: > http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/src/com/sun/jini/mercury/RemoteEventDataCursor.java?rev=650114&r1=650113&r2=650114&view=diff > ============================================================================== > --- > incubator/river/jtsk/trunk/src/com/sun/jini/mercury/RemoteEventDataCursor.java > (original) > +++ > incubator/river/jtsk/trunk/src/com/sun/jini/mercury/RemoteEventDataCursor.java > Mon Apr 21 04:54:44 2008 > @@ -19,9 +19,9 @@ > > import java.io.Serializable; > /** > - * Trival class (struct) that simply holds the current read count > + * Trivial class (struct) that simply holds the current read count > * and the associated (next unread) read position. U?sed as the client-side > - * cookie for PersistentLog. > + * cookie for PersistentEventLog. > * @since 2.1 > */ > class RemoteEventDataCursor implements Serializable { > > Modified: incubator/river/jtsk/trunk/src/com/sun/jini/mercury/package.html > URL: > http://svn.apache.org/viewvc/incubator/river/jtsk/trunk/src/com/sun/jini/mercury/package.html?rev=650114&r1=650113&r2=650114&view=diff > ============================================================================== > --- incubator/river/jtsk/trunk/src/com/sun/jini/mercury/package.html > (original) > +++ incubator/river/jtsk/trunk/src/com/sun/jini/mercury/package.html Mon Apr > 21 04:54:44 2008 > @@ -1,19 +1,9 @@ > <!-- > - ! Licensed to the Apache Software Foundation (ASF) under one > - ! or more contributor license agreements. See the NOTICE file > - ! distributed with this work for additional information > - ! regarding copyright ownership. The ASF licenses this file > - ! to you under the Apache License, Version 2.0 (the > - ! "License"); you may not use this file except in compliance > - ! with the License. You may obtain a copy of the License at > ! > - ! http://www.apache.org/licenses/LICENSE-2.0 > + ! Copyright 2005, Sun Microsystems, Inc. > + ! Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0"> > + ! Apache License, Version 2.0</a>. > ! > - ! Unless required by applicable law or agreed to in writing, software > - ! distributed under the License is distributed on an "AS IS" BASIS, > - ! WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. > - ! See the License for the specific language governing permissions and > - ! limitations under the License. > !--> > > <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> > @@ -43,7 +33,7 @@ > > <p> > The JAR file <code>mercury.jar</code>, included in the <code>lib</code> > -subdirectory of the Apache River release > +subdirectory of the Jini(TM) Technology Starter Kit (starter kit) > installation, contains the classes for the three Mercury service > implementations. The <code>mercury-dl.jar</code> > and <code>jsk-dl.jar</code> files in the <code>lib-dl</code> subdirectory > @@ -373,6 +363,42 @@ > obtained at service start and restart. This entry is only used by > persistent implementations. > </table> > + > +<a name="maxUnexportDelay"></a> > +<table summary="Describes the maxUnexportDelay configuration entry" > + border="0" cellpadding="2"> > + <tr valign="top"> > + <th scope="col" summary="layout"> <font size="+1">•</font> > + <th scope="col" align="left" colspan="2"> <font size="+1"> > + <code>maxUnexportDelay</code></font> > + <tr valign="top"> <td>   <th scope="row" align="right"> > + Type: <td> <code>long</code> > + <tr valign="top"> <td>   <th scope="row" align="right"> > + Default: <td> <code>120000</code> (2 minutes) > + <tr valign="top"> <td>   <th scope="row" align="right"> > + > + Description: <td> How long to retry “nice” unexport attempts > before > + forcing the unexport. Part of destroying a Mercury server includes > + calling [EMAIL PROTECTED] net.jini.export.Exporter#unexport > + Exporter.unexport(boolean force)} on the <code>Exporter</code> used > + to export the server (see > + <a href="#serverExporter"><code>serverExporter</code></a>). The initial > + <code>unexport</code> call passes <code>false</code> for the value of > + the <code>force</code> parameter. This is done in order to allow the > + destroy call to return cleanly to the client. If the initial > + <code>unexport</code> call fails, Mercury will retry calling > + <code>unexport(false)</code> for up to <code>maxUnexportDelay</code> > + milliseconds before giving up and calling > + <code>unexport(true)</code>. <code>maxUnexportDelay</code> must be a > + non-negative long value. If <code>maxUnexportDelay</code> is zero > + then the very first call to <code>unexport</code> passes > + <code>true</code> for the value of the <code>force</code> parameter, > + no nice unexport attempt is made. Obtained at service start and > + restart. Note, the delay between attempted <code>unexport</code> > + calls is controlled by the <a > + href="#unexportRetryDelay"><code>unexportRetryDelay</code></a> > + configuration entry. > +</table> > > <a name="notificationsTaskManager"></a> > <table summary="Describes the notificationsTaskManager configuration entry" > @@ -480,7 +506,7 @@ > prepared by this preparer until they are being recovered. > </table> > > - > +<a name="serverExporter"></a> > <table summary="Describes the serverExporter configuration entry" > border="0" cellpadding="2"> > <tr valign="top"> > @@ -509,7 +535,30 @@ > the call to <code>getEntry</code> will supply the activation ID in > the <code>data</code> argument. This entry is obtained at service > start and restart. > - </table> <p> > + </table> > + > +<a name="unexportRetryDelay"></a> > +<table summary="Describes the unexportRetryDelay configuration entry" > + border="0" cellpadding="2"> > + <tr valign="top"> > + <th scope="col" summary="layout"> <font size="+1">•</font> > + <th scope="col" align="left" colspan="2"> <font size="+1"> > + <code>unexportRetryDelay</code></font> > + <tr valign="top"> <td>   <th scope="row" align="right"> > + Type: <td> <code>long</code> > + <tr valign="top"> <td>   <th scope="row" align="right"> > + Default: <td> <code>1000</code> (1 second) > + <tr valign="top"> <td>   <th scope="row" align="right"> > + > + Description: <td> When destroying a Mercury server how long to > + wait between unexport attempts. <code>unexportRetryDelay</code> must > + be a positive long value. When destroying itself Mercury will sleep > + for <code>unexportRetryDelay</code> milliseconds between [EMAIL > PROTECTED] > + net.jini.export.Exporter#unexport Exporter.unexport} calls. Obtained > + at service start and restart. See <a > + href="#maxUnexportDelay"><code>maxUnexportDelay</code></a> for > + additional details. > + </table> <P> > > <a name="access_control"> > <h2>Access Control Permission Targets</h2> > @@ -808,7 +857,7 @@ > <li> <a href="#persistent_jrmp">Persistent</a> > <li> <a href="#activatable_jrmp">Activatable</a> > </ul> > -<li> Jini extensible remote invocation (Jini ERI) configurations > +<li> Jini(TM) extensible remote invocation (Jini ERI) configurations > <ul> > <li> <a href="#transient">Transient</a> > <li> <a href="#persistent">Persistent</a> > @@ -826,7 +875,7 @@ > <ul> > <li> The Java(TM) 2 Platform, Standard Edition, (J2SE(TM)) has been > installed, and its commands are available in the current path > -<li> The Apache River release has been installed in the > +<li> The starter kit has been installed in the > <var><b>install_dir</b></var> directory > <li> The example configuration and policy files described below are > available in the <var><b>config_dir</b></var> directory > @@ -876,7 +925,7 @@ > > Use this security policy file for starting and running all Mercury > configurations. This file grants all permissions to local code included > -in the <code>lib</code> subdirectory of the Apache River release > installation.<p> > +in the <code>lib</code> subdirectory of the starter kit installation.<p> > > <blockquote> > <pre> > >
