Experience with notify (long post)

Jim Goodwin <[email protected]>
Newsgroups gmane.comp.java.sun.javaspaces
Message-ID <LISTSERV%[email protected]>
John McClain expressed interest in experience with JavaSpace05 notify.

I have some to report, and it was ... odd.

I'll be interested in his and everyone's responses.

Thanks in advance

Jim

====== Summary of behavior

In summary, everything works fine, including MatchSet, except for notify.

I get notifications long after all activity should have stopped.
I'm talking a half-hour here, on good PC with nothing else going on and
only 7 entries in JavaSpace. I get lots and lots of repeats, and some
notifications for entries that were actually removed many minutes earlier.

In particular, you can see in my transcript below that session 1 was killed
(taken) at 22:56:35, and yet reported by notify 9 times after that, the last
time at 23:28:45, half an hour later.

At the end I post a transcript; I'll first describe what my program is doing,
the benchmark sequence that produced the transcript, & my version numbers.

======= What my program is doing

I have an Entry called SessionEntry1.  It  has half a dozen fields, all Integer
or short Strings, and no methods, non-public data, or any
superclass or interface other than Entry.

My application can "start new sessions" which means to post an instance
of SessionEntry1 to JavaSpace, and "kill a session" meaning to take it out
again.

The SessionEntry1 instances are numbered sequentially. Although this uses
JavaSpaces, it does not involve notify and appears to work fine. I use a
singleton instance of an entry called NextFreeSession, with a counter.
To allocate a new ID, I  take it, increment it, and write it again.
This is all done in the same transaction as the write of a new SessionEntry.
Sessions are accordingly numbered from 1 in the order in which
their ID's were allocated.

I wrote a Listener and asked to have it notified of any Session entries.
The code for registering it, abstracted from other context, is:


 templates = new ArrayList<Entry>();
 templates.add(new SessionEntry1());
...
 jsgmr = manager; // Instance of JavaSpace05
 Transaction txn = null;
 boolean visibilityOnly = false;
 exporter = new BasicJeriExporter(TcpServerEndpoint.getInstance(0),
     new BasicILFactory());
 stub = (RemoteEventListener)exporter.export(this);
 MarshalledObject handback = null;

 jsgmr.registerForAvailabilityEvent(templates;, txn, visibilityOnly, stub,
      Lease.FOREVER, handback);


The notify code is the following

 public void notify(RemoteEvent event) throws RemoteException {
  AvailabilityEvent avEvent = (AvailabilityEvent)event;
  Entry entry = null;
  try {
   entry = avEvent.getEntry();
  } catch (UnusableEntryException e1) {
   throw new MAKSystemException("Listener.notify", e1);
  }
  SessionEntry1 entry1 = (SessionEntry1)entry;

  System.out.println("In SessionListener.notify() - Session ID = " +
entry1.sessionID + " at " + new Date());

  // Pro tem, ignore entry1 and just refresh everything in my GUI
  try {
   launchView.refresh(true, true);
  } catch (TransactionException e) {
   throw new MAKSystemException(e);
  } catch (UnusableEntryException e) {
   throw new MAKSystemException(e);
  }
 }

The call to launchview.refresh() uses MatchSet to get the complete list of
Session entries, and refresh my GUI.

The transcript shows:

 All calls to Start (write an entry)
 All calls to Kill (take it out again)
 All calls to notify, showing the ID of the session passed in the Event

After each of these, there is a call to refresh the GUI, which calls
JavaSpace05.contents.
This is also traced and prints "JavaSpace05.contents returned at <time>" and
then lists the
matchset below it. The first call, on the first line of the transcript, is
the GUI's
initial refresh, and since the JavaSpace is freshly started, there are no
entries.

======== Benchmark sequence that produced the transcript

OK, that was the code. Now from my GUI, I performed the following. Each step
is a mouse click
or two, and I didn't wait between them, but just fired them off one after
the other. They
did seem to get their Id's assigned in the expected order so the sequence was:

 1. Created session 1
 2. Created session 2
 3. Killed session 1

 4. Created session 3
 5. Created session 4
 6. Killed session 3

 7. Created session 5
 8. Created session 6
 9. Killed session 5

Then I let it run for an hour undisturbed.


This was all performed from a single client process; there were no other
processes,
except the Jini services themselves (JavaSpaces, Transaction MGR, & lookup).
In particular nobody else was using the JavaSpace.

======  Version info:

3 MHz approx PC running all processes, and not doing much else.
Winows XP SP 2
Eclipse 3.1.0, and the PDE (Plugin Development Environment).
My app is run under the Eclipse debugger.
JRE is 1.5.0-06.
Using Inca X CE 4.3.0.
In the Inca X Runtime view, it shows all three Jini procs as  Sun version 2.1

======== The transcript itself

JavaSpace05.contents returned at Fri Mar 17 22:55:42 EST 2006
New session with ID = 1 written & committed at Fri Mar 17 22:56:28 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:56:28 EST 2006
     Session ID = 1
In SessionListener.notify() - Session ID = 1 at Fri Mar 17 22:56:28 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:56:28 EST 2006
     Session ID = 1
