93 unique_ptr<ICassandraFullscanPlan> plan
98 "Invalid sequence of operations, execution plan should not be overriden"
106 unsigned int max_retry_count
117 "Invalid sequence of operations, execution plan should be provided"
124 thread_count =
max(thread_count, 1UL);
127 "Invalid sequence of operations. Thread count is greater than max_active_statements total."
130 vector<thread> worker_threads;
131 vector<CCassandraFullscanWorker> workers;
133 worker_threads.reserve(thread_count - 1);
134 workers.reserve(thread_count);
137 if (thread_count > 1) {
152 auto consumer_factory_fn =
153 [
this]() -> unique_ptr<ICassandraFullscanConsumer> {
158 for (
size_t i = 0;
i < thread_count; ++
i) {
168 workers.emplace_back(move(worker));
172 for (
size_t i = 0;
i < workers.size() - 1; ++
i) {
173 worker_threads.emplace_back(
181 workers[workers.size() - 1]();
184 for (thread&
t : worker_threads) {
187 worker_threads.clear();
189 bool all_finished =
true;
190 for (
size_t i = 0;
i < workers.size(); ++
i) {
191 if (workers[
i].HadError()) {
193 "Fullscan failed: one of workers got exception with message - " + workers[
i].GetFirstError()
196 if (!workers[
i].IsFinished()) {
197 all_finished =
false;
#define BEGIN_IDBLOB_SCOPE
shared_ptr< CCassQuery > TQueryPtr
static const unsigned int kMaxRetryCountDefault
CCassandraFullscanRunner & SetConsumerFactory(TCassandraFullscanConsumerFactory consumer_factory)
unsigned int m_MaxActiveStatements
TCassandraFullscanConsumerFactory m_ConsumerFactory
unsigned int m_MaxRetryCount
CCassandraFullscanRunner()
CCassandraFullscanRunner & SetConsumerCreationPolicy(ECassandraFullscanConsumerPolicy policy)
CCassandraFullscanRunner & SetConsistency(CassConsistency value)
CCassandraFullscanRunner & SetMaxActiveStatements(unsigned int value)
static const unsigned int kMaxActiveStatementsDefault
static const unsigned int kPageSizeDefault
CCassandraFullscanRunner & SetThreadCount(size_t value)
mutex m_ConsumerFactoryMutex
CCassandraFullscanRunner & SetMaxRetryCount(unsigned int max_retry_count)
CCassandraFullscanRunner & SetExecutionPlan(unique_ptr< ICassandraFullscanPlan > plan)
ECassandraFullscanConsumerPolicy m_ConsumerCreationPolicy
TCassConsistency m_Consistency
unique_ptr< ICassandraFullscanPlan > m_ExecutionPlan
CCassandraFullscanRunner & SetPageSize(unsigned int value)
CCassandraFullscanWorker & SetMaxRetryCount(unsigned int max_retry_count)
function< CCassandraFullscanPlan::TQueryPtr()> TTaskProvider
CCassandraFullscanWorker & SetPageSize(unsigned int value)
CCassandraFullscanWorker & SetMaxActiveStatements(unsigned int value)
CCassandraFullscanWorker & SetConsumerCreationPolicy(ECassandraFullscanConsumerPolicy policy)
CCassandraFullscanWorker & SetTaskProvider(TTaskProvider provider)
CCassandraFullscanWorker & SetConsumerFactory(TCassandraFullscanConsumerFactory consumer_factory)
CCassandraFullscanWorker & SetConsistency(CassConsistency value)
virtual size_t GetQueryCount() const =0
virtual TQueryPtr GetNextQuery()=0
function< unique_ptr< ICassandraFullscanConsumer >()> TCassandraFullscanConsumerFactory
ECassandraFullscanConsumerPolicy
The NCBI C++ standard methods for dealing with std::string.
#define NCBI_THROW(exception_class, err_code, message)
Generic macro to throw an exception, given the exception class, error code and message string.
BEGIN_IDBLOB_SCOPE USING_NCBI_SCOPE