Skip to content

Avoid large buffer reservations with RAO (#1054)

Miguel Barros requested to merge 1054_rebase into master

Refactor the RecallTaskInjector to limit the number of tasks passed at once to the TapeReadSingleThread for a tape with RAO and to reserve disk space in smaller batchs

In every call of RecallTaskInjector::synchronousFetch the injector will try to pop jobs from the queue so that it holds an ammount of work equal to the limit of files or bytes imposed by the RAO implementation or by the value given by the BulkRequestRecallMaxBytes and BulkRequestRecallMaxFiles config options in /etc/cta/cta-taped.conf.

In every call of RecallTaskInjector::injectBulkRecalls the RecallTaskInjector will inject a set of tasks limited by the BulkRequestRecallMaxBytes and BulkRequestRecallMaxFiles config options in /etc/cta/cta-taped.conf to the TapeReadSingleThread and DiskWriteThreadPool.

The disk space reservation is done once for every job batch (instead of all the disk space being reserved when the jobs are popped)

This prevents tapeservers with RAO from reserving a large amount of the disk buffer upfront, which would cause the buffer to fill quickly by a few drives, which cannot fill it fast enough

Merge request reports