OSCommerce Product Manager

OSCommerce Product Manager for Windows
Tasklist

FS#316 - All HTTP queries should include a Transaction ID.

Attached to Project: OSCommerce Product Manager
Opened by Mario A. Valdez-Ramirez (mvaldez) - Saturday, 25 March 2006, 14:09 GMT-6
Last edited by Mario A. Valdez-Ramirez (mvaldez) - Saturday, 25 March 2006, 14:15 GMT-6
Task Type Bug Report
Category Backend / Core
Status Assigned
Assigned To Mario A. Valdez-Ramirez (mvaldez)
Operating System All
Severity Very Low
Priority Immediate
Reported Version any
Due in Version Undecided
Due Date Undecided
Percent Complete 0%
Votes 0
Private No

Details

All HTTP queries should include a Transaction ID. The Transaction ID is a random generated number with an epoch tag (a time number to make is unique). The server-side script should store the Transaction ID along with a status code (in process, cancelled, error, completed, etc.). Then, the client application can query the server-side script for the Transaction ID to check if the prior query was completed or not.

This is to improve the robustness of the OSCPMWin application when using the new HTTP-SQL connection functions.

The current experimental implementation assumes the queries were sent without error over the HTTP connection. However, over unreliable network links, the HTTP connection can be dropped and then the requested query would not be executed.

This is critical, as it can cause data loss.
This task depends upon

Comment by Mario A. Valdez-Ramirez (mvaldez) - Saturday, 25 March 2006, 14:15 GMT-6

This requires the creation of a database table on the server.

We can let the server-side script to check if the transaction ID table exists or not, and then create it if needed.

The transaction table would use the following structure:
TranID : INT(8)
TranEpoch : INT(8)
TranStatus : INT(4)

Or we can concatenate the ID and epoch:
TranID : BIGINT(16)
TranStatus : INT(4)

We can even just assume the state has just two values: TRUE or FALSE (true is completed, FALSE is not completed). If the record is missing then it means the transaction was not received at all or it contained fatal errors.

The client application should retry if the status remain FALSE, or just assume the transaction has failed.

Loading...