home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: comp.sys.isis
- Path: sparky!uunet!europa.asd.contel.com!darwin.sura.net!udel!rochester!cornell!ken
- From: ken@cs.cornell.edu (Ken Birman)
- Subject: Re: blocking requests
- Message-ID: <1992Sep15.203020.3360@cs.cornell.edu>
- Organization: Cornell Univ. CS Dept, Ithaca NY 14853
- References: <15353@borg.cs.unc.edu>
- Distribution: usa
- Date: Tue, 15 Sep 1992 20:30:20 GMT
- Lines: 44
-
- In article <15353@borg.cs.unc.edu> krishnar@weiss.cs.unc.edu (Rajarama Krishnan) writes:
- >In my ISIS application a process has to join a process group. It has to get
- >some data from the group. I didnt put that in the state transfer routine
- >because I am also using logging and I dont want all this data to be passed
- >during logging. To get around problem, what I am doing is join the group and
- >then get the data separately. But this causes a problem. I start getting
- >requests even before I have transferred this data. How can I avoid this?
- >Is there anyway of blocking requests after the pg_join till I explicitly
- >allow the requests to come?
-
- There is a subtle way to do what you want. You should code your state
- transfer routine so that the receive routine in the process that is
- joining does an RPC to a process (or group) that has the data it wants
- from within the state receive routine.
-
- The key thing is that it has to be inside the reception routine when it
- does the call.
-
- At this stage of a computation, new requests are still blocked out, and
- they will remain blocked out in this case until the RPC finishes and
- hence the state reception routine finishes. At least, I think that is
- what will happen.
-
- If this doesn't work, try initiating the operation from the send state
- routine in the process doing the transfer out. E.g. the group sends
- a message into the new process "while state transfer is under way" that
- causes it to load the extra state. I think this would work, too.
-
- To avoid having the state logged, I think you just need it to show up
- as a reply to a message -- replies aren't logged.
-
- A third approach would be to use isis_connect to make a TCP connection
- and send the data "out of band" over the TCP socket, during the join.
- Isis doesn't log data on TCP connections created this way.
-
- All of these slip the data transfer in during the state transfer
- period, when you have requests blocked because the transfer is underway.
- In fact, what you are trying to do pushes a little beyond what the
- Isis join model can currently accomodate. But, hopefully one of these
- tricks will work.
- --
- Kenneth P. Birman E-mail: ken@cs.cornell.edu
- 4105 Upson Hall, Dept. of Computer Science TEL: 607 255-9199 (office)
- Cornell University Ithaca, NY 14853 (USA) FAX: 607 255-4428
-