minor bug fix in RDS_ACTIONS and minor change to procedure queue system
This commit is contained in:
parent
59c07b1a8b
commit
2ff9dfb0b5
@ -955,11 +955,11 @@ WRITE_RECORD:
|
|||||||
WMIKeys = {WM_IN_KEY}
|
WMIKeys = {WM_IN_KEY}
|
||||||
For each WMIKey in WMIKeys using @VM setting vPos
|
For each WMIKey in WMIKeys using @VM setting vPos
|
||||||
CassNo = Field(WMIKey, '*', 3)
|
CassNo = Field(WMIKey, '*', 3)
|
||||||
Service_Services('PostProcedure', 'SCHEDULE_SERVICES':@VM:'MarkCassProcessed':@VM:WONo:@VM:CassNo:@VM:DatetimeOut)
|
Service_Services('PostProcedure', 'SCHEDULE_SERVICES', 'MarkCassProcessed':@VM:WONo:@VM:CassNo:@VM:DatetimeOut)
|
||||||
Next WMIKey
|
Next WMIKey
|
||||||
end else
|
end else
|
||||||
CassNo = Record<RDS_CASS_NO$>
|
CassNo = Record<RDS_CASS_NO$>
|
||||||
Service_Services('PostProcedure', 'SCHEDULE_SERVICES':@VM:'MarkCassProcessed':@VM:WONo:@VM:CassNo:@VM:DatetimeOut)
|
Service_Services('PostProcedure', 'SCHEDULE_SERVICES', 'MarkCassProcessed':@VM:WONo:@VM:CassNo:@VM:DatetimeOut)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -1043,3 +1043,4 @@ Restore_System_Variables:
|
|||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
@ -155,13 +155,17 @@ end service
|
|||||||
|
|
||||||
Service ProcessProcedureQueue()
|
Service ProcessProcedureQueue()
|
||||||
|
|
||||||
|
// Loop through the procedure queue until we can find a process request that is not yet locked
|
||||||
|
// (i.e., already being crunched on by another engine). Process that one request and then end.
|
||||||
Open 'PROC_QUEUE' to hProcQueue then
|
Open 'PROC_QUEUE' to hProcQueue then
|
||||||
Select hProcQueue
|
Select hProcQueue
|
||||||
EOF = False$
|
EOF = False$
|
||||||
|
Done = False$
|
||||||
Loop
|
Loop
|
||||||
ReadNext RequestKeyID else EOF = True$
|
ReadNext RequestKeyID else EOF = True$
|
||||||
Until EOF
|
Until EOF or Done
|
||||||
Lock hProcQueue, RequestKeyID then
|
Lock hProcQueue, RequestKeyID then
|
||||||
|
Done = True$
|
||||||
Database_Services('GetKeyIDLock', 'PROC_QUEUE', RequestKeyId)
|
Database_Services('GetKeyIDLock', 'PROC_QUEUE', RequestKeyId)
|
||||||
RequestRow = Database_Services('ReadDataRow', 'PROC_QUEUE', RequestKeyID)
|
RequestRow = Database_Services('ReadDataRow', 'PROC_QUEUE', RequestKeyID)
|
||||||
If RequestRow NE '' then
|
If RequestRow NE '' then
|
||||||
@ -184,22 +188,25 @@ Service ProcessProcedureQueue()
|
|||||||
Case NumArguments EQ 7 ; Call @Procedure(ProcParams(1), ProcParams(2), ProcParams(3), ProcParams(4), ProcParams(5), ProcParams(6), ProcParams(7))
|
Case NumArguments EQ 7 ; Call @Procedure(ProcParams(1), ProcParams(2), ProcParams(3), ProcParams(4), ProcParams(5), ProcParams(6), ProcParams(7))
|
||||||
Case NumArguments EQ 8 ; Call @Procedure(ProcParams(1), ProcParams(2), ProcParams(3), ProcParams(4), ProcParams(5), ProcParams(6), ProcParams(7), ProcParams(8))
|
Case NumArguments EQ 8 ; Call @Procedure(ProcParams(1), ProcParams(2), ProcParams(3), ProcParams(4), ProcParams(5), ProcParams(6), ProcParams(7), ProcParams(8))
|
||||||
Case NumArguments EQ 9 ; Call @Procedure(ProcParams(1), ProcParams(2), ProcParams(3), ProcParams(4), ProcParams(5), ProcParams(6), ProcParams(7), ProcParams(8), ProcParams(9))
|
Case NumArguments EQ 9 ; Call @Procedure(ProcParams(1), ProcParams(2), ProcParams(3), ProcParams(4), ProcParams(5), ProcParams(6), ProcParams(7), ProcParams(8), ProcParams(9))
|
||||||
Case NumArguments EQ 10 ; Call @Procedure(ProcParams(1), ProcParams(2), ProcParams(3), ProcParams(4), ProcParams(5), ProcParams(6), ProcParams(7), ProcParams(8), ProcParams(9), ProcParams(10))
|
Case NumArguments EQ 10 ; Call @Procedure(ProcParams(1), ProcParams(2), ProcParams(3), ProcParams(4), ProcParams(5), ProcParams(6), ProcParams(7), ProcParams(8), ProcParams(9), ProcParams(10))
|
||||||
Case Otherwise$ ; Call @Procedure(ProcParams(1), ProcParams(2), ProcParams(3), ProcParams(4), ProcParams(5), ProcParams(6), ProcParams(7), ProcParams(8), ProcParams(9), ProcParams(10), ProcParams(11))
|
Case NumArguments EQ 11 ; Call @Procedure(ProcParams(1), ProcParams(2), ProcParams(3), ProcParams(4), ProcParams(5), ProcParams(6), ProcParams(7), ProcParams(8), ProcParams(9), ProcParams(10), ProcParams(11))
|
||||||
|
Case Otherwise$
|
||||||
|
Error_Services('Add', 'Error in ':Service:' service. More than 11 arguments are not currently supported.')
|
||||||
End Case
|
End Case
|
||||||
end
|
end
|
||||||
end
|
If Error_Services('NoError') then
|
||||||
If Error_Services('NoError') then
|
Database_Services('DeleteDataRow', 'PROC_QUEUE', RequestKeyId, True$, False$) ; // This call will release the lock
|
||||||
Database_Services('DeleteDataRow', 'PROC_QUEUE', RequestKeyId, True$, False$)
|
end else
|
||||||
|
RequestRow<PROC_QUEUE.LAST_ATTEMPT_DTM$> = DateTime()
|
||||||
|
RequestRow<PROC_QUEUE.ERROR$> = Error_Services('GetMessage')
|
||||||
|
Database_Services('WriteDataRow', 'PROC_QUEUE', RequestKeyID, RequestRow, True$, False$, False$) ; // This call will release the lock
|
||||||
|
end
|
||||||
end else
|
end else
|
||||||
RequestRow<PROC_QUEUE.LAST_ATTEMPT_DTM$> = DateTime()
|
// Empty request, so delete it from the queue
|
||||||
RequestRow<PROC_QUEUE.ERROR$> = Error_Services('GetMessage')
|
Database_Services('DeleteDataRow', 'PROC_QUEUE', RequestKeyId, True$, False$) ; // This call will release the lock
|
||||||
Database_Services('WriteDataRow', 'PROC_QUEUE', RequestKeyID, RequestRow, True$, False$, True$)
|
|
||||||
end
|
end
|
||||||
Unlock hProcQueue, RequestKeyID else Null
|
|
||||||
end
|
end
|
||||||
Repeat
|
Repeat
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end service
|
end service
|
||||||
|
Loading…
x
Reference in New Issue
Block a user