Bug #15118

[keepstore] Return 5xx (not 4xx) if block is not found due to transient backend device failure

Added by Tom Clegg 3 months ago. Updated 2 months ago.

Status:
New
Priority:
Normal
Assigned To:
-
Category:
Keep
Target version:
Start date:
Due date:
% Done:

0%

Estimated time:
Story points:
-

Description

This was reported in #14804 but (judging by the code) the resulting change addressed only the specific example of Azure returning 503.

There are many other backend failure modes where "block not found" is the wrong response, like:
  • Azure returns 502, 418, etc. or times out
  • S3 returns 5xx
  • Filesystem returns EPERM
Drivers are expected to return errors that satisfy os.IsNotExist() when they determine that a block does not exist. It seems like the logic should be:
  • if all backends return 404 (os.IsNotExist(err)==true), then return 404
  • otherwise -- i.e., when other errors prevent us from determining whether the block exists -- return 502

Related issues

Related to Arvados - Bug #14804: [keepstore] Return 5xx (not 4xx) if block is not found due to transient backend device failureResolved02/22/2019

History

#1 Updated by Tom Clegg 3 months ago

  • Related to Bug #14804: [keepstore] Return 5xx (not 4xx) if block is not found due to transient backend device failure added

Also available in: Atom PDF