diff --git a/CHANGELOG b/CHANGELOG index f44ca08e32..ee1856ab12 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -47,7 +47,6 @@ devel * arangoimp: fixed issue #2214 - v3.2.alpha2 (2017-02-20) ------------------------ diff --git a/arangod/Aql/Query.h b/arangod/Aql/Query.h index 0c56093964..2b7019dfe8 100644 --- a/arangod/Aql/Query.h +++ b/arangod/Aql/Query.h @@ -61,7 +61,7 @@ class ExecutionEngine; class ExecutionPlan; class Executor; class Query; -class QueryProfile; +struct QueryProfile; class QueryRegistry; /// @brief equery part diff --git a/arangod/Aql/QueryList.cpp b/arangod/Aql/QueryList.cpp index 0ff01dcaa0..79c350f46f 100644 --- a/arangod/Aql/QueryList.cpp +++ b/arangod/Aql/QueryList.cpp @@ -23,11 +23,11 @@ #include "Aql/QueryList.h" #include "Aql/Query.h" -#include "Logger/Logger.h" #include "Basics/ReadLocker.h" #include "Basics/StringRef.h" #include "Basics/WriteLocker.h" #include "Basics/Exceptions.h" +#include "Logger/Logger.h" #include "VocBase/vocbase.h" using namespace arangodb::aql; diff --git a/arangod/MMFiles/MMFilesCollection.cpp b/arangod/MMFiles/MMFilesCollection.cpp index dc75f2c160..2cec1ae101 100644 --- a/arangod/MMFiles/MMFilesCollection.cpp +++ b/arangod/MMFiles/MMFilesCollection.cpp @@ -443,6 +443,10 @@ MMFilesCollection::MMFilesCollection(LogicalCollection* collection, ".journalSize too small"); } + auto pathSlice = info.get("path"); + if (pathSlice.isString()) { + _path = pathSlice.copyString(); + } setCompactionStatus("compaction not yet started"); } diff --git a/js/client/modules/@arangodb/testing.js b/js/client/modules/@arangodb/testing.js index edd9af309e..08d4c3ac0e 100644 --- a/js/client/modules/@arangodb/testing.js +++ b/js/client/modules/@arangodb/testing.js @@ -3402,6 +3402,7 @@ const recoveryTests = [ 'disk-full-logfile-data', 'disk-full-datafile', 'collection-drop-recreate', + 'collection-duplicate-name', 'create-with-temp', 'create-with-temp-old', 'create-collection-fail', diff --git a/js/server/tests/recovery/collection-duplicate-name.js b/js/server/tests/recovery/collection-duplicate-name.js new file mode 100644 index 0000000000..b781b5f03e --- /dev/null +++ b/js/server/tests/recovery/collection-duplicate-name.js @@ -0,0 +1,84 @@ +/* jshint globalstrict:false, strict:false, unused : false */ +/* global assertEqual, assertNull, assertTrue, assertFalse */ + +// ////////////////////////////////////////////////////////////////////////////// +// / @brief tests for dump/reload +// / +// / @file +// / +// / DISCLAIMER +// / +// / Copyright 2010-2012 triagens GmbH, Cologne, Germany +// / +// / Licensed under the Apache License, Version 2.0 (the "License") +// / you may not use this file except in compliance with the License. +// / You may obtain a copy of the License at +// / +// / http://www.apache.org/licenses/LICENSE-2.0 +// / +// / Unless required by applicable law or agreed to in writing, software +// / distributed under the License is distributed on an "AS IS" BASIS, +// / WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// / See the License for the specific language governing permissions and +// / limitations under the License. +// / +// / Copyright holder is ArangoDB GmbH, Cologne, Germany +// / +// / @author Michael Hackstein +// / @author Copyright 2017, ArangoDB GmbH, Cologne, Germany +// ////////////////////////////////////////////////////////////////////////////// + + +var db = require('@arangodb').db; +var internal = require('internal'); +var jsunity = require('jsunity'); + + +function runSetup () { + require("console").log("Hund"); + + db._drop('UnitTestsRecovery'); + db._create('UnitTestsRecovery'); + + try { + db._create('UnitTestsRecovery'); + } catch (e) { + // This intentionally should fail! + if (internal.errors.ERROR_ARANGO_DUPLICATE_NAME.code == e.errorNum) { + // Only this is a valid return code from the server + return 0; + } + } + // Fail if we get here. We somehow managed to save the same collection twice without error + return 1; +}; + + +function recoverySuite () { + 'use strict'; + + return { + setUp: function () {}, + tearDown: function () {}, + + testCollectionDuplicateName: function () { + require("console").log("Kartze"); + var c = db._collection('UnitTestsRecovery'); + assertTrue(c != null && c != undefined); + } + }; +}; + +// ////////////////////////////////////////////////////////////////////////////// +// / @brief executes the test suite +// ////////////////////////////////////////////////////////////////////////////// + +function main (argv) { + 'use strict'; + if (argv[1] === 'setup') { + return runSetup(); + } else { + jsunity.run(recoverySuite); + return jsunity.done(); + } +}