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 2013/11/26 09:13:30 UTC
svn commit: r1545563 - in /qpid/trunk/qpid/cpp/src: linearstore.cmake
qpid/linearstore/journal/LinearFileController.cpp
qpid/linearstore/journal/LinearFileController.h
Author: kpvdr
Date: Tue Nov 26 08:13:30 2013
New Revision: 1545563
URL: http://svn.apache.org/r1545563
Log:
QPID-5357 "Linearstore: Empty file recycling not functional": Fix which implements the empty file check for trailing empty files.
Modified:
qpid/trunk/qpid/cpp/src/linearstore.cmake
qpid/trunk/qpid/cpp/src/qpid/linearstore/journal/LinearFileController.cpp
qpid/trunk/qpid/cpp/src/qpid/linearstore/journal/LinearFileController.h
Modified: qpid/trunk/qpid/cpp/src/linearstore.cmake
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/linearstore.cmake?rev=1545563&r1=1545562&r2=1545563&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/linearstore.cmake (original)
+++ qpid/trunk/qpid/cpp/src/linearstore.cmake Tue Nov 26 08:13:30 2013
@@ -147,10 +147,10 @@ if (BUILD_LINEARSTORE)
)
if(NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/db-inc.h)
- message(STATUS "Including BDB from ${DB_INCLUDE_DIR}/db_cxx.h")
+ message(STATUS "Including BDB from ${DB_CXX_INCLUDE_DIR}/db_cxx.h")
file(WRITE
${CMAKE_CURRENT_BINARY_DIR}/db-inc.h
- "#include <${DB_INCLUDE_DIR}/db_cxx.h>\n")
+ "#include <${DB_CXX_INCLUDE_DIR}/db_cxx.h>\n")
endif()
add_library (linearstoreutils SHARED
Modified: qpid/trunk/qpid/cpp/src/qpid/linearstore/journal/LinearFileController.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/linearstore/journal/LinearFileController.cpp?rev=1545563&r1=1545562&r2=1545563&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/linearstore/journal/LinearFileController.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/linearstore/journal/LinearFileController.cpp Tue Nov 26 08:13:30 2013
@@ -36,7 +36,8 @@ LinearFileController::LinearFileControll
emptyFilePoolPtr_(0),
currentJournalFilePtr_(0),
fileSeqCounter_("LinearFileController::fileSeqCounter", 0),
- recordIdCounter_("LinearFileController::recordIdCounter", 0)
+ recordIdCounter_("LinearFileController::recordIdCounter", 0),
+ decrCounter_("LinearFileController::decrCounter", 0)
{}
LinearFileController::~LinearFileController() {}
@@ -106,7 +107,15 @@ uint32_t LinearFileController::incrEnque
uint32_t LinearFileController::decrEnqueuedRecordCount(const efpFileCount_t fileSeqNumber) {
slock l(journalFileListMutex_);
uint32_t r = find(fileSeqNumber)->decrEnqueuedRecordCount();
-// purgeEmptyFilesToEfpNoLock();
+
+ // TODO: Re-evaluate after testing and profiling
+ // This is the first go at implementing auto-purge, which checks for all trailing empty files and recycles
+ // them back to the EFP. This version checks every 100 decrements using decrCounter_ (an action which releases
+ // records). We need to check this rather simple scheme works for outlying scenarios (large and tiny data
+ // records) without impacting performance or performing badly (leaving excessive empty files in the journals).
+ if (decrCounter_.increment() % 100ULL == 0ULL) {
+ purgeEmptyFilesToEfpNoLock();
+ }
return r;
}
Modified: qpid/trunk/qpid/cpp/src/qpid/linearstore/journal/LinearFileController.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/linearstore/journal/LinearFileController.h?rev=1545563&r1=1545562&r2=1545563&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/linearstore/journal/LinearFileController.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/linearstore/journal/LinearFileController.h Tue Nov 26 08:13:30 2013
@@ -47,6 +47,7 @@ protected:
JournalFile* currentJournalFilePtr_;
AtomicCounter<uint64_t> fileSeqCounter_;
AtomicCounter<uint64_t> recordIdCounter_;
+ AtomicCounter<uint64_t> decrCounter_;
JournalFileList_t journalFileList_;
smutex journalFileListMutex_;
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org