In SessionListener.notify() - Session ID = 1 at Fri Mar 17 22:56:29 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:56:29 EST 2006
     Session ID = 1
New session with ID = 2 written & committed at Fri Mar 17 22:56:30 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:56:30 EST 2006
     Session ID = 1
     Session ID = 2
In SessionListener.notify() - Session ID = 2 at Fri Mar 17 22:56:30 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:56:30 EST 2006
     Session ID = 1
     Session ID = 2
In SessionListener.notify() - Session ID = 2 at Fri Mar 17 22:56:31 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:56:31 EST 2006
     Session ID = 1
     Session ID = 2
In SessionListener.notify() - Session ID = 1 at Fri Mar 17 22:56:34 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:56:34 EST 2006
     Session ID = 1
     Session ID = 2
Session 1 killed at Fri Mar 17 22:56:35 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:56:35 EST 2006
     Session ID = 2
In SessionListener.notify() - Session ID = 2 at Fri Mar 17 22:56:36 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:56:36 EST 2006
     Session ID = 2
New session with ID = 3 written & committed at Fri Mar 17 22:56:37 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:56:37 EST 2006
     Session ID = 2
     Session ID = 3
In SessionListener.notify() - Session ID = 3 at Fri Mar 17 22:56:37 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:56:37 EST 2006
     Session ID = 2
     Session ID = 3
In SessionListener.notify() - Session ID = 3 at Fri Mar 17 22:56:38 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:56:38 EST 2006
     Session ID = 2
     Session ID = 3
New session with ID = 4 written & committed at Fri Mar 17 22:56:39 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:56:39 EST 2006
     Session ID = 2
     Session ID = 3
     Session ID = 4
In SessionListener.notify() - Session ID = 4 at Fri Mar 17 22:56:39 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:56:39 EST 2006
     Session ID = 2
     Session ID = 3
     Session ID = 4
In SessionListener.notify() - Session ID = 4 at Fri Mar 17 22:56:40 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:56:40 EST 2006
     Session ID = 2
     Session ID = 3
     Session ID = 4
In SessionListener.notify() - Session ID = 3 at Fri Mar 17 22:56:43 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:56:43 EST 2006
     Session ID = 2
     Session ID = 3
     Session ID = 4
Session 3 killed at Fri Mar 17 22:56:43 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:56:43 EST 2006
     Session ID = 2
     Session ID = 4
In SessionListener.notify() - Session ID = 1 at Fri Mar 17 22:56:44 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:56:44 EST 2006
     Session ID = 2
     Session ID = 4
New session with ID = 5 written & committed at Fri Mar 17 22:56:45 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:56:45 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 5
In SessionListener.notify() - Session ID = 5 at Fri Mar 17 22:56:45 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:56:45 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 5
In SessionListener.notify() - Session ID = 4 at Fri Mar 17 22:56:45 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:56:45 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 5
In SessionListener.notify() - Session ID = 5 at Fri Mar 17 22:56:46 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:56:46 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 5
New session with ID = 6 written & committed at Fri Mar 17 22:56:46 EST 2006
In SessionListener.notify() - Session ID = 6 at Fri Mar 17 22:56:46 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:56:46 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 5
     Session ID = 6
JavaSpace05.contents returned at Fri Mar 17 22:56:46 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 5
     Session ID = 6
In SessionListener.notify() - Session ID = 2 at Fri Mar 17 22:56:46 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:56:46 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 5
     Session ID = 6
In SessionListener.notify() - Session ID = 6 at Fri Mar 17 22:56:47 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:56:47 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 5
     Session ID = 6
