[ISSUE-67851068] fix http status code for blob not found
diff --git a/api.go b/api.go index 4ffc12e..983fdf5 100644 --- a/api.go +++ b/api.go
@@ -50,6 +50,7 @@ API_ERR_INTERNAL API_ERR_BAD_CONFIG_ID API_ERR_NOT_FOUND + API_ERR_BLOB_NOT_FOUND ) const ( @@ -221,9 +222,12 @@ blobId := vars["blobId"] fs, err := a.dbMan.getLocalFSLocation(blobId) if err != nil { - a.writeInternalError(w, "BlobId "+blobId+" has no mapping blob file") + a.writeInternalError(w, "Db error when getting BlobId="+blobId) return } + if fs == "" { + a.writeError(w, http.StatusNotFound, API_ERR_BLOB_NOT_FOUND, "BlobId="+blobId+" not found.") + } byte, err := ioutil.ReadFile(fs) if err != nil { a.writeInternalError(w, err.Error())
diff --git a/data.go b/data.go index d424e2b..ddf9a6c 100644 --- a/data.go +++ b/data.go
@@ -299,21 +299,17 @@ func (dbc *dbManager) getLocalFSLocation(blobId string) (localFsLocation string, err error) { log.Debugf("Getting the blob file for blobId {%s}", blobId) - rows, err := dbc.getDb().Query("SELECT local_fs_location FROM apid_blob_available WHERE id = '" + blobId + "'") + row := dbc.getDb().QueryRow("SELECT local_fs_location FROM apid_blob_available WHERE id = '" + blobId + "'") + err = row.Scan(&localFsLocation) if err != nil { - log.Errorf("SELECT local_fs_location failed %v", err) + if err == sql.ErrNoRows { + log.Debugf("No local_fs_location associated with blobid=%v", blobId) + return "", nil + } + log.Errorf("Scan local_fs_location failed %v", err) return "", err } - - defer rows.Close() - for rows.Next() { - err = rows.Scan(&localFsLocation) - if err != nil { - log.Errorf("Scan local_fs_location failed %v", err) - return "", err - } - log.Debugf("Got the blob file {%s} for blobId {%s}", localFsLocation, blobId) - } + log.Debugf("Got the blob file {%s} for blobId {%s}", localFsLocation, blobId) return }