Status Report: jini (6-1-2001)


 

Last Week

Summary: Sherif worked on the monitor (POP3 Client) together with wrapping the email messages into email objects and created a simple setup class. Boris worked on the router and on the jini setup. Ian implemented the storage core service using T-Spaces. The 3 of us tried to start the storage service as a jini service yesterday but have not yet succeeded.  

Update:  Shortly after the meeting Boris got our first service -- skeleton of the router -- to launch and register itself with the lookup service.

Ian

  • Implemented Storage

 

Sherif

  • Implemented Monitor

 

Boris

  • Continued learning Jini
  • Created utility for running Jini services
  • Started Implementing the router


 

This Week

Summary:

The goal by the end of the week is to have the whole email service functioning correctly. That is Monitor collects email, passes it on tot the router, which then decides whether it has seen a human readable message or a control message and accordigly decide on whether to store the email or not. The user would then be able to contact to a POP3 server (jini service) and collect all his new email. The POP3 server is to be implemented this week too.  Additional research should also be done to allow us to integrate event listener and administrative interfaces into our services.

Ian

  • POP3 server
  • Storage and POP3 server running as jini services

Sherif

  • Finish the Pop3 Client
  • Integrate POP3 Client with Router and Storage
  • Start working on Setup Client

Boris

  • Complete the Router
  • Integrate Router with other components.
  • Do the research and add administration and even listening to router.


 

Deliverables for next tuesday

Summary: Working Email system

Ian

  • POP3 server
  • POP3 server and Storage interacting on jini network

Sherif

  • Pop3 Client as a Jini Service (It is already a normal service)
  • Initial Setup Mechanism

Boris

  • Fully functional Router with some administrative interface.
  • Router integrated with other components.


 

Time spent

Ian

Please go to my time tracker, click on "Universal Inbox", and log in as "guest" (no password). (I'll work put this page on this site in the future.)

Sherif

Ian's time tracker contains my information as well.

Boris

If Ian ever has the time, he'll create something to export data from this time tracker.  Until then, go too his time tracker.


 

Comments

Ian

 

Sherif

1. Well just like Boris I'm also suffering on the Unix side too but with the help of the group members and trial and error I'm getting there

2. Well I got the started HTTP server and rmid with no problems at all, however when I try to start Reggie I get an obscene number of exceptions. The GUI tool supplied by SUN was not even helpful enough

Boris

1.    I've never been much of a Unix user so it took me quite a bit of time to learn enough about writing scripts to be able to start Jini services.  Should you ever need to write a bash script remember,   while [$input!="q"]   is incorrect as is   while [ $input!="q" ]  .  while [ $input != "q" ]  is correct.  Imagine my delight!

2.    I have some reservations regarding multicasting lookup service discovery.  The browser application provided by Sun is supposed to be able to locate the lookup services on the network.  Yet, my experience includes the pleasure of watching it find  "akadia.netlab.uky.edu", "sevak.isi.edu", "paola", "sailboat.isi.edu" and never locate my reggie that was exported through the same http server (on tahiti) as the browser itself.

3.    I'm also a bit concerned about communicating with one.box clients via RMI.  If a thread of POP3 client calls the Router's function ProcessMessage, it will have to wait for the router to return before it goes on collecting more email.  In our case (dealing with emails and not really having to be scalable), it's not a major problem... not if the service whose function router calls is a good service.  What I mean is that the one.box network service might have been created by an outside company (e.g. fridge manufacturer), so if it's not written properly, it might take a long time (or even forever) to perform its function once the message is received.  If it received messages via events, its flaw would not impact anything else.  With synchronous communications, however, we're going to have a POP3 client's thread waiting on this unreliable service and resources being wasted on the machine that runs the router.  This being the case, I'm considering switching to event communication with one.box-non-core-services at least.  I don't know if we'll have time for that, but if we do, I'm currently inclined to advocate such a change.

4.    I just had a thought I wanted to write down.  Another possibility for handling some of the problems I described above is mixing synchronous and asynchronous communication.  It's simple and nothing new.  I'm thinking that a service could get the message using RMI, throw exceptions if something's wrong.  Then store the message in a persistent storage and throw an event to itself to process the message.  So basically it wouldn't be very different from other some systems (like OSs) which can send asynchronous message from one part of itself to another.  This could possibly work in our environment, but it would certainly place more constrains on the services of one.box.

5.    Yet more about what I learned...  I was recently completely confused about how rmi works.  I was asking myself what would happen on a jini network if three clients called some function X() of object x at the same time.  For a while I actually convinced myself that it would somehow create a thread inside the java VM that runs x.  I even went to talk to Adam about the synchronization problems that arise from it.  He must not have understood what I was talking about because he seemed to buy my concerns about synchronization and being careful with member variables.  The clue that my idea was wrong is the phrase "...it would somehow create a thread...", where somehow stands for "I can't even begin to imagine what it might be doing so I suspect magic".  Now that I thought about this some more (and remembered some of the things I read), I think rmid just loads another instance of x into a new java VM which the next client can then access.  (Note to self:  find out if service IDs are shared by multiple instances of the same active object -- possibly not.  This could be a problem for us.)

6.    Again this will be a paragraph on what I learned.  Up until a few days ago I didn't really understand what rmid did or how active objects were created.  Then I saw some nice human being's web page on reggie (sun-provided lookup service).  It appears that reggie starts up, registers with the lookup service and quits.  Its object is created and ran by rmid when the first request for a lookup service comes in.  This not only explains some of the strange things I've seen while running reggie, but also explains to me the purpose of rmid and those strange main functions the services are supposed to have.

7.    Dan has just confessed that he's an alien.  He promptly explained that what he meant was that he wasn't born in the U.S., but his earlier phrase makes me wonder... what was it... oh, yes! -- "My father doesn't like me associating with you pathetic homo sapiens."

 


 

 

Ian Shafer
Sherif Fanous
Boris Startsev