Session 5 killed at Fri Mar 17 22:56:49 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:56:49 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 5 at Fri Mar 17 22:56:51 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:56:51 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 6 at Fri Mar 17 22:56:52 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:56:52 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 3 at Fri Mar 17 22:56:53 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:56:53 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 4 at Fri Mar 17 22:56:55 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:56:55 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 5 at Fri Mar 17 22:57:01 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:57:01 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 6 at Fri Mar 17 22:57:02 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:57:02 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 1 at Fri Mar 17 22:57:44 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:57:44 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 2 at Fri Mar 17 22:57:46 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:57:46 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 3 at Fri Mar 17 22:57:53 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:57:53 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 4 at Fri Mar 17 22:57:55 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:57:55 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 5 at Fri Mar 17 22:58:01 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:58:01 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 6 at Fri Mar 17 22:58:02 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:58:02 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 1 at Fri Mar 17 22:58:44 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:58:44 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 2 at Fri Mar 17 22:58:46 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:58:46 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 3 at Fri Mar 17 22:58:53 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:58:53 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 4 at Fri Mar 17 22:58:55 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:58:55 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 5 at Fri Mar 17 22:59:01 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:59:01 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 6 at Fri Mar 17 22:59:03 EST 2006
JavaSpace05.contents returned at Fri Mar 17 22:59:03 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 1 at Fri Mar 17 23:03:44 EST 2006
JavaSpace05.contents returned at Fri Mar 17 23:03:44 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 2 at Fri Mar 17 23:03:46 EST 2006
JavaSpace05.contents returned at Fri Mar 17 23:03:46 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 3 at Fri Mar 17 23:03:53 EST 2006
JavaSpace05.contents returned at Fri Mar 17 23:03:53 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 4 at Fri Mar 17 23:03:55 EST 2006
JavaSpace05.contents returned at Fri Mar 17 23:03:55 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 5 at Fri Mar 17 23:04:01 EST 2006
JavaSpace05.contents returned at Fri Mar 17 23:04:01 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 6 at Fri Mar 17 23:04:03 EST 2006
JavaSpace05.contents returned at Fri Mar 17 23:04:03 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 1 at Fri Mar 17 23:08:44 EST 2006
JavaSpace05.contents returned at Fri Mar 17 23:08:44 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 2 at Fri Mar 17 23:08:46 EST 2006
JavaSpace05.contents returned at Fri Mar 17 23:08:46 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 3 at Fri Mar 17 23:08:53 EST 2006
JavaSpace05.contents returned at Fri Mar 17 23:08:53 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 4 at Fri Mar 17 23:08:55 EST 2006
JavaSpace05.contents returned at Fri Mar 17 23:08:55 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 5 at Fri Mar 17 23:09:01 EST 2006
JavaSpace05.contents returned at Fri Mar 17 23:09:01 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 6 at Fri Mar 17 23:09:03 EST 2006
JavaSpace05.contents returned at Fri Mar 17 23:09:03 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 1 at Fri Mar 17 23:13:44 EST 2006
JavaSpace05.contents returned at Fri Mar 17 23:13:44 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 2 at Fri Mar 17 23:13:46 EST 2006
JavaSpace05.contents returned at Fri Mar 17 23:13:46 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 3 at Fri Mar 17 23:13:53 EST 2006
JavaSpace05.contents returned at Fri Mar 17 23:13:53 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 4 at Fri Mar 17 23:13:55 EST 2006
JavaSpace05.contents returned at Fri Mar 17 23:13:55 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 5 at Fri Mar 17 23:14:01 EST 2006
JavaSpace05.contents returned at Fri Mar 17 23:14:01 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 6 at Fri Mar 17 23:14:03 EST 2006
JavaSpace05.contents returned at Fri Mar 17 23:14:03 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 1 at Fri Mar 17 23:18:44 EST 2006
JavaSpace05.contents returned at Fri Mar 17 23:18:45 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 2 at Fri Mar 17 23:18:47 EST 2006
JavaSpace05.contents returned at Fri Mar 17 23:18:47 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 3 at Fri Mar 17 23:18:53 EST 2006
JavaSpace05.contents returned at Fri Mar 17 23:18:53 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 4 at Fri Mar 17 23:18:55 EST 2006
JavaSpace05.contents returned at Fri Mar 17 23:18:55 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 5 at Fri Mar 17 23:19:01 EST 2006
JavaSpace05.contents returned at Fri Mar 17 23:19:01 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 6 at Fri Mar 17 23:19:03 EST 2006
JavaSpace05.contents returned at Fri Mar 17 23:19:03 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 1 at Fri Mar 17 23:23:45 EST 2006
JavaSpace05.contents returned at Fri Mar 17 23:23:45 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 2 at Fri Mar 17 23:23:47 EST 2006
JavaSpace05.contents returned at Fri Mar 17 23:23:47 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 3 at Fri Mar 17 23:23:53 EST 2006
JavaSpace05.contents returned at Fri Mar 17 23:23:53 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 4 at Fri Mar 17 23:23:55 EST 2006
JavaSpace05.contents returned at Fri Mar 17 23:23:55 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 5 at Fri Mar 17 23:24:01 EST 2006
JavaSpace05.contents returned at Fri Mar 17 23:24:01 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 6 at Fri Mar 17 23:24:03 EST 2006
JavaSpace05.contents returned at Fri Mar 17 23:24:03 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 1 at Fri Mar 17 23:28:45 EST 2006
JavaSpace05.contents returned at Fri Mar 17 23:28:45 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 2 at Fri Mar 17 23:28:47 EST 2006
JavaSpace05.contents returned at Fri Mar 17 23:28:47 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 3 at Fri Mar 17 23:28:53 EST 2006
JavaSpace05.contents returned at Fri Mar 17 23:28:53 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 4 at Fri Mar 17 23:28:55 EST 2006
JavaSpace05.contents returned at Fri Mar 17 23:28:55 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 5 at Fri Mar 17 23:29:01 EST 2006
JavaSpace05.contents returned at Fri Mar 17 23:29:01 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
In SessionListener.notify() - Session ID = 6 at Fri Mar 17 23:29:03 EST 2006
JavaSpace05.contents returned at Fri Mar 17 23:29:03 EST 2006
     Session ID = 2
     Session ID = 4
     Session ID = 6
Run terminated at Fri Mar 17 23:42:01 EST 2006

===========================================================================
To unsubscribe, send email to [email protected] and include in the body
of the message "signoff JAVASPACES-USERS".  For general help, send email to
[email protected] and include in the body of the message "help".

To view past JAVASPACES-USERS postings, please see:
http://archives.java.sun.com/archives/javaspaces-users.html
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.