8000 Merge branch 'devel' of https://github.com/arangodb/arangodb into sha… · ezhangle/arangodb@454a6c9 · GitHub
[go: up one dir, main page]

Skip to content

Commit 454a6c9

Browse files
committed
Merge branch 'devel' of https://github.com/arangodb/arangodb into shaper-cxx
2 parents 6d7ccd7 + 412394f commit 454a6c9

File tree

3 files changed

+30
-34
lines changed

3 files changed

+30
-34
lines changed

arangod/Aql/Functions.cpp

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1714,15 +1714,6 @@ AqlValue Functions::Neighbors (triagens::aql::Query* query,
17141714

17151715
std::unordered_set<VertexId> neighbors;
17161716

1717-
std::vector<EdgeCollectionInfo*> edgeCollectionInfos;
1718-
triagens::basics::ScopeGuard guard{
1719-
[]() -> void { },
1720-
[&edgeCollectionInfos]() -> void {
1721-
for (auto& p : edgeCollectionInfos) {
1722-
delete p;
1723-
}
1724-
}
1725-
};
17261717

17271718
TRI_voc_cid_t eCid = resolver->getCollectionId(eColName);
17281719

@@ -1735,6 +1726,9 @@ AqlValue Functions::Neighbors (triagens::aql::Query* query,
17351726
trx->documentCollection(eCid),
17361727
wc
17371728
));
1729+
TRI_IF_FAILURE("EdgeCollectionInfoOOM1") {
1730+
THROW_ARANGO_EXCEPTION(TRI_ERROR_DEBUG);
1731+
}
17381732

17391733

17401734
if (n > 4) {
@@ -1744,8 +1738,20 @@ AqlValue Functions::Neighbors (triagens::aql::Query* query,
17441738
}
17451739
}
17461740

1741+
std::vector<EdgeCollectionInfo*> edgeCollectionInfos;
1742+
triagens::basics::ScopeGuard guard{
1743+
[]() -> void { },
1744+
[&edgeCollectionInfos]() -> void {
1745+
for (auto& p : edgeCollectionInfos) {
1746+
delete p;
1747+
}
1748+
}
1749+
};
17471750
edgeCollectionInfos.emplace_back(eci.get());
17481751
eci.release();
1752+
TRI_IF_FAILURE("EdgeCollectionInfoOOM2") {
1753+
THROW_ARANGO_EXCEPTION(TRI_ERROR_DEBUG);
1754+
}
17491755

17501756
TRI_RunNeighborsSearch(
17511757
edgeCollectionInfos,

js/server/tests/aql-graph.js

Lines changed: 3 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1793,28 +1793,6 @@ function ahuacatlQueryNeighborsErrorsSuite () {
17931793
/// @brief checks error handling in NEIGHBORS()
17941794
////////////////////////////////////////////////////////////////////////////////
17951795

1796-
testNeighborsNoVocbase : function () {
1797-
var v1 = vn + "/A";
1798-
var v2 = vn + "/B";
1799-
1800-
var queryStart = "FOR n IN NEIGHBORS(" + vn + " , " + en + ", '";
1801-
var queryEnd = "', 'outbound', [{_id: '" + en + "/AB'}]) SORT n RETURN n";
1802-
1803-
var actual = getQueryResults(queryStart + v1 + queryEnd);
1804-
// Positive Check
1805-
assertEqual(actual, [ v2 ]);
1806-
1807-
internal.debugSetFailAt("ExampleNoContextVocbase");
1808-
1809-
// Negative Check
1810-
try {
1811-
actual = getQueryResults(queryStart + v1 + queryEnd);
1812-
fail();
1813-
} catch (e) {
1814-
assertEqual(e.errorNum, errors.ERROR_ARANGO_DATABASE_NOT_FOUND.code);
1815-
}
1816-
},
1817-
18181796
testNeighborsDitchesOOM : function () {
18191797
var v1 = vn + "/A";
18201798
var v2 = vn + "/B";
@@ -1828,7 +1806,7 @@ function ahuacatlQueryNeighborsErrorsSuite () {
18281806
assertEqual(actual, [ v2, v3 ]);
18291807

18301808
internal.debugClearFailAt();
1831-
internal.debugSetFailAt("VertexCollectionDitchOOM");
1809+
internal.debugSetFailAt("EdgeCollectionInfoOOM1");
18321810

18331811
// Negative Check
18341812
try {
@@ -1839,7 +1817,7 @@ function ahuacatlQueryNeighborsErrorsSuite () {
18391817
}
18401818

18411819
internal.debugClearFailAt();
1842-
internal.debugSetFailAt("EdgeCollectionDitchOOM");
1820+
internal.debugSetFailAt("EdgeCollectionInfoOOM2");
18431821

18441822
// Negative Check
18451823
try {
@@ -1848,8 +1826,8 @@ function ahuacatlQueryNeighborsErrorsSuite () {
18481826
} catch (e) {
18491827
assertEqual(e.errorNum, errors.ERROR_DEBUG.code);
18501828
}
1829+
internal.debugClearFailAt();
18511830
}
1852-
18531831
};
18541832
}
18551833

lib/Basics/Traverser.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1315,6 +1315,11 @@ namespace triagens {
13151315
_rightFound.emplace(end, nullptr);
13161316
_leftClosure.emplace_back(start);
13171317
_rightClosure.emplace_back(end);
1318+
1319+
TRI_IF_FAILURE("TraversalOOMInitialize") {
1320+
THROW_ARANGO_EXCEPTION(TRI_ERROR_DEBUG);
1321+
}
1322+
13181323
std::vector<EdgeId> edges;
13191324
std::vector<VertexId> nei 1E0A ghbors;
13201325
while (_leftClosure.size() > 0 && _rightClosure.size() > 0) {
@@ -1347,6 +1352,9 @@ namespace triagens {
13471352
it = _rightFound.find(next);
13481353
}
13491354
res->weight = res->edges.size();
1355+
TRI_IF_FAILURE("TraversalOOMPath") {
1356+
THROW_ARANGO_EXCEPTION(TRI_ERROR_DEBUG);
1357+
}
13501358
return res.release();
13511359
}
13521360
_nextClosure.emplace_back(n);
@@ -1381,6 +1389,10 @@ namespace triagens {
13811389
it = _rightFound.find(next);
13821390
}
13831391
res->weight = res->edges.size();
1392+
1393+
TRI_IF_FAILURE("TraversalOOMPath") {
1394+
THROW_ARANGO_EXCEPTION(TRI_ERROR_DEBUG);
1395+
}
13841396
return res.release();
13851397
}
13861398
_nextClosure.emplace_back(n);

0 commit comments

Comments
 (0)
0