diff --git a/authorizer/src/asapo_authorizer/server/authorize_test.go b/authorizer/src/asapo_authorizer/server/authorize_test.go index 3f7781e04b10f406046d5565d9f4f274b2f3aa0c..1c6e6400554b5ee6fe8fbc6dd324b8ad1ae7d346 100644 --- a/authorizer/src/asapo_authorizer/server/authorize_test.go +++ b/authorizer/src/asapo_authorizer/server/authorize_test.go @@ -225,7 +225,7 @@ var authTests = []struct { `{"beamtimeId":"test_online","beamline":"bl1","dataSource":"dataSource","corePath":"./tf/gpfs/bl1/2019/data/test_online","beamline-path":"./bl1/current","source-type":"raw","access-types":["read","write","writeraw"]}`, 0}, {"raw", "auto", "p07", "dataSource", "", "127.0.0.1", http.StatusOK, "raw type, auto beamtime", `{"beamtimeId":"11111111","beamline":"p07","dataSource":"dataSource","corePath":"asap3/petra3/gpfs/p07/2020/data/11111111","beamline-path":"./p07/current","source-type":"raw","access-types":["read","write","writeraw"]}`, 0}, - {"raw", "auto", "p07", "noldap", "", "127.0.0.1", http.StatusNotFound, "no conection to ldap", + {"raw", "auto", "p07", "noldap", "", "127.0.0.1", http.StatusServiceUnavailable, "no conection to ldap", "", 0}, {"raw", "auto", "p07", "dataSource", prepareAsapoToken("bl_p07", []string{"read", "writeraw"}), "127.0.0.2", http.StatusOK, "raw type with token", diff --git a/authorizer/src/asapo_authorizer/server/server_nottested.go b/authorizer/src/asapo_authorizer/server/server_nottested.go index 320e47a852917a6f4f7f8c180459796df4df64c9..6841cf5f377ddbbbcbd2c91aa3c4710ce6540bbf 100644 --- a/authorizer/src/asapo_authorizer/server/server_nottested.go +++ b/authorizer/src/asapo_authorizer/server/server_nottested.go @@ -12,8 +12,8 @@ import ( "asapo_common/version" "errors" "net/http" - "strconv" _ "net/http/pprof" + "strconv" ) func Start() { diff --git a/broker/src/asapo_broker/server/authorizer.go b/broker/src/asapo_broker/server/authorizer.go index b5b51ff33a60710a62ac53f7800830012175af44..cac330d1be034930207613d9cd15c69b368a1153 100644 --- a/broker/src/asapo_broker/server/authorizer.go +++ b/broker/src/asapo_broker/server/authorizer.go @@ -87,6 +87,8 @@ func (a *AsapoAuthorizer) doRequest(req *http.Request) (token Token, err error) //do nothing case http.StatusUnauthorized: return token, &AuthorizationError{errors.New("authorizer rejected to authorize: " + string(body)), http.StatusUnauthorized} + case http.StatusServiceUnavailable: + return token, &AuthorizationError{errors.New("authorizer service unavailable: " + string(body)), http.StatusServiceUnavailable} default: return token, errors.New("authorizer returned " + resp.Status + ": " + string(body)) } diff --git a/broker/src/asapo_broker/server/process_request_test.go b/broker/src/asapo_broker/server/process_request_test.go index 781a7f16b2df345e4c1cb77aca727f7ec7a85608..cf0d41626723cd026791b9c9c9ac9471d78c0ce2 100644 --- a/broker/src/asapo_broker/server/process_request_test.go +++ b/broker/src/asapo_broker/server/process_request_test.go @@ -176,7 +176,7 @@ func (suite *ProcessRequestTestSuite) TestProcessRequestWithConnectionError() { w := doRequest("/beamtime/" + expectedBeamtimeId + "/" + expectedSource + "/" + expectedStream + "/" + expectedGroupID + "/next" + correctTokenSuffix) time.Sleep(time.Second) - suite.Equal(http.StatusNotFound, w.Code, "data not found") + suite.Equal(http.StatusServiceUnavailable, w.Code, "data not found") } func (suite *ProcessRequestTestSuite) TestProcessRequestWithInternalDBError() { @@ -191,7 +191,7 @@ func (suite *ProcessRequestTestSuite) TestProcessRequestWithInternalDBError() { w := doRequest("/beamtime/" + expectedBeamtimeId + "/" + expectedSource + "/" + expectedStream + "/" + expectedGroupID + "/next" + correctTokenSuffix) time.Sleep(time.Second) - suite.Equal(http.StatusNotFound, w.Code, "internal error") + suite.Equal(http.StatusServiceUnavailable, w.Code, "internal error") } func (suite *ProcessRequestTestSuite) TestProcessRequestAddsCounter() { diff --git a/broker/src/asapo_broker/server/request_common.go b/broker/src/asapo_broker/server/request_common.go index 17a4b30aedd417fd018b69382284ab5e305322f9..1a0d5e875034ed369f85128929ef3baae1c17c1f 100644 --- a/broker/src/asapo_broker/server/request_common.go +++ b/broker/src/asapo_broker/server/request_common.go @@ -16,7 +16,7 @@ func writeAuthAnswer(w http.ResponseWriter, requestName string, db_name string, case AuthorizationError: w.WriteHeader(er.statusCode) default: - w.WriteHeader(http.StatusInternalServerError) + w.WriteHeader(http.StatusServiceUnavailable) } w.Write([]byte(err.Error())) } diff --git a/broker/src/asapo_broker/server/server_nottested.go b/broker/src/asapo_broker/server/server_nottested.go index a4ec18874707606dc2c95271b046ec849f55ec5d..ec512247a9d1ce7052f1ac32ad99ff205a434f12 100644 --- a/broker/src/asapo_broker/server/server_nottested.go +++ b/broker/src/asapo_broker/server/server_nottested.go @@ -7,8 +7,8 @@ import ( "asapo_common/utils" "errors" "net/http" - "strconv" _ "net/http/pprof" + "strconv" ) func StartStatistics() { diff --git a/common/go/src/asapo_common/utils/status_codes.go b/common/go/src/asapo_common/utils/status_codes.go index 7002a963e250b20b9af88c1125b54c2993215aca..fdd205418a2fb6abd8e22078bdb104e35fa5ad71 100644 --- a/common/go/src/asapo_common/utils/status_codes.go +++ b/common/go/src/asapo_common/utils/status_codes.go @@ -9,7 +9,7 @@ const ( const ( //error codes StatusTransactionInterrupted = http.StatusInternalServerError - StatusServiceUnavailable = http.StatusNotFound + StatusServiceUnavailable = http.StatusServiceUnavailable StatusWrongInput = http.StatusBadRequest StatusNoData = http.StatusConflict StatusPartialData = http.StatusPartialContent diff --git a/consumer/api/cpp/include/asapo/consumer/consumer_error.h b/consumer/api/cpp/include/asapo/consumer/consumer_error.h index 55618fddc9ea98dd8f68cbf0bfa38821d02f72d8..efa0631dab069a96595de024b4873d2d36e68235 100644 --- a/consumer/api/cpp/include/asapo/consumer/consumer_error.h +++ b/consumer/api/cpp/include/asapo/consumer/consumer_error.h @@ -41,8 +41,6 @@ auto const kPartialData = ConsumerErrorTemplate { "partial data", ConsumerErrorType::kPartialData }; - - auto const kLocalIOError = ConsumerErrorTemplate { "local i/o error", ConsumerErrorType::kLocalIOError }; @@ -76,8 +74,6 @@ auto const kUnavailableService = ConsumerErrorTemplate { "service unavailable", ConsumerErrorType::kUnavailableService }; - - } } diff --git a/consumer/api/cpp/src/consumer_impl.cpp b/consumer/api/cpp/src/consumer_impl.cpp index 973e6a98a5313364d75c2455662476fd25e2401f..659ad07a261974ce1cf0dba75cddc107cdb463a7 100644 --- a/consumer/api/cpp/src/consumer_impl.cpp +++ b/consumer/api/cpp/src/consumer_impl.cpp @@ -91,6 +91,8 @@ Error ConsumerErrorFromHttpCode(const RequestOutput* response, const HttpCode& c return ConsumerErrorTemplates::kWrongInput.Generate(response->to_string()); case HttpCode::InternalServerError: return ConsumerErrorTemplates::kInterruptedTransaction.Generate(response->to_string()); + case HttpCode::ServiceUnavailable: + return ConsumerErrorTemplates::kUnavailableService.Generate(response->to_string()); case HttpCode::NotFound: return ConsumerErrorTemplates::kUnavailableService.Generate(response->to_string()); case HttpCode::Conflict: diff --git a/consumer/api/cpp/unittests/test_consumer_impl.cpp b/consumer/api/cpp/unittests/test_consumer_impl.cpp index ae11c5592d26e5e7746cf4ad9159f8d439fddb36..0b783b42bf055819ae9f07860b4bdb3d34414c66 100644 --- a/consumer/api/cpp/unittests/test_consumer_impl.cpp +++ b/consumer/api/cpp/unittests/test_consumer_impl.cpp @@ -146,7 +146,7 @@ class ConsumerImplTests : public Test { void MockGetError() { EXPECT_CALL(mock_http_client, Get_t(HasSubstr(expected_broker_api), _, _)).WillOnce(DoAll( - SetArgPointee<1>(HttpCode::NotFound), + SetArgPointee<1>(HttpCode::ServiceUnavailable), SetArgPointee<2>(asapo::IOErrorTemplates::kUnknownIOError.Generate().release()), Return("") )); @@ -442,7 +442,7 @@ TEST_F(ConsumerImplTests, GetMessageReturnsNoDataAfterTimeoutEvenIfOtherErrorOcc "/stream/0/" + std::to_string(expected_dataset_id) + "?token=" + expected_token, _, _)).Times(AtLeast(1)).WillRepeatedly(DoAll( - SetArgPointee<1>(HttpCode::NotFound), + SetArgPointee<1>(HttpCode::ServiceUnavailable), SetArgPointee<2>(nullptr), Return(""))); @@ -1400,7 +1400,7 @@ TEST_F(ConsumerImplTests, NegativeAcknowledgeUsesCorrectUri) { TEST_F(ConsumerImplTests, CanInterruptOperation) { EXPECT_CALL(mock_http_client, Get_t(_, _, _)).Times(AtLeast(1)).WillRepeatedly(DoAll( - SetArgPointee<1>(HttpCode::NotFound), + SetArgPointee<1>(HttpCode::ServiceUnavailable), SetArgPointee<2>(nullptr), Return("")));