Subject | Re: [firebird-support] Re: How to shutdown Firebird server ? |
---|---|
Author | Jocelyn Bernier |
Post date | 2008-04-15T03:27:21Z |
> a) Close/kill mean the same thing with a process that is meant to run as aKilling a process will terminate it gracefully ? Like I said the Firebird is
> service. The process itself knows what to do to terminate gracefully when
> instructed to do so. Close/kill are not the same as "crash". If you have
> something beyond the control of the process that causes it to terminate
> abnormally, such as a dangerous UDF, then the process usually cannot terminate
> gracefully.
>
running as an application. We are not the owner of the machines and they want us
to a certain user to run the Firebird. We can't install any service on the
machines. That's why we are running it as an application.
> b) An application designed to run as a service is expected to be availableI already know all that. Stopping a service can terminate gracefully. I built
> whenever a client requests the service. Whether the service is being run in the
> services space (as when installed as a service) or in the user's space (as when
> installed as an application), it still knows how to shut down gracefully.
>
some applications running as service in the past.
>>Because I don't know if all the requested actions have been done byI know, but at least like you said, it can be done gracefully (like doing
>>Firebird. So killing the process while Firebird is working is not a
>>good idea.
>
> That is true whether you are running Firebird as a service or as an application.
>
rollback , closing the connections or whatever need to be done).
>But the Firebird still running right ?
> gfix is itself an application, a set of tools that operates on databases. It
> doesn't operate on other processes. When you want to close/kill the server
> process (whether service or application!) you need to shut down the databases
> FIRST. When a database is successfully "shut down" it is flagged "offline" in
> its header. The server process will not accept any new connections or allow any
> new transactions to start from ordinary users while the database is flagged
> offline.
>
>So at least I could shutdown the database and terminate the Firebird process.
> Firebird 2 gives you a number of different shutdown states - see the release
> notes. If you are going the stop the Firebird server process then you want to
> specify the FULL state.
>
>being a 3-tier application this would be a little trickie.
> The gfix -shut command takes a timeout value in seconds. When you are going to
> shut down a database, you should send a message out to all the users announcing
> that it is going to happen and instructing them to commit all changes and log
> out. How you do this is up to you - the Firebird server process doesn't have a
> way to communicate with them.
>
>I know but this is something I can't control. I have to deal with that. But
> So why do you have to run the Firebird server as an application? You are
> forcing the site to keep the host machine open and logged in as Administrator
> even at night when you don't know who is around.
>
again the user used for that doesn't have full rights.
>>> The users are 3-tier.No only the server part of the application.
>
> That's another strong reason NOT to run the Firebird server as an application.
>
> But - if it's 3-tier then the clients aren't connected to the database, are
> they? This is the place everything is controlled, including knowledge of any
> live attachments...why not put the shutdown messages and operations there?
>
>It's still done securely but not controlled by me.
> You have an unknown number of people working late, using services that are
> insecure....
>
>Sorry I can't give you more. I thought this was easy.
> Problems get to be complicated when there's not enough information.
>
> Running a Firebird server -- and indeed your application server -- as anI know it is a bit complicated. I built this to be run as a service at the
> application is justified if the host machine is Win98, since it doesn't support
> services. It's justified (maybe) on a stand-alone system where there might be
> reasons why the embedded server can't be used. But here you have a 3-tier
> architecture so we are not looking at a stand-alone system...
>
beginning and also an embedded version but because of all the restrictions I had
to built it that way.
>>> -- you can test whether anyone is logged in to a database byThis is what I think right now.
>>attempting to rename the database file. If it works, then nobody is
>>logged in and the database is *already* shut down. You can just go
>>to Task Manager and stop the Firebird process.
>>>
>Like I said, the Windows user. The Windows user receive this message from
> You can't rename a file if it is open. A database file is open if there is at
> least one client attached. With a 3-tier setup, the jury stays out. Maybe the
> application layer stays connected constantly...in which case, only that
> application "knows" whether it has any live clients and the "renaming" trick
> won't work until the application tier is shut down (closed/killed, choose your
> own word!)
>
> If a database client gracefully closes its attachment then what happens on the
> disconnection request depends entirely on what the application does in response.
> Maybe it rolls back any uncommitted work, or commits it. If the application
> doesn't do either, then the Firebird server would eventually treat those
> transactions as "dead" and clean them up. Whatever happens, they won't be
> picked up in future and treated as though they were not dead.
>
>>That could explain why I can an error message when the users
>>shutdown their Windows. A message say that there is still users
>>connected to Firebird and don't want to close.
>
> "Users"? Does this mean clients of the application tier? (which would be
> STRANGE!)
>
Firebird when he wants to shutdown Windows.
The Windows user needs to click terminate to be able to shutdown Windows. This
might be because I am running Firebird as an application.
> It does look as though your application tier is providing some level ofI am the author of the software. I connect my server application to the database
> marshalling protection. If you're not the author of the software then it does
> seem that you need to consult the author and find out how things work in that
> setup....maybe a graceful exit is already built into that application layer and
> you just need to find out how to work it?
only when needed and use the commit/rollback when needed.
BTW, you and Firebird team did a great job.