Project

General

Profile

Actions

Bug #15118

open

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

Added by Tom Clegg about 5 years ago. Updated about 2 months ago.

Status:
New
Priority:
Normal
Assigned To:
-
Category:
Keep
Target version:
Story points:
-
Release:
Release relationship:
Auto

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 failureResolvedLucas Di Pentima02/22/2019Actions
Actions

Also available in: Atom PDF