Author: peter_firmstone
Date: Sun May 19 00:21:31 2013
New Revision: 1484201

URL: http://svn.apache.org/r1484201
Log:
Suspect that arm test failure is caused by event arriving too fast and reset of 
listener not atomic

Modified:
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/leasing/LeasedSpaceListener.java
    
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/leasing/UseNotifyLeaseTest.java

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/leasing/LeasedSpaceListener.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/leasing/LeasedSpaceListener.java?rev=1484201&r1=1484200&r2=1484201&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/leasing/LeasedSpaceListener.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/leasing/LeasedSpaceListener.java
 Sun May 19 00:21:31 2013
@@ -75,11 +75,16 @@ public class LeasedSpaceListener
        return new BasicProxyTrustVerifier(proxy);
     }
 
-    public synchronized void notify(RemoteEvent theEvent)
+    public void notify(RemoteEvent theEvent)
             throws UnknownEventException, RemoteException {
-       logger.log(Level.FINEST, "notify called at " + (new java.util.Date()));
-        received = true;
-        this.notifyAll();
+        // Perform logging outside the synchronized block so we don't affect
+        // timing.
+        java.util.Date date = new java.util.Date();
+        synchronized (this){
+            received = true;
+            this.notifyAll();
+        }
+        logger.log(Level.INFO, "notify called at {0}", date);
     }
 
     /**

Modified: 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/leasing/UseNotifyLeaseTest.java
URL: 
http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/leasing/UseNotifyLeaseTest.java?rev=1484201&r1=1484200&r2=1484201&view=diff
==============================================================================
--- 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/leasing/UseNotifyLeaseTest.java
 (original)
+++ 
river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/test/impl/outrigger/leasing/UseNotifyLeaseTest.java
 Sun May 19 00:21:31 2013
@@ -80,8 +80,6 @@ public class UseNotifyLeaseTest extends 
             synchronized (this){
                 listener = new 
LeasedSpaceListener(getConfig().getConfiguration());
                 space = (JavaSpace) services[0];
-                JavaSpace space = this.space;
-                LeasedSpaceListener listener = this.listener;
                 EventRegistration reg = space.notify(aEntry, null, listener,
                         durationRequest, null);
                 reg = (EventRegistration)
@@ -105,7 +103,10 @@ public class UseNotifyLeaseTest extends 
             synchronized (this){
                 logger.log(Level.FINEST, "Writing entry {0}", ++count);
                 synchronized (listener) {
-                    listener.setReceived(false);
+                    // This doesn't look atomic, if the event is sent too
+                    // quickly, this will just set it false.  Alternative;
+                    // reset listener immediately after we receive it.
+//                    listener.setReceived(false);
 
                     /*
                      * Important to have the write inside the
@@ -121,6 +122,8 @@ public class UseNotifyLeaseTest extends 
                         listener.wait(callbackWait);
                         if (listener.isReceived()){
                             logger.log(Level.FINEST, "Wait done at {0}, 
received = {1}", new Object[]{new java.util.Date(), listener.isReceived()});
+                            // Reset listener, see comment above.
+                            listener.setReceived(false);
                             return true;
                         }
                     }


Reply via email to