Add new tape state REPACKING
We need a new tape state REPACKING to handle the queueing logic for tapes which are being repacked.
Currently we are using the DISABLED state for this. The DISABLED logic is as follows:
- It is not possible to queue on DISABLED tapes.
- The tape state can change to DISABLED after it has requests queued on it.
- Requests which end up queued on DISABLED tapes are re-queued by the maintenance process. However, as the maintenance process only attempts to requeue on the same tape, this effectively cancels/fails the request.
- There is a bug (see #1176 (closed)) that EOS is not notified when the request is cancelled.
The following tasks need to be done:
-
Fix the bug mentioned above (#1176 (closed)) -
Add the REPACKINGstate toCONSTRAINT TAPE_STATE_CK CHECK(TAPE_STATE IN ('ACTIVE', 'DISABLED', 'BROKEN'))in the DB schema -
Add the new REPACKINGtape state tocommon::dataStructures::Tape -
Implement the logic of REPACKINGas identical to the current logic forDISABLEDdescribed above -
Add commands to change the tape state to REPACKINGtocta-admin -
Perform any necessary changes in the unit-test and system-tests, to cover for the new use-cases.
Once this is done, it will be possible to change the logic of DISABLED (#1170 (moved)), and the logic of REPACKING can be further refined (new tickets will be created for this as needed).
Edited by Joao Afonso