8000 (mostly) restore pre-3.7 API behavior (#11364) · arangodb/arangodb@a17ef48 · GitHub
[go: up one dir, main page]

Skip to content

Commit a17ef48

Browse files
authored
(mostly) restore pre-3.7 API behavior (#11364)
1 parent 85e3459 commit a17ef48

File tree

2 files changed

+97
-4
lines changed

2 files changed

+97
-4
lines changed

arangod/RestHandler/RestAdminClusterHandler.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1320,7 +1320,7 @@ RestStatus RestAdminClusterHandler::handlePutNumberOfServers() {
13201320
auto write = arangodb::agency::envelope<VPackBuilder>::create(builder).write();
13211321

13221322
VPackSlice numberOfCoordinators = body.get("numberOfCoordinators");
1323-
if (numberOfCoordinators.isNumber()) {
1323+
if (numberOfCoordinators.isNumber() || numberOfCoordinators.isNull()) {
13241324
write = std::move(write).set(targetPath->numberOfCoordinators()->str(),
13251325
numberOfCoordinators);
13261326
hasThingsToDo = true;
@@ -1331,7 +1331,7 @@ RestStatus RestAdminClusterHandler::handlePutNumberOfServers() {
13311331
}
13321332

13331333
VPackSlice numberOfDBServers = body.get("numberOfDBServers");
1334-
if (numberOfDBServers.isNumber()) {
1334+
if (numberOfDBServers.isNumber() || numberOfDBServers.isNull()) {
13351335
write = std::move(write).set(targetPath->numberOfDBServers()->str(), numberOfDBServers);
13361336
hasThingsToDo = true;
13371337
} else if (!numberOfDBServers.isNone()) {
@@ -1368,8 +1368,12 @@ RestStatus RestAdminClusterHandler::handlePutNumberOfServers() {
13681368
}
13691369

13701370
if (!hasThingsToDo) {
1371-
generateError(rest::ResponseCode::BAD, TRI_ERROR_BAD_PARAMETER,
1372-
"missing fields");
1371+
generateOk(rest::ResponseCode::OK, velocypack::Slice::noneSlice());
1372+
// TODO: the appropriate response would rather be
1373+
// generateError(rest::ResponseCode::BAD, TRI_ERROR_BAD_PARAMETER,
1374+
// "missing fields");
1375+
// but that would break API compatibility. Introduce this behavior
1376+
// in 4.0!!
13731377
return RestStatus::DONE;
13741378
}
13751379

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
/*jshint globalstrict:false, strict:false, maxlen : 4000 */
2+
/* global arango, assertFalse, assertEqual, assertNull */
3+
4+
////////////////////////////////////////////////////////////////////////////////
5+
/// @brief tests for inventory
6+
///
7+
/// @file
8+
///
9+
/// DISCLAIMER
10+
///
11+
/// Copyright 2010-2012 triagens GmbH, Cologne, Germany
12+
///
13+
/// Licensed under the Apache License, Version 2.0 (the "License");
14+
/// you may not use this file except in compliance with the License.
15+
/// You may obtain a copy of the License at
16+
///
17+
/// http://www.apache.org/licenses/LICENSE-2.0
18+
///
19+
/// Unless required by applicable law or agreed to in writing, software
20+
/// distributed under the License is distributed on an "AS IS" BASIS,
21+
/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
22+
/// See the License for the specific language governing permissions and
23+
/// limitations under the License.
24+
///
25+
/// Copyright holder is triAGENS GmbH, Cologne, Germany
26+
///
27+
/// @author Jan Steemann
28+
/// @author Copyright 2012, triAGENS GmbH, Cologne, Germany
29+
////////////////////////////////////////////////////////////////////////////////
30+
31+
'use strict';
32+
const jsunity = require('jsunity');
33+
34+
function numberOfServersSuite () {
35+
return {
36+
setUp : function () {
37+
arango.PUT("/_admin/cluster/numberOfServers", { numberOfCoordinators: null, numberOfDBServers: null });
38+
},
39+
40+
tearDown : function () {
41+
arango.PUT("/_admin/cluster/numberOfServers", { numberOfCoordinators: null, numberOfDBServers: null });
42+
},
43+
44+
testGet : function () {
45+
let result = arango.GET("/_admin/cluster/numberOfServers");
46+
assertFalse(result.error);
47+
assertEqual(200, result.code);
48+
assertNull(result.numberOfDBServers);
49+
assertNull(result.numberOfCoordinators);
50+
assertEqual([], result.cleanedServers);
51+
},
52+
53+
testPutEmptyBody : function () {
54+
let result = arango.PUT("/_admin/cluster/numberOfServers", {});
55+
assertFalse(result.error);
56+
assertEqual(200, result.code);
57+
},
58+
59+
testPutNumberOfDBServers : function () {
60+
let result = arango.PUT("/_admin/cluster/numberOfServers", { numberOfDBServers: 2 });
61+
assertFalse(result.error);
62+
assertEqual(200, result.code);
63+
64+
result = arango.GET("/_admin/cluster/numberOfServers");
65+
assertFalse(result.error);
66+
assertEqual(200, result.code);
67+
assertEqual(2, result.numberOfDBServers);
68+
assertNull(result.numberOfCoordinators);
69+
assertEqual([], result.cleanedServers);
70+
},
71+
72+
testPutNumberOfCoordinators : function () {
73+
let result = arango.PUT("/_admin/cluster/numberOfServers", { numberOfCoordinators: 2 });
74+
assertFalse(result.error);
75+
assertEqual(200, result.code);
76+
77+
result = arango.GET("/_admin/cluster/numberOfServers");
78+
assertFalse(result.error);
79+
assertEqual(200, result.code);
80+
assertNull(result.numberOfDBServers);
81+
assertEqual(2, result.numberOfCoordinators);
82+
assertEqual([], result.cleanedServers);
83+
},
84+
85+
};
86+
}
87+
88+
jsunity.run(numberOfServersSuite);
89+
return jsunity.done();

0 commit comments

Comments
 (0)
0