[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
}