<> <> <> <> <> <> <> <> <> DIRECTORY AlpineEnvironment USING [Outcome, TransactionPriority, TransID, nullTransID], AlpineImport USING [Handle, nullHandle], AlpineInternal USING [Difficulty, FileInstanceHandle, LockTransHeaderHandle, LogRecordID, nullLogRecordID, WorkerOutcome, WorkLevel], BasicTime USING [GMT], Process USING [Milliseconds], RPC USING [ConversationID, maxShortStringLength]; Worker: DEFINITIONS = BEGIN State: TYPE = { unknown, active, preparing, ready, completing, fpmComplete, fpmCompleteBeingForcedOut, complete }; StateDuringRecovery: TYPE = { active, ready, committed, aborted }; Outcome: TYPE = AlpineEnvironment.Outcome --{abort, commit, unknown}--; Object: TYPE = MONITORED RECORD [ transID: AlpineEnvironment.TransID _ AlpineEnvironment.nullTransID, --immutable-- beginRecord: AlpineInternal.LogRecordID _ AlpineInternal.nullLogRecordID, --immutable-- coordinator: AlpineImport.Handle _ AlpineImport.nullHandle, --immutable-- locks: AlpineInternal.LockTransHeaderHandle _ NIL, --immutable-- coordinatorIsRemote: BOOL _ TRUE, state: State _ unknown, --increases monotonically to complete-- outcome: Outcome _ unknown, --changes during state transition ready -> completing-- backupComplete: BOOLEAN _ FALSE, -- increases monotonically to TRUE ; not used yet -- allowableDifficulty: Difficulty _ hard, < normal -> zero during preparing or completing state.>> <> <> priority: AlpineEnvironment.TransactionPriority _ normal, nStarts: [0..maxStarts] _ 0, <> <> stateDuringRecovery: StateDuringRecovery _ active, <> timeOfLastStartWork: BasicTime.GMT, <