You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kp...@apache.org on 2014/04/01 22:33:15 UTC
svn commit: r1583778 - in /qpid/trunk/qpid: cpp/src/linearstore.cmake
cpp/src/qpid/linearstore/ISSUES tools/src/py/qls/jrnl.py
Author: kpvdr
Date: Tue Apr 1 20:33:15 2014
New Revision: 1583778
URL: http://svn.apache.org/r1583778
Log:
QPID-5362: Bugfix for qpid_qls_analyze
Modified:
qpid/trunk/qpid/cpp/src/linearstore.cmake
qpid/trunk/qpid/cpp/src/qpid/linearstore/ISSUES
qpid/trunk/qpid/tools/src/py/qls/jrnl.py
Modified: qpid/trunk/qpid/cpp/src/linearstore.cmake
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/linearstore.cmake?rev=1583778&r1=1583777&r2=1583778&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/linearstore.cmake (original)
+++ qpid/trunk/qpid/cpp/src/linearstore.cmake Tue Apr 1 20:33:15 2014
@@ -36,6 +36,9 @@ else (DEFINED linearstore_force)
CHECK_LIBRARY_EXISTS (aio io_queue_init "" HAVE_AIO)
CHECK_INCLUDE_FILES (libaio.h HAVE_AIO_H)
if (HAVE_AIO AND HAVE_AIO_H)
+ #
+ # allow linearstore to be built
+ #
message(STATUS "BerkeleyDB for C++ and libaio found, Linearstore support enabled")
set (linearstore_default ON)
else (HAVE_AIO AND HAVE_AIO_H)
Modified: qpid/trunk/qpid/cpp/src/qpid/linearstore/ISSUES
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/linearstore/ISSUES?rev=1583778&r1=1583777&r2=1583778&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/linearstore/ISSUES (original)
+++ qpid/trunk/qpid/cpp/src/qpid/linearstore/ISSUES Tue Apr 1 20:33:15 2014
@@ -39,21 +39,14 @@ Current/pending:
svn r.1560530 2014-01-22: Bugfixes for qpid_qls_analyze
svn r.1561848 2014-01-27: Bugfixes and enhancements for qpid_qls_analyze
svn r.1564808 2014-02-05: Bugfixes and enhancements for qpid_qls_analyze
+ svn r.1578899 2014-03-18: Bugfixes and enhancements for qpid_qls_analyze
* Store analysis and status
* Recovery/reading of message content
* Empty file pool status and management
5464 - [linearstore] Incompletely created journal files accumulate in EFP
- 5484 1035843 Slow performance for producers
- svn r.1558592 2014-01-15 fixes an issue with using /dev/random as a source of random numbers for Journal serial numbers.
- svn r.1558913 2014-01-16 replaces use of /dev/urandom with several calls to rand() to construct a 64-bit random number.
- * Recommend rebuilding and testing for performance again with these two fixes. Marked POST.
- - 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, recommend rebuilding with QPID-5483 fix and re-testing. Marked POST.
- - 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, recommend rebuilding with QPID-5483 fix and re-testing. Marked POST.
-# - 1049870 [LinearStore] auto-delete property does not survive restart
+# - 1078142 [linearstore] qpidd closes connection with (distributed) transactional client while checking previous transaction, broker signals error (closed by error: Queue Ve0-2: async_dequeue() failed: exception 0x0103 wmgr::get_events() threw JERR__AIO: AIO error)
+ * jexception 0x0103 wmgr::get_events() threw JERR__AIO: AIO error. (AIO write operation failed: Invalid argument (-22) [pg=0 size=8192 offset=4096 fh=22])
+ - 1078937 [linearstore] Installation and tests for new store analysis tool qpid-qls-analyze
Fixed/closed (in commit order):
===============================
@@ -85,8 +78,18 @@ NO-JIRA - Added missing Apache co
svn r.1558589 2014-01-15: Proposed fix
* May be linked to RHBZ 1039522 - VERIFIED
* May be linked to RHBZ 1039525 - VERIFIED
+ - 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, recommend rebuilding with QPID-5483 fix and re-testing. VERIFIED.
+ - 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, recommend rebuilding with QPID-5483 fix and re-testing. VERIFIED.
5487 1054448 [linearstore] Replace use of /dev/urandom with c random generator calls
svn r.1558913 2014-01-16: Proposed fix VEFIFIED
+ 5484 1035843 Slow performance for producers
+ svn r.1558592 2014-01-15 fixes an issue with using /dev/random as a source of random numbers for Journal serial numbers.
+ svn r.1558913 2014-01-16 replaces use of /dev/urandom with several calls to rand() to construct a 64-bit random number.
+ * Recommend rebuilding and testing for performance again with these two fixes. VERIFIED.
5479 1053701 [linearstore] Using recovered store results in "JERR_JNLF_FILEOFFSOVFL: Attempted to increase submitted offset past file size. (JournalFile::submittedDblkCount)" error message
* Probability: 2 of 600 (0.3%) using tx-test-soak.sh
* Fixed by checkin for QPID-5480, no longer able to reproduce. VERIFIED
@@ -108,6 +111,9 @@ NO-JIRA - Added missing Apache co
- 1036026 [LinearStore] Qpid linear store unable to create durable queue - framing-error: Queue <q-name>: create() failed: jexception 0x0000
* UNABLE TO REPRODUCE - but Frantizek has additional info
* Retested after checkin 1575009, problem solved. VERIFIED
+ 5651 - [C++ broker] segfault in qpid::linearstore::journal::jdir::clear_dir when declaring durable queue
+ svn r.1582730 2014-03-28 Proposed fix by Pavel Moravec
+ * Bug introduced by r.1578899.
Ordered checkin list:
=====================
@@ -137,6 +143,8 @@ no. svn r Q-JIRA RHBZ Date
20. 1564935 5361 - 2014-02-05
21. 1574513 5603 1063700 2014-03-05
22. 1575009 5607 1064181 2014-03-06
+23. 1578899 5362 - 2014-03-18
+24. 1582730 5651 - 2014-03-28
See above sections for details on these checkins.
Modified: qpid/trunk/qpid/tools/src/py/qls/jrnl.py
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/tools/src/py/qls/jrnl.py?rev=1583778&r1=1583777&r2=1583778&view=diff
==============================================================================
--- qpid/trunk/qpid/tools/src/py/qls/jrnl.py (original)
+++ qpid/trunk/qpid/tools/src/py/qls/jrnl.py Tue Apr 1 20:33:15 2014
@@ -63,7 +63,7 @@ class RecordHeader(object):
if self.serial != file_header.serial:
return False
return True
- def to_string(self):
+ def to_rh_string(self):
"""Return string representation of this header"""
if self.is_empty():
return '0x%08x: <empty>' % (self.file_offset)
@@ -80,7 +80,7 @@ class RecordHeader(object):
return warn_str
def __str__(self):
"""Return string representation of this header"""
- return RecordHeader.to_string(self)
+ return self.to_rh_string()
class RecordTail(object):
FORMAT = '<4sL2Q'
@@ -121,7 +121,7 @@ class RecordTail(object):
return '[%c cs=0x%08x rid=0x%x]' % (magic_char, self.checksum, self.record_id)
def __str__(self):
"""Return a string representation of the this RecordTail instance"""
- return RecordTail.to_string(self)
+ return self.to_string()
class FileHeader(RecordHeader):
FORMAT = '<2H4x5QH'
@@ -176,13 +176,13 @@ class FileHeader(RecordHeader):
return time.strftime(fstr, now)
def to_string(self):
"""Return a string representation of the this FileHeader instance"""
- return '%s fnum=0x%x fro=0x%08x p=%d s=%dk t=%s %s' % (RecordHeader.to_string(self), self.file_num,
+ return '%s fnum=0x%x fro=0x%08x p=%d s=%dk t=%s %s' % (self.to_rh_string(), self.file_num,
self.first_record_offset, self.partition_num,
self.efp_data_size_kb, self.timestamp_str(),
self._get_warnings())
def __str__(self):
"""Return a string representation of the this FileHeader instance"""
- return FileHeader.to_string(self)
+ return self.to_string()
class EnqueueRecord(RecordHeader):
FORMAT = '<2Q'
@@ -198,12 +198,12 @@ class EnqueueRecord(RecordHeader):
self.data_complete = False
self.record_tail = None
def checksum_encode(self): # encode excluding record tail
- bytes = RecordHeader.encode(self) + struct.pack(self.FORMAT, self.xid_size, self.data_size)
+ cs_bytes = RecordHeader.encode(self) + struct.pack(self.FORMAT, self.xid_size, self.data_size)
if self.xid is not None:
- bytes += self.xid
+ cs_bytes += self.xid
if self.data is not None:
- bytes += self.data
- return bytes
+ cs_bytes += self.data
+ return cs_bytes
def is_external(self):
return self.user_flags & EnqueueRecord.EXTERNAL_FLAG_MASK > 0
def is_transient(self):
@@ -253,7 +253,7 @@ class EnqueueRecord(RecordHeader):
record_tail_str = ''
else:
record_tail_str = self.record_tail.to_string()
- return '%s %s %s %s %s %s' % (RecordHeader.to_string(self),
+ return '%s %s %s %s %s %s' % (self.to_rh_string(),
qls.utils.format_xid(self.xid, self.xid_size, show_xid_flag),
qls.utils.format_data(self.data, self.data_size, show_data_flag),
record_tail_str, self._print_flags(), self._get_warnings())
@@ -272,7 +272,7 @@ class EnqueueRecord(RecordHeader):
return fstr
def __str__(self):
"""Return a string representation of the this EnqueueRecord instance"""
- return EnqueueRecord.to_string(self, False, False)
+ return self.to_string(False, False)
class DequeueRecord(RecordHeader):
FORMAT = '<2Q'
@@ -328,7 +328,7 @@ class DequeueRecord(RecordHeader):
record_tail_str = ''
else:
record_tail_str = self.record_tail.to_string()
- return '%s drid=0x%x %s %s %s %s' % (RecordHeader.to_string(self), self.dequeue_record_id,
+ return '%s drid=0x%x %s %s %s %s' % (self.to_rh_string(), self.dequeue_record_id,
qls.utils.format_xid(self.xid, self.xid_size, show_xid_flag),
record_tail_str, self._print_flags(), self._get_warnings())
def _print_flags(self):
@@ -341,7 +341,7 @@ class DequeueRecord(RecordHeader):
return ''
def __str__(self):
"""Return a string representation of the this DequeueRecord instance"""
- return DequeueRecord.to_string(self, False)
+ return self.to_string(False)
class TransactionRecord(RecordHeader):
FORMAT = '<Q'
@@ -387,12 +387,12 @@ class TransactionRecord(RecordHeader):
record_tail_str = ''
else:
record_tail_str = self.record_tail.to_string()
- return '%s %s %s %s' % (RecordHeader.to_string(self),
+ return '%s %s %s %s' % (self.to_rh_string(),
qls.utils.format_xid(self.xid, self.xid_size, show_xid_flag),
record_tail_str, self._get_warnings())
def __str__(self):
"""Return a string representation of the this TransactionRecord instance"""
- return TransactionRecord.to_string(self, False)
+ return self.to_string(False)
# =============================================================================
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org