Skip to content

Commit db48786

Browse files
committed
Refactor[mqbs::FileSet]: combine data/journal/qlist data in a struct
Signed-off-by: Evgeny Malygin <emalygin@bloomberg.net>
1 parent 285e86c commit db48786

6 files changed

Lines changed: 414 additions & 402 deletions

File tree

src/groups/mqb/mqbc/mqbc_recoverymanager.cpp

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -889,26 +889,27 @@ int RecoveryManager::createRecoveryFileSet(bsl::ostream& errorDescription,
889889
}
890890

891891
RecoveryContext& recoveryCtx = d_recoveryContextVec[partitionId];
892-
recoveryCtx.d_recoveryFileSet.setJournalFile(fileSetSp->d_journalFileName)
892+
recoveryCtx.d_recoveryFileSet
893+
.setJournalFile(fileSetSp->d_journal.d_fileName)
893894
.setJournalFileSize(d_dataStoreConfig.maxJournalFileSize())
894-
.setDataFile(fileSetSp->d_dataFileName)
895+
.setDataFile(fileSetSp->d_data.d_fileName)
895896
.setDataFileSize(d_dataStoreConfig.maxDataFileSize())
896897
.setQlistFileSize(d_dataStoreConfig.maxQlistFileSize())
897-
.setQlistFile(fileSetSp->d_qlistFileName);
898+
.setQlistFile(fileSetSp->d_qlist.d_fileName);
898899

899900
mqbs::FileStoreUtil::loadCurrentFiles(&recoveryCtx.d_recoveryFileSet,
900901
*fileSetSp,
901902
d_qListAware); // needQList
902903

903-
recoveryCtx.d_mappedJournalFd = fileSetSp->d_journalFile;
904-
recoveryCtx.d_journalFilePosition = fileSetSp->d_journalFilePosition;
905-
recoveryCtx.d_mappedDataFd = fileSetSp->d_dataFile;
906-
recoveryCtx.d_dataFilePosition = fileSetSp->d_dataFilePosition;
904+
recoveryCtx.d_mappedJournalFd = fileSetSp->d_journal.d_file;
905+
recoveryCtx.d_journalFilePosition = fileSetSp->d_journal.d_filePosition;
906+
recoveryCtx.d_mappedDataFd = fileSetSp->d_data.d_file;
907+
recoveryCtx.d_dataFilePosition = fileSetSp->d_data.d_filePosition;
907908
BSLS_ASSERT_SAFE(recoveryCtx.d_mappedJournalFd.isValid());
908909
BSLS_ASSERT_SAFE(recoveryCtx.d_mappedDataFd.isValid());
909910
if (d_qListAware) {
910-
recoveryCtx.d_mappedQlistFd = fileSetSp->d_qlistFile;
911-
recoveryCtx.d_qlistFilePosition = fileSetSp->d_qlistFilePosition;
911+
recoveryCtx.d_mappedQlistFd = fileSetSp->d_qlist.d_file;
912+
recoveryCtx.d_qlistFilePosition = fileSetSp->d_qlist.d_filePosition;
912913
BSLS_ASSERT_SAFE(recoveryCtx.d_mappedQlistFd.isValid());
913914
}
914915

@@ -922,7 +923,7 @@ int RecoveryManager::createRecoveryFileSet(bsl::ostream& errorDescription,
922923
<< ", data file position: " << recoveryCtx.d_dataFilePosition;
923924
if (d_qListAware) {
924925
BALL_LOG_OUTPUT_STREAM << ", qlist file position: "
925-
<< fileSetSp->d_qlistFilePosition;
926+
<< fileSetSp->d_qlist.d_filePosition;
926927
}
927928
}
928929

src/groups/mqb/mqbs/mqbs_fileset.h

Lines changed: 37 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
#include <bslma_usesbslmaallocator.h>
3939
#include <bslmf_nestedtraitdeclaration.h>
4040
#include <bsls_atomic.h>
41-
#include <bsls_cpp11.h>
41+
#include <bsls_keyword.h>
4242
#include <bsls_types.h>
4343

