Skip to content

Commit

Permalink
pinmanager: Retry stage failures
Browse files Browse the repository at this point in the history
Pin manager currently doesn't retry stage failures. This is a regression introduced
in 1.9.13.

This fix is more a minimal workaround to the problem rather than a full fix. Ideally
the SRM would be involved in the retry; both to avoid nested retry loops, but also
to allow the SRM to drop the stage if the client has already cancelled the stage
attempt. In the interest of quickly restoring lost functionality, this fix modifies
pin manager instead.

Target: trunk
Request: 2.5
Request: 2.4
Request: 2.2
Require-notes: yes
Require-book: no
Acked-by: Paul Millar <paul.millar@desy.de>
Patch: http://rb.dcache.org/r/5148/
  • Loading branch information
Gerd Behrmann committed Feb 3, 2013
1 parent 30bfe2e commit 323fb2a
Showing 1 changed file with 13 additions and 5 deletions.
Expand Up @@ -393,17 +393,25 @@ public void failure(int rc, Object error)
* retries.
*/
task.setReadPoolSelectionContext(getReply().getContext());
if (rc == CacheException.OUT_OF_DATE) {
switch (rc) {
case CacheException.OUT_OF_DATE:
/* Pool manager asked for a
* refresh of the request.
* Retry right away.
*/
retry(task, 0);
} else {
/* REVISIT: Maybe we should
* retry here too?
*/
break;
case CacheException.FILE_NOT_IN_REPOSITORY:
case CacheException.PERMISSION_DENIED:
fail(task, rc, error.toString());
break;
default:
/* Ideally we would delegate the retry to the door,
* but for the time being the retry is dealed with
* by pin manager.
*/
retry(task, RETRY_DELAY);
break;
}
}

Expand Down

0 comments on commit 323fb2a

Please sign in to comment.