From e017a338ba50323d87c24147ea1b64d7bd880b97 Mon Sep 17 00:00:00 2001 From: Kim van der Riet Date: Wed, 15 Jan 2014 22:33:26 +0000 Subject: QPID-5484 [linearstore] Poor performance relative to legacystore. Partial fix: The use of /dev/random exhausts the kernel's supply of non-deterministic random data, and calls to read from it block until enough is available. It has been determined that /dev/urandom is good enough for this use-case (Journal serial numbers), and does not suffer from blocking. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1558592 13f79535-47bb-0310-9956-ffa450edef68 --- qpid/cpp/src/qpid/linearstore/ISSUES | 9 ++++++++- qpid/cpp/src/qpid/linearstore/journal/JournalFile.cpp | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/qpid/cpp/src/qpid/linearstore/ISSUES b/qpid/cpp/src/qpid/linearstore/ISSUES index 8b5f8524dc..bcf3290857 100644 --- a/qpid/cpp/src/qpid/linearstore/ISSUES +++ b/qpid/cpp/src/qpid/linearstore/ISSUES @@ -40,12 +40,15 @@ Current/pending: 5464 - [linearstore] Incompletely created journal files accumulate in EFP 5479 1053701 [linearstore] Using recovered store results in "JERR_JNLF_FILEOFFSOVFL: Attempted to increase submitted offset past file size. (JournalFile::submittedDblkCount)" error message 5480 1053749 [linearstore] Recovery of store failure with "JERR_MAP_NOTFOUND: Key not found in map." error message - - 1035843 Slow performance for producers + 5484 1035843 Slow performance for producers - 1036026 [LinearStore] Qpid linear store unable to create durable queue - framing-error: Queue : create() failed: jexception 0x0000 UNABLE TO REPRODUCE - but Frantizek has additional info - 1039522 Qpid crashes while recovering from linear store around apid::linearstore::journal::JournalFile::getFqFileName() including enq_rec::decode() threw JERR_JREC_BAD_RECTAIL + * Possible dup of 1039525 + * May be fixed by QPID-5483 - waiting for needinfo - 1039525 Qpid crashes while recovering from linear store around apid::linearstore::journal::jexception::format including enq_rec::decode() threw JERR_JREC_BAD_REC_TAIL * Possible dup of 1039522 + * May be fixed by QPID-5483 - waiting for needinfo Fixed/closed: ============= @@ -73,6 +76,10 @@ NO-JIRA - Added missing Apache copyright/license text svn r.1556892 2014-01-09: Proposed fix 5473 1051924 [linearstore] Recovery of journal in which last logical file contains truncated record causes crash svn r.1557620 2014-01-12: Proposed fix + 5483 - [linearstore] Recovery of journal with partly written record fails with "JERR_JREC_BADRECTAIL: Invalid data record tail" error message + svn r.1558589 2014-01-15: Proposed fix + * May be linked to RHBZ 1039522 - waiting for needinfo + * May be linked to RHBZ 1039525 - waiting for needinfo Future: ======= diff --git a/qpid/cpp/src/qpid/linearstore/journal/JournalFile.cpp b/qpid/cpp/src/qpid/linearstore/journal/JournalFile.cpp index 8f6a311a84..129a9145d0 100644 --- a/qpid/cpp/src/qpid/linearstore/journal/JournalFile.cpp +++ b/qpid/cpp/src/qpid/linearstore/journal/JournalFile.cpp @@ -279,7 +279,7 @@ const std::string JournalFile::getFileName() const { //static uint64_t JournalFile::getRandom64() { - int randomData = ::open("/dev/random", O_RDONLY); + int randomData = ::open("/dev/urandom", O_RDONLY); if (randomData < 0) { throw jexception(); // TODO: Complete exception details } -- cgit v1.2.1