4444
namespace BloombergLP {
@@ -53,36 +53,39 @@ class FileStore;
5353
// ==============
5454

5555
/// Value-semantic type representing a set of BlazingMQ data store files.
56-
struct FileSet BSLS_CPP11_FINAL {
56+
struct FileSet BSLS_KEYWORD_FINAL {
5757
public:
58-
// PUBLIC DATA
59-
FileStore* d_store_p;
60-
61-
mqbu::StorageKey d_dataFileKey;
62-
63-
MappedFileDescriptor d_dataFile;
64-
65-
MappedFileDescriptor d_journalFile;
66-
67-
MappedFileDescriptor d_qlistFile;
58+
// PUBLIC TYPES
6859

69-
bsls::Types::Uint64 d_dataFilePosition;
60+
/// Per-file-type information aggregated into a single struct.
61+
struct FileInfo {
62+
MappedFileDescriptor d_file;
63+
bsl::string d_fileName;
64+
bsls::Types::Uint64 d_filePosition;
65+
bsls::Types::Uint64 d_outstandingBytes;
7066

71-
bsls::Types::Uint64 d_journalFilePosition;
67+
// TRAITS
68+
BSLMF_NESTED_TRAIT_DECLARATION(FileInfo, bslma::UsesBslmaAllocator)
7269

73-
bsls::Types::Uint64 d_qlistFilePosition;
70+
// CREATORS
71+
explicit FileInfo(bslma::Allocator* allocator);
7472

75-
bsl::string d_dataFileName;
73+
private:
74+
// NOT IMPLEMENTED
75+
FileInfo(const FileInfo&) BSLS_KEYWORD_DELETED;
76+
FileInfo& operator=(const FileInfo&) BSLS_KEYWORD_DELETED;
77+
};
7678

77-
bsl::string d_journalFileName;
79+
// PUBLIC DATA
80+
FileStore* d_store_p;
7881

79-
bsl::string d_qlistFileName;
82+
mqbu::StorageKey d_dataFileKey;
8083

81-
bsls::Types::Uint64 d_outstandingBytesJournal;
84+
FileInfo d_data;
8285

83-
bsls::Types::Uint64 d_outstandingBytesData;
86+
FileInfo d_journal;
8487

85-
bsls::Types::Uint64 d_outstandingBytesQlist;
88+
FileInfo d_qlist;
8689

8790
bool d_journalFileAvailable;
8891

@@ -105,8 +108,8 @@ struct FileSet BSLS_CPP11_FINAL {
105108

106109
private:
107110
// NOT IMPLEMENTED
108-
FileSet(const FileSet&) BSLS_CPP11_DELETED;
109-
FileSet& operator=(const FileSet&) BSLS_CPP11_DELETED;
111+
FileSet(const FileSet&) BSLS_KEYWORD_DELETED;
112+
FileSet& operator=(const FileSet&) BSLS_KEYWORD_DELETED;
110113

111114
public:
112115
// TRAITS
@@ -130,21 +133,20 @@ struct FileSet BSLS_CPP11_FINAL {
130133
// -------------
131134

132135
// CREATORS
136+
inline FileSet::FileInfo::FileInfo(bslma::Allocator* allocator)
137+
: d_file()
138+
, d_fileName(allocator)
139+
, d_filePosition(0)
140+
, d_outstandingBytes(0)
141+
{
142+
}
143+
133144
inline FileSet::FileSet(FileStore* store, bslma::Allocator* allocator)
134145
: d_store_p(store)
135146
, d_dataFileKey()
136-
, d_dataFile()
137-
, d_journalFile()
138-
, d_qlistFile()
139-
, d_dataFilePosition(0)
140-
, d_journalFilePosition(0)
141-
, d_qlistFilePosition(0)
142-
, d_dataFileName(allocator)
143-
, d_journalFileName(allocator)
144-
, d_qlistFileName(allocator)
145-
, d_outstandingBytesJournal(0)
146-
, d_outstandingBytesData(0)
147-
, d_outstandingBytesQlist(0)
147+
, d_data(allocator)
148+
, d_journal(allocator)
149+
, d_qlist(allocator)
148150
, d_journalFileAvailable(true)
149151
, d_fileSetRolloverPolicyAlarm(false)
150152
, d_inlineGc(false)

src/groups/mqb/mqbs/mqbs_fileset.t.cpp

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -57,18 +57,18 @@ static void test1_breathingTest()
5757

5858
BMQTST_ASSERT_EQ(obj.d_store_p, static_cast<mqbs::FileStore*>(0));
5959
BMQTST_ASSERT_EQ(obj.d_dataFileKey.isNull(), true);
60-
BMQTST_ASSERT_EQ(obj.d_dataFile.isValid(), false);
61-
BMQTST_ASSERT_EQ(obj.d_journalFile.isValid(), false);
62-
BMQTST_ASSERT_EQ(obj.d_qlistFile.isValid(), false);
63-
BMQTST_ASSERT_EQ(obj.d_dataFilePosition, 0ULL);
64-
BMQTST_ASSERT_EQ(obj.d_journalFilePosition, 0ULL);
65-
BMQTST_ASSERT_EQ(obj.d_qlistFilePosition, 0ULL);
66-
BMQTST_ASSERT_EQ(obj.d_dataFileName.empty(), true);
67-
BMQTST_ASSERT_EQ(obj.d_journalFileName.empty(), true);
68-
BMQTST_ASSERT_EQ(obj.d_qlistFileName.empty(), true);
69-
BMQTST_ASSERT_EQ(obj.d_outstandingBytesJournal, 0ULL);
70-
BMQTST_ASSERT_EQ(obj.d_outstandingBytesData, 0ULL);
71-
BMQTST_ASSERT_EQ(obj.d_outstandingBytesQlist, 0ULL);
60+
BMQTST_ASSERT_EQ(obj.d_data.d_file.isValid(), false);
61+
BMQTST_ASSERT_EQ(obj.d_journal.d_file.isValid(), false);
62+
BMQTST_ASSERT_EQ(obj.d_qlist.d_file.isValid(), false);
63+
BMQTST_ASSERT_EQ(obj.d_data.d_filePosition, 0ULL);
64+
BMQTST_ASSERT_EQ(obj.d_journal.d_filePosition, 0ULL);
65+
BMQTST_ASSERT_EQ(obj.d_qlist.d_filePosition, 0ULL);
66+
BMQTST_ASSERT_EQ(obj.d_data.d_fileName.empty(), true);
67+
BMQTST_ASSERT_EQ(obj.d_journal.d_fileName.empty(), true);
68+
BMQTST_ASSERT_EQ(obj.d_qlist.d_fileName.empty(), true);
69+
BMQTST_ASSERT_EQ(obj.d_journal.d_outstandingBytes, 0ULL);
70+
BMQTST_ASSERT_EQ(obj.d_data.d_outstandingBytes, 0ULL);
71+
BMQTST_ASSERT_EQ(obj.d_qlist.d_outstandingBytes, 0ULL);
7272
BMQTST_ASSERT_EQ(obj.d_journalFileAvailable, true);
7373
BMQTST_ASSERT_EQ(obj.d_fileSetRolloverPolicyAlarm, false);
7474
BMQTST_ASSERT(!obj.d_aliasedChunk_sp);

0 commit comments

Comments
 (0)