Journaler::Journaler(librados::IoCtx &header_ioctx,
const std::string &journal_id,
- const std::string &client_id)
+ const std::string &client_id, double commit_interval)
: m_client_id(client_id), m_metadata(NULL), m_player(NULL), m_recorder(NULL),
m_trimmer(NULL)
{
m_header_oid = JOURNAL_HEADER_PREFIX + journal_id;
m_object_oid_prefix = JOURNAL_OBJECT_PREFIX + journal_id + ".";
- // TODO configurable commit interval
m_metadata = new JournalMetadata(m_header_ioctx, m_header_oid, m_client_id,
- 5);
+ commit_interval);
m_metadata->get();
}
m_trimmer->committed(future_impl->get_commit_tid());
}
-void Journaler::start_append() {
+void Journaler::start_append(int flush_interval, uint64_t flush_bytes,
+ double flush_age) {
assert(m_recorder == NULL);
// TODO verify active object set >= current replay object set
- // TODO configurable flush intervals
m_recorder = new JournalRecorder(m_data_ioctx, m_object_oid_prefix,
- m_metadata, 0, 0, 0);
+ m_metadata, flush_interval, flush_bytes,
+ flush_age);
}
void Journaler::stop_append(Context *on_safe) {
class Journaler {
public:
Journaler(librados::IoCtx &header_ioctx, const std::string &journal_id,
- const std::string &client_id);
+ const std::string &client_id, double commit_interval);
~Journaler();
int create(uint8_t order, uint8_t splay_width, int64_t pool_id);
bool try_pop_front(ReplayEntry *replay_entry);
void stop_replay();
- void start_append();
+ void start_append(int flush_interval, uint64_t flush_bytes, double flush_age);
Future append(const std::string &tag, const bufferlist &bl);
void flush(Context *on_safe);
void stop_append(Context *on_safe);
virtual void SetUp() {
RadosTestFixture::SetUp();
m_journal_id = get_temp_journal_id();
- m_journaler = new journal::Journaler(m_ioctx, m_journal_id, CLIENT_ID);
+ m_journaler = new journal::Journaler(m_ioctx, m_journal_id, CLIENT_ID, 5);
}
virtual void TearDown() {
}
int register_client(const std::string &client_id, const std::string &desc) {
- journal::Journaler journaler(m_ioctx, m_journal_id, client_id);
+ journal::Journaler journaler(m_ioctx, m_journal_id, client_id, 5);
return journaler.register_client(desc);
}