Subject | Intermittent Read Problem on 1.5rc5 |
---|---|
Author | Dixon Epperson |
Post date | 2004-01-07T21:03:34Z |
I'm having a problem with Firebird 1.5 RC5 that seems to have no
predictable cause, but I am wondering if its a cache flushing issue.
I'm using SuperServer, and its on XPProfessional.
Here is the big picture. The warehouse receives a picklist, prints
it then fills it. When the mark it filled on the terminal in the
warehouse, within a transaction it updates or inserts on 4 tables,
then calls the procedure that calls the event_alerter, then commits
the transaction. If there is an error, it rolls it back without
calling the event_alerter.
The office is monitoring the event_alerter through a user interface
built with Delphi7. When the office receives notice from the
event_alerter that an order has been filled, they have to start the
invoicing form, if its not already running, and have it generate an
invoice based on what the warehouse reported as having filled.
The warehouse might fill 50 picklist a day. One day,49 of them will
be accurate, the next two or three days, all of them will be
accurate, but every so often, one invoice will fail to have one of
the items the warehouse marked as filled, which means they don't
invoice for everything they ship out.
I've moved the procedure that calls the event_alerter to outside the
transaction. And I am actually thinking of putting it in a separate
thread with about a 5 second delay because I'm suspecting the servers
isn't getting all the data written to the tables in a timely manner.
Later, when I go back and make another invoice off this same
picklist, it will generate it correctly.
Does anyone have any ideas on this, as to what it might be and how to
prevent it.
Dixon Epperson
predictable cause, but I am wondering if its a cache flushing issue.
I'm using SuperServer, and its on XPProfessional.
Here is the big picture. The warehouse receives a picklist, prints
it then fills it. When the mark it filled on the terminal in the
warehouse, within a transaction it updates or inserts on 4 tables,
then calls the procedure that calls the event_alerter, then commits
the transaction. If there is an error, it rolls it back without
calling the event_alerter.
The office is monitoring the event_alerter through a user interface
built with Delphi7. When the office receives notice from the
event_alerter that an order has been filled, they have to start the
invoicing form, if its not already running, and have it generate an
invoice based on what the warehouse reported as having filled.
The warehouse might fill 50 picklist a day. One day,49 of them will
be accurate, the next two or three days, all of them will be
accurate, but every so often, one invoice will fail to have one of
the items the warehouse marked as filled, which means they don't
invoice for everything they ship out.
I've moved the procedure that calls the event_alerter to outside the
transaction. And I am actually thinking of putting it in a separate
thread with about a 5 second delay because I'm suspecting the servers
isn't getting all the data written to the tables in a timely manner.
Later, when I go back and make another invoice off this same
picklist, it will generate it correctly.
Does anyone have any ideas on this, as to what it might be and how to
prevent it.
Dixon Epperson