From 062bbb97aac59ee908148918c9d5db77f5dd5168 Mon Sep 17 00:00:00 2001
From: Sergey Yakubov <sergey.yakubov@desy.de>
Date: Fri, 30 Apr 2021 18:59:19 +0200
Subject: [PATCH] fts returns NotFound instead of BadRequest

---
 .../src/asapo_broker/database/streams_test.go | 21 +++++++++++++++++++
 common/cpp/src/database/mongodb_client.cpp    |  2 +-
 .../asapo_file_transfer/server/transfer.go    |  4 ++--
 .../server/transfer_test.go                   |  2 +-
 4 files changed, 25 insertions(+), 4 deletions(-)

diff --git a/broker/src/asapo_broker/database/streams_test.go b/broker/src/asapo_broker/database/streams_test.go
index c972ba789..fef6ff3af 100644
--- a/broker/src/asapo_broker/database/streams_test.go
+++ b/broker/src/asapo_broker/database/streams_test.go
@@ -54,6 +54,27 @@ func (suite *StreamsTestSuite) TestStreamsUsesCache() {
 	suite.Equal(int64(1), rec.Streams[0].TimestampLast)
 }
 
+func (suite *StreamsTestSuite) TestStreamsCacheexpires() {
+	db.settings.UpdateStreamCachePeriodMs = 100
+	var res1 StreamsRecord
+	go func() {
+		db.insertRecord(dbname, collection, &rec1)
+		streams.getStreams(&db, Request{DbName: dbname, ExtraParam: ""})
+		db.insertRecord(dbname, collection, &rec_finished)
+		res1,_ = streams.getStreams(&db, Request{DbName: dbname, ExtraParam: ""})
+	}()
+	db.insertRecord(dbname, collection+"1", &rec1_later)
+	res2,_ := streams.getStreams(&db, Request{DbName: dbname, ExtraParam: ""})
+	db.insertRecord(dbname, collection+"1", &rec_finished)
+	time.Sleep(time.Second)
+	res3, err := streams.getStreams(&db, Request{DbName: dbname, ExtraParam: ""})
+	suite.Nil(err)
+	suite.Equal(true, res3.Streams[0].Finished)
+	fmt.Println(res1,res2)
+//	suite.Equal(true, rec.Streams[1].Finished)
+}
+
+
 func (suite *StreamsTestSuite) TestStreamsGetFinishedInfo() {
 	db.settings.UpdateStreamCachePeriodMs = 1000
 	db.insertRecord(dbname, collection, &rec1)
diff --git a/common/cpp/src/database/mongodb_client.cpp b/common/cpp/src/database/mongodb_client.cpp
index 7cab88b4e..8a35d66cf 100644
--- a/common/cpp/src/database/mongodb_client.cpp
+++ b/common/cpp/src/database/mongodb_client.cpp
@@ -417,7 +417,7 @@ Error StreamInfoFromDbResponse(const std::string &last_record_str,
         return err;
     }
 
-    return UpdateStreamInfoFromEarliestRecord(last_record_str,info);
+    return UpdateStreamInfoFromEarliestRecord(earliest_record_str,info);
 
 }
 
diff --git a/file_transfer/src/asapo_file_transfer/server/transfer.go b/file_transfer/src/asapo_file_transfer/server/transfer.go
index 8e6817007..e6528ff34 100644
--- a/file_transfer/src/asapo_file_transfer/server/transfer.go
+++ b/file_transfer/src/asapo_file_transfer/server/transfer.go
@@ -21,7 +21,7 @@ type fileTransferRequest struct {
 
 func Exists(name string) bool {
 	fi, err := os.Stat(name)
-	return !os.IsNotExist(err) && !fi.IsDir()
+	return err==nil && !fi.IsDir()
 }
 
 
@@ -42,7 +42,7 @@ func checkFileExists(r *http.Request,name string) (int,error) {
 	if !Exists(name) {
 		err_txt := "file "+name+" does not exist"
 		log.Error("cannot transfer file: "+err_txt)
-		return http.StatusBadRequest,errors.New(err_txt)
+		return http.StatusNotFound,errors.New(err_txt)
 	}
 	return http.StatusOK,nil
 
diff --git a/file_transfer/src/asapo_file_transfer/server/transfer_test.go b/file_transfer/src/asapo_file_transfer/server/transfer_test.go
index 378426407..d4117dcfd 100644
--- a/file_transfer/src/asapo_file_transfer/server/transfer_test.go
+++ b/file_transfer/src/asapo_file_transfer/server/transfer_test.go
@@ -60,7 +60,7 @@ var transferFileTests = [] struct {
 	message string
 }{
 	{"folder","exists", prepareToken("folder"),http.StatusOK,"file transferred"},
-	{"folder","not_exists", prepareToken("folder"),http.StatusBadRequest,"file not exists"},
+	{"folder","not_exists", prepareToken("folder"),http.StatusNotFound,"file not exists"},
 	{"wrong_folder","p07", prepareToken("folder"),http.StatusUnauthorized,"wrong folder"},
 	{"folder","p07", "wrong token",http.StatusUnauthorized,"wrong token"},
 }
-- 
GitLab