• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Tim Cooke
  • Liutauras Vilda
  • Jeanne Boyarsky
  • paul wheaton
Sheriffs:
  • Ron McLeod
  • Devaka Cooray
  • Henry Wong
Saloon Keepers:
  • Tim Holloway
  • Stephan van Hulst
  • Carey Brown
  • Tim Moores
  • Mikalai Zaikin
Bartenders:
  • Frits Walraven

NX: Shutting Down the Server

 
Ranch Hand
Posts: 286
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hi,
My directions do not require me to lock down the complete database in response
to the client sending in a -1 argument to the lock() method. However, my server
needs to shut down elegantly without damaging the file or losing information.
When my server is told to start shutting down, when a client then calls the lock
method, the server raises an exception: "Server shutting down, no lock requests
are being accepted at this time."
Then, my original idea was simply to monitor the number of threads attempting
to complete from the LockManager. However, I noticed that the number of threads
in the LockManager can be zero, and the server still isn't ready to shut
down!
So, what I will do is the following to safely shut down the server:
1. When it is time to shut down, the server will no longer accept lock
requests, and raise an exception as discussed above.
2. Furthermore, the server will monitor disk writes; so, for instance, if
no create, delete, or update method has been called in the last two minutes,
the server will conclude that there are no outstanding writes.
When both conditions above are true:
1. No threads in the lock manager,
2. No disk writes in the last two minutes,
only then will the server assume that it is safe to shut down.
Here are my test runs. I'm again using my version of George's Super Software
Exerciser to drive the tests, but in this particular run, updates, creates,
and deletes are all occuring. Note how the number of waiting threads drops
to zero for a quite a few minutes in the middle of the run! Only to pick up
again later. I suspect that this behavior is related to the Mac OS X operating
system.
Aside: in this test run, I've doubled the usual size of the database file to
contain 62 records. Also, there were 620 instantiations of the tester class
wherein each instantiation represents one Data instance (i.e., it contains one
Data instance).


Thanks,
Javini Javono
 
Ranch Hand
Posts: 65
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hi Javini,
I am just getting started on my project so you are way ahead of me.


1. When it is time to shut down, the server will no longer accept lock
requests, and raise an exception as discussed above.


I like this approach and expect to do this myself when I get that far.


2. Furthermore, the server will monitor disk writes; so, for instance, if
no create, delete, or update method has been called in the last two minutes,
the server will conclude that there are no outstanding writes.


I generally don't like timed waits as they tend to delay things unneccessarily. It also seems like no matter how long you wait, there is no guarantee with this approach.
It seems to me that you could simply lock every record in the database and be done much quicker than waiting for two minutes of complete idle time. Now on a very large database this would not scale at all but if we had a very large database for this assignment, a lot of other things would need to change too. So it seems to me that locking every record is reasonable and faster.
 
Javini Javono
Ranch Hand
Posts: 286
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hi,
Thanks again for reading and responding to my posting.
You have a good point about the waiting. What I think that I
will do is have a preferences item specify how many minutes
maximum the server will wait before shutting down. Also,
a preferences item saying how much time must expire before
it is assumed that no more writes will occur.
Example:
Maximum Wait Time: 15 minutes
No More Writes Can Occur Time Assumed: 2 minutes

So, the shutdown sequence will look something like this.
First, set a flag so that no new clients can obtain any locks.
If the lock manager says no records are locked, then shutdown
is possible. If the lock manager says that at least one record
is locked, then the client holding this lock has the user-specified
time to complete whatever operation was being conducted on
that record.
Finally, as it is possible, as shown on my computer, for the lock
manager to be empty, and yet for 15 minutes of writes to continue,
while I am waiting for the maximum user-specified wait time,
I will periodically check for any writes having occurred.
If the lock manager is empty, and no writes have occurred within
so many minutes, let's say user-specified at 2 minutes, then it is
safe to shutdown prior to the maximum allowable wait time of
15 minutes.
The wait time, if found undesirable by the user, can be set to very
low values.
NO GUARANTEES
--------------
Your point about there being no guarantees is very good. I may
also have a status panel on the server, where it shows the number
of currently held locks, and the last time a write occurred.
The system administrator can use his own judgement as to when
it is safe to shut down the server. This button may be called:
Override and Shut Down Right Now. Because the system administrator
can see what the situation is, there is no need to wait for any number
of minutes.
Thanks,
Javini Javono
[ March 27, 2004: Message edited by: Javini Javono ]
 
catch it before it slithers away! Oh wait, it's a tiny ad:
Gift giving made easy with the permaculture playing cards
https://coderanch.com/t/777758/Gift-giving-easy-permaculture-playing
reply
    Bookmark Topic Watch Topic
  • New Topic