Author: juanpablo
Date: Sun Dec 22 23:24:57 2013
New Revision: 1553048
URL: http://svn.apache.org/r1553048
Log:
* 2.10.0-rc2-3
* fixed lots of EmptyStackException while checking WatchDogs' state
Modified:
jspwiki/trunk/ChangeLog
jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/Release.java
jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/WatchDog.java
Modified: jspwiki/trunk/ChangeLog
URL:
http://svn.apache.org/viewvc/jspwiki/trunk/ChangeLog?rev=1553048&r1=1553047&r2=1553048&view=diff
==============================================================================
--- jspwiki/trunk/ChangeLog (original)
+++ jspwiki/trunk/ChangeLog Sun Dec 22 23:24:57 2013
@@ -1,10 +1,21 @@
+2013-12-22 Juan Pablo Santos (juanpablo AT apache DOT org)
+
+ * 2.10.0-rc2-3
+
+ * fixed lots of EmptyStackException while checking WatchDogs' state
+
+2013-12-22 Harry Metske ([email protected])
+
+ * 2.10.0-rc2-2
+
+ * fixed NPE when using custom policy file
+
2013-12-21 Harry Metske ([email protected])
- * 2.10.1-svn-1
+ * 2.10.0-rc2-1
* JSPWIKI-807: VersioningFileProvider pageExist failure to properly
handle latest version
-
2013-12-17 Juan Pablo Santos (juanpablo AT apache DOT org)
* 2.10.0 - first RC
Modified: jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/Release.java
URL:
http://svn.apache.org/viewvc/jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/Release.java?rev=1553048&r1=1553047&r2=1553048&view=diff
==============================================================================
--- jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/Release.java
(original)
+++ jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/Release.java Sun
Dec 22 23:24:57 2013
@@ -52,7 +52,7 @@ public final class Release {
* <p>
* If the POSTFIX is empty, it is not added to the version string.
*/
- private static final String POSTFIX = "svn";
+ private static final String POSTFIX = "rc2";
/** The JSPWiki major version. */
public static final int VERSION = 2;
@@ -72,7 +72,7 @@ public final class Release {
* <p>
* If the build identifier is empty, it is not added.
*/
- public static final String BUILD = "1";
+ public static final String BUILD = "3";
/**
* This is the generic version string you should use when printing out
the version. It is of
Modified: jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/WatchDog.java
URL:
http://svn.apache.org/viewvc/jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/WatchDog.java?rev=1553048&r1=1553047&r2=1553048&view=diff
==============================================================================
--- jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/WatchDog.java
(original)
+++ jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/WatchDog.java Sun
Dec 22 23:24:57 2013
@@ -52,13 +52,13 @@ import org.apache.log4j.Logger;
public final class WatchDog {
private Watchable m_watchable;
- private Stack<State> m_stateStack = new Stack<State>();
+ private Stack< State > m_stateStack = new Stack< State >();
private boolean m_enabled = true;
private WikiEngine m_engine;
- private static final Logger log =
Logger.getLogger(WatchDog.class.getName());
+ private static final Logger log = Logger.getLogger( WatchDog.class );
- private static HashMap<Integer,WeakReference<WatchDog>> c_kennel = new
HashMap<Integer,WeakReference<WatchDog>>();
+ private static HashMap< Integer, WeakReference< WatchDog > > c_kennel =
new HashMap< Integer, WeakReference< WatchDog > >();
private static WikiBackgroundThread c_watcherThread;
@@ -76,7 +76,7 @@ public final class WatchDog {
Thread t = Thread.currentThread();
WatchDog wd = null;
- WeakReference<WatchDog> w = c_kennel.get( t.hashCode() );
+ WeakReference< WatchDog > w = c_kennel.get( t.hashCode() );
if( w != null ) {
wd = w.get();
@@ -84,7 +84,7 @@ public final class WatchDog {
if( w == null || wd == null ) {
wd = new WatchDog( engine, t );
- w = new WeakReference<WatchDog>(wd);
+ w = new WeakReference< WatchDog >( wd );
synchronized( c_kennel ) {
c_kennel.put( t.hashCode(), w );
@@ -248,9 +248,26 @@ public final class WatchDog {
}
}
} catch( EmptyStackException e ) {
- log.error( "Stack is empty!", e );
+ log.error( "Stack for " + m_watchable.getName() + " is empty!", e
);
}
-
+ }
+
+ /**
+ * helper to see if the associated stateStack is not empty.
+ *
+ * @return {@code true} if not empty, {@code false} otherwise.
+ */
+ public boolean isStateStackNotEmpty() {
+ return m_stateStack != null && !m_stateStack.isEmpty();
+ }
+
+ /**
+ * helper to see if the associated watchable is alive.
+ *
+ * @return {@code true} if it's alive, {@code false} otherwise.
+ */
+ public boolean isWatchableAlive() {
+ return m_watchable != null && m_watchable.isAlive();
}
private void check() {
@@ -260,7 +277,7 @@ public final class WatchDog {
synchronized( m_stateStack ) {
try {
- WatchDog.State st = m_stateStack.peek();
+ State st = m_stateStack.peek();
long now = System.currentTimeMillis();
if( now > st.getExpiryTime() ) {
@@ -272,8 +289,7 @@ public final class WatchDog {
m_watchable.timeoutExceeded(st.getState());
}
} catch( EmptyStackException e ) {
- // FIXME: Do something?
- log.error( "Stack is empty!", e );
+ log.error( "Stack for " + m_watchable.getName() + " is empty!",
e );
}
}
}
@@ -362,11 +378,9 @@ public final class WatchDog {
Map.Entry< Integer, WeakReference< WatchDog > > entry =
i.next();
WeakReference< WatchDog > wr = entry.getValue();
-
- WatchDog w = (WatchDog) wr.get();
-
+ WatchDog w = wr.get();
if( w != null ) {
- if( w.m_watchable != null && w.m_watchable.isAlive() )
{
+ if( w.isWatchableAlive() && w.isStateStackNotEmpty() )
{
w.check();
} else {
c_kennel.remove( entry.getKey() );
@@ -378,6 +392,7 @@ public final class WatchDog {
WatchDog.scrub();
}
+
}
/**