mirror of
https://github.com/Xahau/xahaud.git
synced 2025-12-06 17:27:52 +00:00
Improved diagnostic for RocksDB error codes
Conflicts: Builds/VisualStudio2012/RippleD.vcxproj.filters
This commit is contained in:
@@ -105,10 +105,12 @@ class Status {
|
||||
kIncomplete = 7
|
||||
};
|
||||
|
||||
public:
|
||||
Code code() const {
|
||||
return (state_ == nullptr) ? kOk : static_cast<Code>(state_[4]);
|
||||
}
|
||||
|
||||
private:
|
||||
Status(Code code, const Slice& msg, const Slice& msg2);
|
||||
static const char* CopyState(const char* s);
|
||||
};
|
||||
|
||||
@@ -127,7 +127,8 @@ public:
|
||||
, m_nodeStoreScheduler (*m_jobQueue, *m_jobQueue)
|
||||
|
||||
, m_nodeStore (NodeStore::Database::New ("NodeStore.main", m_nodeStoreScheduler,
|
||||
getConfig ().nodeDatabase, getConfig ().ephemeralNodeDatabase))
|
||||
LogPartition::getJournal <NodeObject> (),
|
||||
getConfig ().nodeDatabase, getConfig ().ephemeralNodeDatabase))
|
||||
|
||||
, m_sntpClient (SNTPClient::New (*this))
|
||||
|
||||
@@ -1246,7 +1247,8 @@ void ApplicationImp::updateTables ()
|
||||
{
|
||||
NodeStore::DummyScheduler scheduler;
|
||||
ScopedPointer <NodeStore::Database> source (NodeStore::Database::New (
|
||||
"NodeStore.import", scheduler, getConfig ().importNodeDatabase));
|
||||
"NodeStore.import", scheduler, LogPartition::getJournal <NodeObject> (),
|
||||
getConfig ().importNodeDatabase));
|
||||
|
||||
WriteLog (lsWARNING, NodeObject) <<
|
||||
"Node import from '" << source->getName () << "' to '"
|
||||
|
||||
@@ -245,7 +245,8 @@ String SqliteFactory::getName () const
|
||||
NodeStore::Backend* SqliteFactory::createInstance (
|
||||
size_t keyBytes,
|
||||
NodeStore::Parameters const& keyValues,
|
||||
NodeStore::Scheduler& scheduler)
|
||||
NodeStore::Scheduler& scheduler,
|
||||
Journal)
|
||||
{
|
||||
return new BackendImp (keyBytes, keyValues ["path"].toStdString (), scheduler);
|
||||
}
|
||||
|
||||
@@ -39,7 +39,8 @@ public:
|
||||
|
||||
NodeStore::Backend* createInstance (size_t keyBytes,
|
||||
NodeStore::Parameters const& keyValues,
|
||||
NodeStore::Scheduler& scheduler);
|
||||
NodeStore::Scheduler& scheduler,
|
||||
Journal journal);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -64,6 +64,7 @@ public:
|
||||
*/
|
||||
static Database* New (char const* name,
|
||||
Scheduler& scheduler,
|
||||
Journal journal,
|
||||
Parameters const& backendParameters,
|
||||
Parameters fastBackendParameters = Parameters ());
|
||||
|
||||
|
||||
@@ -42,7 +42,8 @@ public:
|
||||
*/
|
||||
virtual Backend* createInstance (size_t keyBytes,
|
||||
Parameters const& parameters,
|
||||
Scheduler& scheduler) = 0;
|
||||
Scheduler& scheduler,
|
||||
Journal journal) = 0;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -37,7 +37,9 @@ enum Status
|
||||
ok,
|
||||
notFound,
|
||||
dataCorrupt,
|
||||
unknown
|
||||
unknown,
|
||||
|
||||
customCode = 100
|
||||
};
|
||||
|
||||
/** A batch of NodeObjects to write at once. */
|
||||
|
||||
@@ -249,7 +249,8 @@ String HyperDBFactory::getName () const
|
||||
Backend* HyperDBFactory::createInstance (
|
||||
size_t keyBytes,
|
||||
Parameters const& keyValues,
|
||||
Scheduler& scheduler)
|
||||
Scheduler& scheduler,
|
||||
Journal journal)
|
||||
{
|
||||
return new HyperDBFactory::BackendImp (keyBytes, keyValues, scheduler);
|
||||
}
|
||||
|
||||
@@ -44,7 +44,8 @@ public:
|
||||
|
||||
NodeStore::Backend* createInstance (size_t keyBytes,
|
||||
Parameters const& keyValues,
|
||||
NodeStore::Scheduler& scheduler);
|
||||
NodeStore::Scheduler& scheduler,
|
||||
Journal journal);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -184,7 +184,8 @@ String KeyvaDBFactory::getName () const
|
||||
Backend* KeyvaDBFactory::createInstance (
|
||||
size_t keyBytes,
|
||||
Parameters const& keyValues,
|
||||
Scheduler& scheduler)
|
||||
Scheduler& scheduler,
|
||||
Journal journal)
|
||||
{
|
||||
return new KeyvaDBFactory::BackendImp (keyBytes, keyValues, scheduler);
|
||||
}
|
||||
|
||||
@@ -42,7 +42,8 @@ public:
|
||||
|
||||
Backend* createInstance (size_t keyBytes,
|
||||
Parameters const& keyValues,
|
||||
Scheduler& scheduler);
|
||||
Scheduler& scheduler,
|
||||
Journal journal);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -258,7 +258,8 @@ String LevelDBFactory::getName () const
|
||||
Backend* LevelDBFactory::createInstance (
|
||||
size_t keyBytes,
|
||||
Parameters const& keyValues,
|
||||
Scheduler& scheduler)
|
||||
Scheduler& scheduler,
|
||||
Journal journal)
|
||||
{
|
||||
return new LevelDBFactory::BackendImp (keyBytes, keyValues, scheduler);
|
||||
}
|
||||
|
||||
@@ -42,7 +42,8 @@ public:
|
||||
|
||||
Backend* createInstance (size_t keyBytes,
|
||||
Parameters const& keyValues,
|
||||
Scheduler& scheduler);
|
||||
Scheduler& scheduler,
|
||||
Journal journal);
|
||||
|
||||
private:
|
||||
void* m_lruCache;
|
||||
|
||||
@@ -121,7 +121,8 @@ String MemoryFactory::getName () const
|
||||
Backend* MemoryFactory::createInstance (
|
||||
size_t keyBytes,
|
||||
Parameters const& keyValues,
|
||||
Scheduler& scheduler)
|
||||
Scheduler& scheduler,
|
||||
Journal journal)
|
||||
{
|
||||
return new MemoryFactory::BackendImp (keyBytes, keyValues, scheduler);
|
||||
}
|
||||
|
||||
@@ -42,7 +42,8 @@ public:
|
||||
|
||||
Backend* createInstance (size_t keyBytes,
|
||||
Parameters const& keyValues,
|
||||
Scheduler& scheduler);
|
||||
Scheduler& scheduler,
|
||||
Journal journal);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -86,7 +86,8 @@ String NullFactory::getName () const
|
||||
Backend* NullFactory::createInstance (
|
||||
size_t,
|
||||
Parameters const&,
|
||||
Scheduler& scheduler)
|
||||
Scheduler& scheduler,
|
||||
Journal journal)
|
||||
{
|
||||
return new NullFactory::BackendImp (scheduler);
|
||||
}
|
||||
|
||||
@@ -44,7 +44,8 @@ public:
|
||||
|
||||
Backend* createInstance (size_t keyBytes,
|
||||
Parameters const& keyValues,
|
||||
Scheduler& scheduler);
|
||||
Scheduler& scheduler,
|
||||
Journal journal);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -86,8 +86,10 @@ public:
|
||||
|
||||
BackendImp (int keyBytes,
|
||||
Parameters const& keyValues,
|
||||
Scheduler& scheduler)
|
||||
: m_keyBytes (keyBytes)
|
||||
Scheduler& scheduler,
|
||||
Journal journal)
|
||||
: m_journal (journal)
|
||||
, m_keyBytes (keyBytes)
|
||||
, m_scheduler (scheduler)
|
||||
, m_batch (*this, scheduler)
|
||||
, m_name (keyValues ["path"].toStdString ())
|
||||
@@ -200,7 +202,9 @@ public:
|
||||
}
|
||||
else
|
||||
{
|
||||
status = unknown;
|
||||
status = Status (customCode + getStatus.code());
|
||||
|
||||
m_journal.error << getStatus.ToString ();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -285,6 +289,7 @@ public:
|
||||
}
|
||||
|
||||
private:
|
||||
Journal m_journal;
|
||||
size_t const m_keyBytes;
|
||||
Scheduler& m_scheduler;
|
||||
BatchWriter m_batch;
|
||||
@@ -323,10 +328,10 @@ public:
|
||||
|
||||
Backend* createInstance (
|
||||
size_t keyBytes, Parameters const& keyValues,
|
||||
Scheduler& scheduler)
|
||||
Scheduler& scheduler, Journal journal)
|
||||
{
|
||||
return new RocksDBFactory::BackendImp (
|
||||
keyBytes, keyValues, scheduler);
|
||||
keyBytes, keyValues, scheduler, journal);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -28,11 +28,13 @@ public:
|
||||
DatabaseImp (char const* name,
|
||||
Scheduler& scheduler,
|
||||
Parameters const& backendParameters,
|
||||
Parameters const& fastBackendParameters)
|
||||
: m_scheduler (scheduler)
|
||||
, m_backend (createBackend (backendParameters, scheduler))
|
||||
Parameters const& fastBackendParameters,
|
||||
Journal journal)
|
||||
: m_journal (journal)
|
||||
, m_scheduler (scheduler)
|
||||
, m_backend (createBackend (backendParameters, scheduler, journal))
|
||||
, m_fastBackend ((fastBackendParameters.size () > 0)
|
||||
? createBackend (fastBackendParameters, scheduler) : nullptr)
|
||||
? createBackend (fastBackendParameters, scheduler, journal) : nullptr)
|
||||
, m_cache ("NodeStore", 16384, 300)
|
||||
{
|
||||
}
|
||||
@@ -259,7 +261,8 @@ public:
|
||||
fatal_error ("Your rippled.cfg is missing a [node_db] entry, please see the rippled-example.cfg file!");
|
||||
}
|
||||
|
||||
static Backend* createBackend (Parameters const& parameters, Scheduler& scheduler)
|
||||
static Backend* createBackend (Parameters const& parameters,
|
||||
Scheduler& scheduler, Journal journal)
|
||||
{
|
||||
Backend* backend = nullptr;
|
||||
|
||||
@@ -271,7 +274,8 @@ public:
|
||||
|
||||
if (factory != nullptr)
|
||||
{
|
||||
backend = factory->createInstance (NodeObject::keyBytes, parameters, scheduler);
|
||||
backend = factory->createInstance (
|
||||
NodeObject::keyBytes, parameters, scheduler, journal);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -289,6 +293,8 @@ public:
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
private:
|
||||
Journal m_journal;
|
||||
|
||||
Scheduler& m_scheduler;
|
||||
|
||||
// Persistent key/value storage.
|
||||
@@ -333,11 +339,12 @@ void Database::addAvailableBackends ()
|
||||
|
||||
Database* Database::New (char const* name,
|
||||
Scheduler& scheduler,
|
||||
Journal journal,
|
||||
Parameters const& backendParameters,
|
||||
Parameters fastBackendParameters)
|
||||
{
|
||||
return new DatabaseImp (name,
|
||||
scheduler, backendParameters, fastBackendParameters);
|
||||
scheduler, backendParameters, fastBackendParameters, journal);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -40,9 +40,12 @@ public:
|
||||
Batch batch;
|
||||
createPredictableBatch (batch, 0, numObjectsToTest, seedValue);
|
||||
|
||||
Journal j ((journal ()));
|
||||
|
||||
{
|
||||
// Open the backend
|
||||
ScopedPointer <Backend> backend (DatabaseImp::createBackend (params, scheduler));
|
||||
ScopedPointer <Backend> backend (DatabaseImp::createBackend (
|
||||
params, scheduler, j));
|
||||
|
||||
// Write the batch
|
||||
storeBatch (*backend, batch);
|
||||
@@ -65,7 +68,8 @@ public:
|
||||
|
||||
{
|
||||
// Re-open the backend
|
||||
ScopedPointer <Backend> backend (DatabaseImp::createBackend (params, scheduler));
|
||||
ScopedPointer <Backend> backend (DatabaseImp::createBackend (
|
||||
params, scheduler, j));
|
||||
|
||||
// Read it back in
|
||||
Batch copy;
|
||||
|
||||
@@ -47,9 +47,12 @@ public:
|
||||
Batch batch;
|
||||
createPredictableBatch (batch, 0, numObjectsToTest, seedValue);
|
||||
|
||||
Journal j ((journal ()));
|
||||
|
||||
// Write to source db
|
||||
{
|
||||
ScopedPointer <Database> src (Database::New ("test", scheduler, srcParams));
|
||||
ScopedPointer <Database> src (Database::New (
|
||||
"test", scheduler, j, srcParams));
|
||||
storeBatch (*src, batch);
|
||||
}
|
||||
|
||||
@@ -57,7 +60,8 @@ public:
|
||||
|
||||
{
|
||||
// Re-open the db
|
||||
ScopedPointer <Database> src (Database::New ("test", scheduler, srcParams));
|
||||
ScopedPointer <Database> src (Database::New (
|
||||
"test", scheduler, j, srcParams));
|
||||
|
||||
// Set up the destination database
|
||||
File const dest_db (File::createTempFile ("dest_db"));
|
||||
@@ -65,7 +69,8 @@ public:
|
||||
destParams.set ("type", destBackendType);
|
||||
destParams.set ("path", dest_db.getFullPathName ());
|
||||
|
||||
ScopedPointer <Database> dest (Database::New ("test", scheduler, destParams));
|
||||
ScopedPointer <Database> dest (Database::New (
|
||||
"test", scheduler, j, destParams));
|
||||
|
||||
beginTestCase (String ("import into '") + destBackendType + "' from '" + srcBackendType + "'");
|
||||
|
||||
@@ -80,7 +85,6 @@ public:
|
||||
std::sort (batch.begin (), batch.end (), NodeObject::LessThan ());
|
||||
std::sort (copy.begin (), copy.end (), NodeObject::LessThan ());
|
||||
expect (areBatchesEqual (batch, copy), "Should be equal");
|
||||
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
@@ -117,9 +121,12 @@ public:
|
||||
Batch batch;
|
||||
createPredictableBatch (batch, 0, numObjectsToTest, seedValue);
|
||||
|
||||
Journal j ((journal ()));
|
||||
|
||||
{
|
||||
// Open the database
|
||||
ScopedPointer <Database> db (Database::New ("test", scheduler, nodeParams, tempParams));
|
||||
ScopedPointer <Database> db (Database::New ("test", scheduler,
|
||||
j, nodeParams, tempParams));
|
||||
|
||||
// Write the batch
|
||||
storeBatch (*db, batch);
|
||||
@@ -144,7 +151,8 @@ public:
|
||||
{
|
||||
{
|
||||
// Re-open the database without the ephemeral DB
|
||||
ScopedPointer <Database> db (Database::New ("test", scheduler, nodeParams));
|
||||
ScopedPointer <Database> db (Database::New (
|
||||
"test", scheduler, j, nodeParams));
|
||||
|
||||
// Read it back in
|
||||
Batch copy;
|
||||
@@ -160,7 +168,7 @@ public:
|
||||
{
|
||||
// Verify the ephemeral db
|
||||
ScopedPointer <Database> db (Database::New ("test",
|
||||
scheduler, tempParams, StringPairArray ()));
|
||||
scheduler, j, tempParams, StringPairArray ()));
|
||||
|
||||
// Read it back in
|
||||
Batch copy;
|
||||
|
||||
@@ -77,8 +77,11 @@ public:
|
||||
NodeStore::Batch batch2;
|
||||
createPredictableBatch (batch2, 0, numObjectsToTest, seedValue);
|
||||
|
||||
Journal j ((journal ()));
|
||||
|
||||
// Open the backend
|
||||
ScopedPointer <Backend> backend (DatabaseImp::createBackend (params, scheduler));
|
||||
ScopedPointer <Backend> backend (DatabaseImp::createBackend (
|
||||
params, scheduler, j));
|
||||
|
||||
Stopwatch t;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user