diff --git a/pom.xml b/pom.xml index 5850d587..73cf0747 100644 --- a/pom.xml +++ b/pom.xml @@ -188,12 +188,6 @@ ${hadoop.version} runtime - - commons-io - commons-io - 2.11.0 - test - org.apache.accumulo accumulo-test diff --git a/src/main/cpp/AccumuloProxy.cpp b/src/main/cpp/AccumuloProxy.cpp index 6faadd98..0bc8bc5e 100644 --- a/src/main/cpp/AccumuloProxy.cpp +++ b/src/main/cpp/AccumuloProxy.cpp @@ -2149,8 +2149,16 @@ uint32_t AccumuloProxy_compactTable_args::read(::apache::thrift::protocol::TProt break; case 8: if (ftype == ::apache::thrift::protocol::T_STRUCT) { - xfer += this->compactionStrategy.read(iprot); - this->__isset.compactionStrategy = true; + xfer += this->selectorConfig.read(iprot); + this->__isset.selectorConfig = true; + } else { + xfer += iprot->skip(ftype); + } + break; + case 9: + if (ftype == ::apache::thrift::protocol::T_STRUCT) { + xfer += this->configurerConfig.read(iprot); + this->__isset.configurerConfig = true; } else { xfer += iprot->skip(ftype); } @@ -2208,8 +2216,12 @@ uint32_t AccumuloProxy_compactTable_args::write(::apache::thrift::protocol::TPro xfer += oprot->writeBool(this->wait); xfer += oprot->writeFieldEnd(); - xfer += oprot->writeFieldBegin("compactionStrategy", ::apache::thrift::protocol::T_STRUCT, 8); - xfer += this->compactionStrategy.write(oprot); + xfer += oprot->writeFieldBegin("selectorConfig", ::apache::thrift::protocol::T_STRUCT, 8); + xfer += this->selectorConfig.write(oprot); + xfer += oprot->writeFieldEnd(); + + xfer += oprot->writeFieldBegin("configurerConfig", ::apache::thrift::protocol::T_STRUCT, 9); + xfer += this->configurerConfig.write(oprot); xfer += oprot->writeFieldEnd(); xfer += oprot->writeFieldStop(); @@ -2263,8 +2275,12 @@ uint32_t AccumuloProxy_compactTable_pargs::write(::apache::thrift::protocol::TPr xfer += oprot->writeBool((*(this->wait))); xfer += oprot->writeFieldEnd(); - xfer += oprot->writeFieldBegin("compactionStrategy", ::apache::thrift::protocol::T_STRUCT, 8); - xfer += (*(this->compactionStrategy)).write(oprot); + xfer += oprot->writeFieldBegin("selectorConfig", ::apache::thrift::protocol::T_STRUCT, 8); + xfer += (*(this->selectorConfig)).write(oprot); + xfer += oprot->writeFieldEnd(); + + xfer += oprot->writeFieldBegin("configurerConfig", ::apache::thrift::protocol::T_STRUCT, 9); + xfer += (*(this->configurerConfig)).write(oprot); xfer += oprot->writeFieldEnd(); xfer += oprot->writeFieldStop(); @@ -27334,13 +27350,13 @@ void AccumuloProxyClient::recv_cloneTable() return; } -void AccumuloProxyClient::compactTable(const std::string& login, const std::string& tableName, const std::string& startRow, const std::string& endRow, const std::vector & iterators, const bool flush, const bool wait, const CompactionStrategyConfig& compactionStrategy) +void AccumuloProxyClient::compactTable(const std::string& login, const std::string& tableName, const std::string& startRow, const std::string& endRow, const std::vector & iterators, const bool flush, const bool wait, const PluginConfig& selectorConfig, const PluginConfig& configurerConfig) { - send_compactTable(login, tableName, startRow, endRow, iterators, flush, wait, compactionStrategy); + send_compactTable(login, tableName, startRow, endRow, iterators, flush, wait, selectorConfig, configurerConfig); recv_compactTable(); } -void AccumuloProxyClient::send_compactTable(const std::string& login, const std::string& tableName, const std::string& startRow, const std::string& endRow, const std::vector & iterators, const bool flush, const bool wait, const CompactionStrategyConfig& compactionStrategy) +void AccumuloProxyClient::send_compactTable(const std::string& login, const std::string& tableName, const std::string& startRow, const std::string& endRow, const std::vector & iterators, const bool flush, const bool wait, const PluginConfig& selectorConfig, const PluginConfig& configurerConfig) { int32_t cseqid = 0; oprot_->writeMessageBegin("compactTable", ::apache::thrift::protocol::T_CALL, cseqid); @@ -27353,7 +27369,8 @@ void AccumuloProxyClient::send_compactTable(const std::string& login, const std: args.iterators = &iterators; args.flush = &flush; args.wait = &wait; - args.compactionStrategy = &compactionStrategy; + args.selectorConfig = &selectorConfig; + args.configurerConfig = &configurerConfig; args.write(oprot_); oprot_->writeMessageEnd(); @@ -33765,7 +33782,7 @@ void AccumuloProxyProcessor::process_compactTable(int32_t seqid, ::apache::thrif AccumuloProxy_compactTable_result result; try { - iface_->compactTable(args.login, args.tableName, args.startRow, args.endRow, args.iterators, args.flush, args.wait, args.compactionStrategy); + iface_->compactTable(args.login, args.tableName, args.startRow, args.endRow, args.iterators, args.flush, args.wait, args.selectorConfig, args.configurerConfig); } catch (AccumuloSecurityException &ouch1) { result.ouch1 = std::move(ouch1); result.__isset.ouch1 = true; @@ -40028,13 +40045,13 @@ void AccumuloProxyConcurrentClient::recv_cloneTable(const int32_t seqid) } // end while(true) } -void AccumuloProxyConcurrentClient::compactTable(const std::string& login, const std::string& tableName, const std::string& startRow, const std::string& endRow, const std::vector & iterators, const bool flush, const bool wait, const CompactionStrategyConfig& compactionStrategy) +void AccumuloProxyConcurrentClient::compactTable(const std::string& login, const std::string& tableName, const std::string& startRow, const std::string& endRow, const std::vector & iterators, const bool flush, const bool wait, const PluginConfig& selectorConfig, const PluginConfig& configurerConfig) { - int32_t seqid = send_compactTable(login, tableName, startRow, endRow, iterators, flush, wait, compactionStrategy); + int32_t seqid = send_compactTable(login, tableName, startRow, endRow, iterators, flush, wait, selectorConfig, configurerConfig); recv_compactTable(seqid); } -int32_t AccumuloProxyConcurrentClient::send_compactTable(const std::string& login, const std::string& tableName, const std::string& startRow, const std::string& endRow, const std::vector & iterators, const bool flush, const bool wait, const CompactionStrategyConfig& compactionStrategy) +int32_t AccumuloProxyConcurrentClient::send_compactTable(const std::string& login, const std::string& tableName, const std::string& startRow, const std::string& endRow, const std::vector & iterators, const bool flush, const bool wait, const PluginConfig& selectorConfig, const PluginConfig& configurerConfig) { int32_t cseqid = this->sync_->generateSeqId(); ::apache::thrift::async::TConcurrentSendSentry sentry(this->sync_.get()); @@ -40048,7 +40065,8 @@ int32_t AccumuloProxyConcurrentClient::send_compactTable(const std::string& logi args.iterators = &iterators; args.flush = &flush; args.wait = &wait; - args.compactionStrategy = &compactionStrategy; + args.selectorConfig = &selectorConfig; + args.configurerConfig = &configurerConfig; args.write(oprot_); oprot_->writeMessageEnd(); diff --git a/src/main/cpp/AccumuloProxy.h b/src/main/cpp/AccumuloProxy.h index 7ce9e32c..5d1f4201 100644 --- a/src/main/cpp/AccumuloProxy.h +++ b/src/main/cpp/AccumuloProxy.h @@ -47,7 +47,7 @@ class AccumuloProxyIf { virtual void checkIteratorConflicts(const std::string& login, const std::string& tableName, const IteratorSetting& setting, const std::set & scopes) = 0; virtual void clearLocatorCache(const std::string& login, const std::string& tableName) = 0; virtual void cloneTable(const std::string& login, const std::string& tableName, const std::string& newTableName, const bool flush, const std::map & propertiesToSet, const std::set & propertiesToExclude) = 0; - virtual void compactTable(const std::string& login, const std::string& tableName, const std::string& startRow, const std::string& endRow, const std::vector & iterators, const bool flush, const bool wait, const CompactionStrategyConfig& compactionStrategy) = 0; + virtual void compactTable(const std::string& login, const std::string& tableName, const std::string& startRow, const std::string& endRow, const std::vector & iterators, const bool flush, const bool wait, const PluginConfig& selectorConfig, const PluginConfig& configurerConfig) = 0; virtual void cancelCompaction(const std::string& login, const std::string& tableName) = 0; virtual void createTable(const std::string& login, const std::string& tableName, const bool versioningIter, const TimeType::type type) = 0; virtual void deleteTable(const std::string& login, const std::string& tableName) = 0; @@ -191,7 +191,7 @@ class AccumuloProxyNull : virtual public AccumuloProxyIf { void cloneTable(const std::string& /* login */, const std::string& /* tableName */, const std::string& /* newTableName */, const bool /* flush */, const std::map & /* propertiesToSet */, const std::set & /* propertiesToExclude */) override { return; } - void compactTable(const std::string& /* login */, const std::string& /* tableName */, const std::string& /* startRow */, const std::string& /* endRow */, const std::vector & /* iterators */, const bool /* flush */, const bool /* wait */, const CompactionStrategyConfig& /* compactionStrategy */) override { + void compactTable(const std::string& /* login */, const std::string& /* tableName */, const std::string& /* startRow */, const std::string& /* endRow */, const std::vector & /* iterators */, const bool /* flush */, const bool /* wait */, const PluginConfig& /* selectorConfig */, const PluginConfig& /* configurerConfig */) override { return; } void cancelCompaction(const std::string& /* login */, const std::string& /* tableName */) override { @@ -1454,7 +1454,7 @@ class AccumuloProxy_cloneTable_presult { }; typedef struct _AccumuloProxy_compactTable_args__isset { - _AccumuloProxy_compactTable_args__isset() : login(false), tableName(false), startRow(false), endRow(false), iterators(false), flush(false), wait(false), compactionStrategy(false) {} + _AccumuloProxy_compactTable_args__isset() : login(false), tableName(false), startRow(false), endRow(false), iterators(false), flush(false), wait(false), selectorConfig(false), configurerConfig(false) {} bool login :1; bool tableName :1; bool startRow :1; @@ -1462,7 +1462,8 @@ typedef struct _AccumuloProxy_compactTable_args__isset { bool iterators :1; bool flush :1; bool wait :1; - bool compactionStrategy :1; + bool selectorConfig :1; + bool configurerConfig :1; } _AccumuloProxy_compactTable_args__isset; class AccumuloProxy_compactTable_args { @@ -1487,7 +1488,8 @@ class AccumuloProxy_compactTable_args { std::vector iterators; bool flush; bool wait; - CompactionStrategyConfig compactionStrategy; + PluginConfig selectorConfig; + PluginConfig configurerConfig; _AccumuloProxy_compactTable_args__isset __isset; @@ -1505,7 +1507,9 @@ class AccumuloProxy_compactTable_args { void __set_wait(const bool val); - void __set_compactionStrategy(const CompactionStrategyConfig& val); + void __set_selectorConfig(const PluginConfig& val); + + void __set_configurerConfig(const PluginConfig& val); bool operator == (const AccumuloProxy_compactTable_args & rhs) const { @@ -1523,7 +1527,9 @@ class AccumuloProxy_compactTable_args { return false; if (!(wait == rhs.wait)) return false; - if (!(compactionStrategy == rhs.compactionStrategy)) + if (!(selectorConfig == rhs.selectorConfig)) + return false; + if (!(configurerConfig == rhs.configurerConfig)) return false; return true; } @@ -1551,7 +1557,8 @@ class AccumuloProxy_compactTable_pargs { const std::vector * iterators; const bool* flush; const bool* wait; - const CompactionStrategyConfig* compactionStrategy; + const PluginConfig* selectorConfig; + const PluginConfig* configurerConfig; uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const; @@ -14009,8 +14016,8 @@ class AccumuloProxyClient : virtual public AccumuloProxyIf { void cloneTable(const std::string& login, const std::string& tableName, const std::string& newTableName, const bool flush, const std::map & propertiesToSet, const std::set & propertiesToExclude) override; void send_cloneTable(const std::string& login, const std::string& tableName, const std::string& newTableName, const bool flush, const std::map & propertiesToSet, const std::set & propertiesToExclude); void recv_cloneTable(); - void compactTable(const std::string& login, const std::string& tableName, const std::string& startRow, const std::string& endRow, const std::vector & iterators, const bool flush, const bool wait, const CompactionStrategyConfig& compactionStrategy) override; - void send_compactTable(const std::string& login, const std::string& tableName, const std::string& startRow, const std::string& endRow, const std::vector & iterators, const bool flush, const bool wait, const CompactionStrategyConfig& compactionStrategy); + void compactTable(const std::string& login, const std::string& tableName, const std::string& startRow, const std::string& endRow, const std::vector & iterators, const bool flush, const bool wait, const PluginConfig& selectorConfig, const PluginConfig& configurerConfig) override; + void send_compactTable(const std::string& login, const std::string& tableName, const std::string& startRow, const std::string& endRow, const std::vector & iterators, const bool flush, const bool wait, const PluginConfig& selectorConfig, const PluginConfig& configurerConfig); void recv_compactTable(); void cancelCompaction(const std::string& login, const std::string& tableName) override; void send_cancelCompaction(const std::string& login, const std::string& tableName); @@ -14597,13 +14604,13 @@ class AccumuloProxyMultiface : virtual public AccumuloProxyIf { ifaces_[i]->cloneTable(login, tableName, newTableName, flush, propertiesToSet, propertiesToExclude); } - void compactTable(const std::string& login, const std::string& tableName, const std::string& startRow, const std::string& endRow, const std::vector & iterators, const bool flush, const bool wait, const CompactionStrategyConfig& compactionStrategy) override { + void compactTable(const std::string& login, const std::string& tableName, const std::string& startRow, const std::string& endRow, const std::vector & iterators, const bool flush, const bool wait, const PluginConfig& selectorConfig, const PluginConfig& configurerConfig) override { size_t sz = ifaces_.size(); size_t i = 0; for (; i < (sz - 1); ++i) { - ifaces_[i]->compactTable(login, tableName, startRow, endRow, iterators, flush, wait, compactionStrategy); + ifaces_[i]->compactTable(login, tableName, startRow, endRow, iterators, flush, wait, selectorConfig, configurerConfig); } - ifaces_[i]->compactTable(login, tableName, startRow, endRow, iterators, flush, wait, compactionStrategy); + ifaces_[i]->compactTable(login, tableName, startRow, endRow, iterators, flush, wait, selectorConfig, configurerConfig); } void cancelCompaction(const std::string& login, const std::string& tableName) override { @@ -15522,8 +15529,8 @@ class AccumuloProxyConcurrentClient : virtual public AccumuloProxyIf { void cloneTable(const std::string& login, const std::string& tableName, const std::string& newTableName, const bool flush, const std::map & propertiesToSet, const std::set & propertiesToExclude) override; int32_t send_cloneTable(const std::string& login, const std::string& tableName, const std::string& newTableName, const bool flush, const std::map & propertiesToSet, const std::set & propertiesToExclude); void recv_cloneTable(const int32_t seqid); - void compactTable(const std::string& login, const std::string& tableName, const std::string& startRow, const std::string& endRow, const std::vector & iterators, const bool flush, const bool wait, const CompactionStrategyConfig& compactionStrategy) override; - int32_t send_compactTable(const std::string& login, const std::string& tableName, const std::string& startRow, const std::string& endRow, const std::vector & iterators, const bool flush, const bool wait, const CompactionStrategyConfig& compactionStrategy); + void compactTable(const std::string& login, const std::string& tableName, const std::string& startRow, const std::string& endRow, const std::vector & iterators, const bool flush, const bool wait, const PluginConfig& selectorConfig, const PluginConfig& configurerConfig) override; + int32_t send_compactTable(const std::string& login, const std::string& tableName, const std::string& startRow, const std::string& endRow, const std::vector & iterators, const bool flush, const bool wait, const PluginConfig& selectorConfig, const PluginConfig& configurerConfig); void recv_compactTable(const int32_t seqid); void cancelCompaction(const std::string& login, const std::string& tableName) override; int32_t send_cancelCompaction(const std::string& login, const std::string& tableName); diff --git a/src/main/cpp/AccumuloProxy_server.skeleton.cpp b/src/main/cpp/AccumuloProxy_server.skeleton.cpp index 55aff1fd..b1e83fdb 100644 --- a/src/main/cpp/AccumuloProxy_server.skeleton.cpp +++ b/src/main/cpp/AccumuloProxy_server.skeleton.cpp @@ -73,7 +73,7 @@ class AccumuloProxyHandler : virtual public AccumuloProxyIf { printf("cloneTable\n"); } - void compactTable(const std::string& login, const std::string& tableName, const std::string& startRow, const std::string& endRow, const std::vector & iterators, const bool flush, const bool wait, const CompactionStrategyConfig& compactionStrategy) { + void compactTable(const std::string& login, const std::string& tableName, const std::string& startRow, const std::string& endRow, const std::vector & iterators, const bool flush, const bool wait, const PluginConfig& selectorConfig, const PluginConfig& configurerConfig) { // Your implementation goes here printf("compactTable\n"); } diff --git a/src/main/cpp/proxy_types.cpp b/src/main/cpp/proxy_types.cpp index e93bf1d5..c1e5d0cf 100644 --- a/src/main/cpp/proxy_types.cpp +++ b/src/main/cpp/proxy_types.cpp @@ -3913,25 +3913,25 @@ void WriterOptions::printTo(std::ostream& out) const { } -CompactionStrategyConfig::~CompactionStrategyConfig() noexcept { +PluginConfig::~PluginConfig() noexcept { } -void CompactionStrategyConfig::__set_className(const std::string& val) { +void PluginConfig::__set_className(const std::string& val) { this->className = val; } -void CompactionStrategyConfig::__set_options(const std::map & val) { +void PluginConfig::__set_options(const std::map & val) { this->options = val; } -std::ostream& operator<<(std::ostream& out, const CompactionStrategyConfig& obj) +std::ostream& operator<<(std::ostream& out, const PluginConfig& obj) { obj.printTo(out); return out; } -uint32_t CompactionStrategyConfig::read(::apache::thrift::protocol::TProtocol* iprot) { +uint32_t PluginConfig::read(::apache::thrift::protocol::TProtocol* iprot) { ::apache::thrift::protocol::TInputRecursionTracker tracker(*iprot); uint32_t xfer = 0; @@ -3995,10 +3995,10 @@ uint32_t CompactionStrategyConfig::read(::apache::thrift::protocol::TProtocol* i return xfer; } -uint32_t CompactionStrategyConfig::write(::apache::thrift::protocol::TProtocol* oprot) const { +uint32_t PluginConfig::write(::apache::thrift::protocol::TProtocol* oprot) const { uint32_t xfer = 0; ::apache::thrift::protocol::TOutputRecursionTracker tracker(*oprot); - xfer += oprot->writeStructBegin("CompactionStrategyConfig"); + xfer += oprot->writeStructBegin("PluginConfig"); xfer += oprot->writeFieldBegin("className", ::apache::thrift::protocol::T_STRING, 1); xfer += oprot->writeString(this->className); @@ -4022,27 +4022,27 @@ uint32_t CompactionStrategyConfig::write(::apache::thrift::protocol::TProtocol* return xfer; } -void swap(CompactionStrategyConfig &a, CompactionStrategyConfig &b) { +void swap(PluginConfig &a, PluginConfig &b) { using ::std::swap; swap(a.className, b.className); swap(a.options, b.options); swap(a.__isset, b.__isset); } -CompactionStrategyConfig::CompactionStrategyConfig(const CompactionStrategyConfig& other171) { +PluginConfig::PluginConfig(const PluginConfig& other171) { className = other171.className; options = other171.options; __isset = other171.__isset; } -CompactionStrategyConfig& CompactionStrategyConfig::operator=(const CompactionStrategyConfig& other172) { +PluginConfig& PluginConfig::operator=(const PluginConfig& other172) { className = other172.className; options = other172.options; __isset = other172.__isset; return *this; } -void CompactionStrategyConfig::printTo(std::ostream& out) const { +void PluginConfig::printTo(std::ostream& out) const { using ::apache::thrift::to_string; - out << "CompactionStrategyConfig("; + out << "PluginConfig("; out << "className=" << to_string(className); out << ", " << "options=" << to_string(options); out << ")"; diff --git a/src/main/cpp/proxy_types.h b/src/main/cpp/proxy_types.h index 47ab92e6..d580bd33 100644 --- a/src/main/cpp/proxy_types.h +++ b/src/main/cpp/proxy_types.h @@ -271,7 +271,7 @@ class ActiveCompaction; class WriterOptions; -class CompactionStrategyConfig; +class PluginConfig; class UnknownScanner; @@ -1600,32 +1600,32 @@ void swap(WriterOptions &a, WriterOptions &b); std::ostream& operator<<(std::ostream& out, const WriterOptions& obj); -typedef struct _CompactionStrategyConfig__isset { - _CompactionStrategyConfig__isset() : className(false), options(false) {} +typedef struct _PluginConfig__isset { + _PluginConfig__isset() : className(false), options(false) {} bool className :1; bool options :1; -} _CompactionStrategyConfig__isset; +} _PluginConfig__isset; -class CompactionStrategyConfig : public virtual ::apache::thrift::TBase { +class PluginConfig : public virtual ::apache::thrift::TBase { public: - CompactionStrategyConfig(const CompactionStrategyConfig&); - CompactionStrategyConfig& operator=(const CompactionStrategyConfig&); - CompactionStrategyConfig() noexcept - : className() { + PluginConfig(const PluginConfig&); + PluginConfig& operator=(const PluginConfig&); + PluginConfig() noexcept + : className() { } - virtual ~CompactionStrategyConfig() noexcept; + virtual ~PluginConfig() noexcept; std::string className; std::map options; - _CompactionStrategyConfig__isset __isset; + _PluginConfig__isset __isset; void __set_className(const std::string& val); void __set_options(const std::map & val); - bool operator == (const CompactionStrategyConfig & rhs) const + bool operator == (const PluginConfig & rhs) const { if (!(className == rhs.className)) return false; @@ -1633,11 +1633,11 @@ class CompactionStrategyConfig : public virtual ::apache::thrift::TBase { return false; return true; } - bool operator != (const CompactionStrategyConfig &rhs) const { + bool operator != (const PluginConfig &rhs) const { return !(*this == rhs); } - bool operator < (const CompactionStrategyConfig & ) const; + bool operator < (const PluginConfig & ) const; uint32_t read(::apache::thrift::protocol::TProtocol* iprot) override; uint32_t write(::apache::thrift::protocol::TProtocol* oprot) const override; @@ -1645,9 +1645,9 @@ class CompactionStrategyConfig : public virtual ::apache::thrift::TBase { virtual void printTo(std::ostream& out) const; }; -void swap(CompactionStrategyConfig &a, CompactionStrategyConfig &b); +void swap(PluginConfig &a, PluginConfig &b); -std::ostream& operator<<(std::ostream& out, const CompactionStrategyConfig& obj); +std::ostream& operator<<(std::ostream& out, const PluginConfig& obj); typedef struct _UnknownScanner__isset { _UnknownScanner__isset() : msg(false) {} diff --git a/src/main/java/org/apache/accumulo/proxy/ProxyServer.java b/src/main/java/org/apache/accumulo/proxy/ProxyServer.java index ce9a4e8d..c36c362b 100644 --- a/src/main/java/org/apache/accumulo/proxy/ProxyServer.java +++ b/src/main/java/org/apache/accumulo/proxy/ProxyServer.java @@ -60,6 +60,7 @@ import org.apache.accumulo.core.client.admin.ActiveScan; import org.apache.accumulo.core.client.admin.CompactionConfig; import org.apache.accumulo.core.client.admin.NewTableConfiguration; +import org.apache.accumulo.core.client.admin.PluginConfig; import org.apache.accumulo.core.client.admin.TimeType; import org.apache.accumulo.core.client.security.SecurityErrorCode; import org.apache.accumulo.core.client.security.tokens.AuthenticationToken; @@ -89,7 +90,6 @@ import org.apache.accumulo.proxy.thrift.BatchScanOptions; import org.apache.accumulo.proxy.thrift.ColumnUpdate; import org.apache.accumulo.proxy.thrift.CompactionReason; -import org.apache.accumulo.proxy.thrift.CompactionStrategyConfig; import org.apache.accumulo.proxy.thrift.CompactionType; import org.apache.accumulo.proxy.thrift.Condition; import org.apache.accumulo.proxy.thrift.ConditionalStatus; @@ -396,7 +396,8 @@ public void clearLocatorCache(ByteBuffer login, String tableName) @Override public void compactTable(ByteBuffer login, String tableName, ByteBuffer startRow, ByteBuffer endRow, List iterators, - boolean flush, boolean wait, CompactionStrategyConfig compactionStrategy) + boolean flush, boolean wait, org.apache.accumulo.proxy.thrift.PluginConfig selectorConfig, + org.apache.accumulo.proxy.thrift.PluginConfig configurerConfig) throws org.apache.accumulo.proxy.thrift.AccumuloSecurityException, org.apache.accumulo.proxy.thrift.TableNotFoundException, org.apache.accumulo.proxy.thrift.AccumuloException, TException { @@ -405,14 +406,26 @@ public void compactTable(ByteBuffer login, String tableName, ByteBuffer startRow .setStartRow(ByteBufferUtil.toText(startRow)).setEndRow(ByteBufferUtil.toText(endRow)) .setIterators(getIteratorSettings(iterators)).setFlush(flush).setWait(wait); - if (compactionStrategy != null) { - org.apache.accumulo.core.client.admin.CompactionStrategyConfig ccc = - new org.apache.accumulo.core.client.admin.CompactionStrategyConfig( - compactionStrategy.getClassName()); - if (compactionStrategy.options != null) { - ccc.setOptions(compactionStrategy.options); - } - compactionConfig.setCompactionStrategy(ccc); + if (selectorConfig != null) { + Map options = + selectorConfig.options == null ? Map.of() : selectorConfig.options; + + org.apache.accumulo.core.client.admin.PluginConfig spc = + new org.apache.accumulo.core.client.admin.PluginConfig(selectorConfig.getClassName(), + options); + + compactionConfig.setSelector(spc); + } + + if (configurerConfig != null) { + Map options = + configurerConfig.options == null ? Map.of() : configurerConfig.options; + + org.apache.accumulo.core.client.admin.PluginConfig cpc = + new org.apache.accumulo.core.client.admin.PluginConfig(configurerConfig.getClassName(), + options); + + compactionConfig.setConfigurer(cpc); } getConnector(login).tableOperations().compact(tableName, compactionConfig); diff --git a/src/main/python/accumulo/AccumuloProxy-remote b/src/main/python/accumulo/AccumuloProxy-remote index 2aa979b9..096b0589 100644 --- a/src/main/python/accumulo/AccumuloProxy-remote +++ b/src/main/python/accumulo/AccumuloProxy-remote @@ -47,7 +47,7 @@ if len(sys.argv) <= 1 or sys.argv[1] == '--help': print(' void checkIteratorConflicts(string login, string tableName, IteratorSetting setting, scopes)') print(' void clearLocatorCache(string login, string tableName)') print(' void cloneTable(string login, string tableName, string newTableName, bool flush, propertiesToSet, propertiesToExclude)') - print(' void compactTable(string login, string tableName, string startRow, string endRow, iterators, bool flush, bool wait, CompactionStrategyConfig compactionStrategy)') + print(' void compactTable(string login, string tableName, string startRow, string endRow, iterators, bool flush, bool wait, PluginConfig selectorConfig, PluginConfig configurerConfig)') print(' void cancelCompaction(string login, string tableName)') print(' void createTable(string login, string tableName, bool versioningIter, TimeType type)') print(' void deleteTable(string login, string tableName)') @@ -262,10 +262,10 @@ elif cmd == 'cloneTable': pp.pprint(client.cloneTable(args[0], args[1], args[2], eval(args[3]), eval(args[4]), eval(args[5]),)) elif cmd == 'compactTable': - if len(args) != 8: - print('compactTable requires 8 args') + if len(args) != 9: + print('compactTable requires 9 args') sys.exit(1) - pp.pprint(client.compactTable(args[0], args[1], args[2], args[3], eval(args[4]), eval(args[5]), eval(args[6]), eval(args[7]),)) + pp.pprint(client.compactTable(args[0], args[1], args[2], args[3], eval(args[4]), eval(args[5]), eval(args[6]), eval(args[7]), eval(args[8]),)) elif cmd == 'cancelCompaction': if len(args) != 2: diff --git a/src/main/python/accumulo/AccumuloProxy.py b/src/main/python/accumulo/AccumuloProxy.py index bbf16808..39619939 100644 --- a/src/main/python/accumulo/AccumuloProxy.py +++ b/src/main/python/accumulo/AccumuloProxy.py @@ -108,7 +108,7 @@ def cloneTable(self, login, tableName, newTableName, flush, propertiesToSet, pro """ pass - def compactTable(self, login, tableName, startRow, endRow, iterators, flush, wait, compactionStrategy): + def compactTable(self, login, tableName, startRow, endRow, iterators, flush, wait, selectorConfig, configurerConfig): """ Parameters: - login @@ -118,7 +118,8 @@ def compactTable(self, login, tableName, startRow, endRow, iterators, flush, wai - iterators - flush - wait - - compactionStrategy + - selectorConfig + - configurerConfig """ pass @@ -1296,7 +1297,7 @@ def recv_cloneTable(self): raise result.ouch4 return - def compactTable(self, login, tableName, startRow, endRow, iterators, flush, wait, compactionStrategy): + def compactTable(self, login, tableName, startRow, endRow, iterators, flush, wait, selectorConfig, configurerConfig): """ Parameters: - login @@ -1306,13 +1307,14 @@ def compactTable(self, login, tableName, startRow, endRow, iterators, flush, wai - iterators - flush - wait - - compactionStrategy + - selectorConfig + - configurerConfig """ - self.send_compactTable(login, tableName, startRow, endRow, iterators, flush, wait, compactionStrategy) + self.send_compactTable(login, tableName, startRow, endRow, iterators, flush, wait, selectorConfig, configurerConfig) self.recv_compactTable() - def send_compactTable(self, login, tableName, startRow, endRow, iterators, flush, wait, compactionStrategy): + def send_compactTable(self, login, tableName, startRow, endRow, iterators, flush, wait, selectorConfig, configurerConfig): self._oprot.writeMessageBegin('compactTable', TMessageType.CALL, self._seqid) args = compactTable_args() args.login = login @@ -1322,7 +1324,8 @@ def send_compactTable(self, login, tableName, startRow, endRow, iterators, flush args.iterators = iterators args.flush = flush args.wait = wait - args.compactionStrategy = compactionStrategy + args.selectorConfig = selectorConfig + args.configurerConfig = configurerConfig args.write(self._oprot) self._oprot.writeMessageEnd() self._oprot.trans.flush() @@ -5274,7 +5277,7 @@ def process_compactTable(self, seqid, iprot, oprot): iprot.readMessageEnd() result = compactTable_result() try: - self._handler.compactTable(args.login, args.tableName, args.startRow, args.endRow, args.iterators, args.flush, args.wait, args.compactionStrategy) + self._handler.compactTable(args.login, args.tableName, args.startRow, args.endRow, args.iterators, args.flush, args.wait, args.selectorConfig, args.configurerConfig) msg_type = TMessageType.REPLY except TTransport.TTransportException: raise @@ -9360,12 +9363,13 @@ class compactTable_args(object): - iterators - flush - wait - - compactionStrategy + - selectorConfig + - configurerConfig """ - def __init__(self, login=None, tableName=None, startRow=None, endRow=None, iterators=None, flush=None, wait=None, compactionStrategy=None,): + def __init__(self, login=None, tableName=None, startRow=None, endRow=None, iterators=None, flush=None, wait=None, selectorConfig=None, configurerConfig=None,): self.login = login self.tableName = tableName self.startRow = startRow @@ -9373,7 +9377,8 @@ def __init__(self, login=None, tableName=None, startRow=None, endRow=None, itera self.iterators = iterators self.flush = flush self.wait = wait - self.compactionStrategy = compactionStrategy + self.selectorConfig = selectorConfig + self.configurerConfig = configurerConfig def read(self, iprot): if iprot._fast_decode is not None and isinstance(iprot.trans, TTransport.CReadableTransport) and self.thrift_spec is not None: @@ -9427,8 +9432,14 @@ def read(self, iprot): iprot.skip(ftype) elif fid == 8: if ftype == TType.STRUCT: - self.compactionStrategy = CompactionStrategyConfig() - self.compactionStrategy.read(iprot) + self.selectorConfig = PluginConfig() + self.selectorConfig.read(iprot) + else: + iprot.skip(ftype) + elif fid == 9: + if ftype == TType.STRUCT: + self.configurerConfig = PluginConfig() + self.configurerConfig.read(iprot) else: iprot.skip(ftype) else: @@ -9472,9 +9483,13 @@ def write(self, oprot): oprot.writeFieldBegin('wait', TType.BOOL, 7) oprot.writeBool(self.wait) oprot.writeFieldEnd() - if self.compactionStrategy is not None: - oprot.writeFieldBegin('compactionStrategy', TType.STRUCT, 8) - self.compactionStrategy.write(oprot) + if self.selectorConfig is not None: + oprot.writeFieldBegin('selectorConfig', TType.STRUCT, 8) + self.selectorConfig.write(oprot) + oprot.writeFieldEnd() + if self.configurerConfig is not None: + oprot.writeFieldBegin('configurerConfig', TType.STRUCT, 9) + self.configurerConfig.write(oprot) oprot.writeFieldEnd() oprot.writeFieldStop() oprot.writeStructEnd() @@ -9502,7 +9517,8 @@ def __ne__(self, other): (5, TType.LIST, 'iterators', (TType.STRUCT, [IteratorSetting, None], False), None, ), # 5 (6, TType.BOOL, 'flush', None, None, ), # 6 (7, TType.BOOL, 'wait', None, None, ), # 7 - (8, TType.STRUCT, 'compactionStrategy', [CompactionStrategyConfig, None], None, ), # 8 + (8, TType.STRUCT, 'selectorConfig', [PluginConfig, None], None, ), # 8 + (9, TType.STRUCT, 'configurerConfig', [PluginConfig, None], None, ), # 9 ) diff --git a/src/main/python/accumulo/ttypes.py b/src/main/python/accumulo/ttypes.py index 486318fd..df49b4e4 100644 --- a/src/main/python/accumulo/ttypes.py +++ b/src/main/python/accumulo/ttypes.py @@ -2276,7 +2276,7 @@ def __ne__(self, other): return not (self == other) -class CompactionStrategyConfig(object): +class PluginConfig(object): """ Attributes: - className @@ -2323,7 +2323,7 @@ def write(self, oprot): if oprot._fast_encode is not None and self.thrift_spec is not None: oprot.trans.write(oprot._fast_encode(self, [self.__class__, self.thrift_spec])) return - oprot.writeStructBegin('CompactionStrategyConfig') + oprot.writeStructBegin('PluginConfig') if self.className is not None: oprot.writeFieldBegin('className', TType.STRING, 1) oprot.writeString(self.className.encode('utf-8') if sys.version_info[0] == 2 else self.className) @@ -3314,8 +3314,8 @@ def __ne__(self, other): (4, TType.I32, 'threads', None, None, ), # 4 (5, TType.I32, 'durability', None, None, ), # 5 ) -all_structs.append(CompactionStrategyConfig) -CompactionStrategyConfig.thrift_spec = ( +all_structs.append(PluginConfig) +PluginConfig.thrift_spec = ( None, # 0 (1, TType.STRING, 'className', 'UTF8', None, ), # 1 (2, TType.MAP, 'options', (TType.STRING, 'UTF8', TType.STRING, 'UTF8', False), None, ), # 2 diff --git a/src/main/ruby/accumulo/lib/accumulo_proxy.rb b/src/main/ruby/accumulo/lib/accumulo_proxy.rb index a09c77e3..43731f77 100644 --- a/src/main/ruby/accumulo/lib/accumulo_proxy.rb +++ b/src/main/ruby/accumulo/lib/accumulo_proxy.rb @@ -146,13 +146,13 @@ def recv_cloneTable() return end - def compactTable(login, tableName, startRow, endRow, iterators, flush, wait, compactionStrategy) - send_compactTable(login, tableName, startRow, endRow, iterators, flush, wait, compactionStrategy) + def compactTable(login, tableName, startRow, endRow, iterators, flush, wait, selectorConfig, configurerConfig) + send_compactTable(login, tableName, startRow, endRow, iterators, flush, wait, selectorConfig, configurerConfig) recv_compactTable() end - def send_compactTable(login, tableName, startRow, endRow, iterators, flush, wait, compactionStrategy) - send_message('compactTable', CompactTable_args, :login => login, :tableName => tableName, :startRow => startRow, :endRow => endRow, :iterators => iterators, :flush => flush, :wait => wait, :compactionStrategy => compactionStrategy) + def send_compactTable(login, tableName, startRow, endRow, iterators, flush, wait, selectorConfig, configurerConfig) + send_message('compactTable', CompactTable_args, :login => login, :tableName => tableName, :startRow => startRow, :endRow => endRow, :iterators => iterators, :flush => flush, :wait => wait, :selectorConfig => selectorConfig, :configurerConfig => configurerConfig) end def recv_compactTable() @@ -1820,7 +1820,7 @@ def process_compactTable(seqid, iprot, oprot) args = read_args(iprot, CompactTable_args) result = CompactTable_result.new() begin - @handler.compactTable(args.login, args.tableName, args.startRow, args.endRow, args.iterators, args.flush, args.wait, args.compactionStrategy) + @handler.compactTable(args.login, args.tableName, args.startRow, args.endRow, args.iterators, args.flush, args.wait, args.selectorConfig, args.configurerConfig) rescue ::Accumulo::AccumuloSecurityException => ouch1 result.ouch1 = ouch1 rescue ::Accumulo::TableNotFoundException => ouch2 @@ -3377,7 +3377,8 @@ class CompactTable_args ITERATORS = 5 FLUSH = 6 WAIT = 7 - COMPACTIONSTRATEGY = 8 + SELECTORCONFIG = 8 + CONFIGURERCONFIG = 9 FIELDS = { LOGIN => {:type => ::Thrift::Types::STRING, :name => 'login', :binary => true}, @@ -3387,7 +3388,8 @@ class CompactTable_args ITERATORS => {:type => ::Thrift::Types::LIST, :name => 'iterators', :element => {:type => ::Thrift::Types::STRUCT, :class => ::Accumulo::IteratorSetting}}, FLUSH => {:type => ::Thrift::Types::BOOL, :name => 'flush'}, WAIT => {:type => ::Thrift::Types::BOOL, :name => 'wait'}, - COMPACTIONSTRATEGY => {:type => ::Thrift::Types::STRUCT, :name => 'compactionStrategy', :class => ::Accumulo::CompactionStrategyConfig} + SELECTORCONFIG => {:type => ::Thrift::Types::STRUCT, :name => 'selectorConfig', :class => ::Accumulo::PluginConfig}, + CONFIGURERCONFIG => {:type => ::Thrift::Types::STRUCT, :name => 'configurerConfig', :class => ::Accumulo::PluginConfig} } def struct_fields; FIELDS; end diff --git a/src/main/ruby/accumulo/lib/proxy_types.rb b/src/main/ruby/accumulo/lib/proxy_types.rb index 22f9b468..018b4570 100644 --- a/src/main/ruby/accumulo/lib/proxy_types.rb +++ b/src/main/ruby/accumulo/lib/proxy_types.rb @@ -183,7 +183,7 @@ class ActiveCompaction; end class WriterOptions; end - class CompactionStrategyConfig; end + class PluginConfig; end class UnknownScanner < ::Thrift::Exception; end @@ -655,7 +655,7 @@ def validate ::Thrift::Struct.generate_accessors self end - class CompactionStrategyConfig + class PluginConfig include ::Thrift::Struct, ::Thrift::Struct_Union CLASSNAME = 1 OPTIONS = 2 diff --git a/src/main/thrift-gen-java/org/apache/accumulo/proxy/thrift/AccumuloProxy.java b/src/main/thrift-gen-java/org/apache/accumulo/proxy/thrift/AccumuloProxy.java index 3caf1c8f..601f1269 100644 --- a/src/main/thrift-gen-java/org/apache/accumulo/proxy/thrift/AccumuloProxy.java +++ b/src/main/thrift-gen-java/org/apache/accumulo/proxy/thrift/AccumuloProxy.java @@ -43,7 +43,7 @@ public interface Iface { public void cloneTable(java.nio.ByteBuffer login, java.lang.String tableName, java.lang.String newTableName, boolean flush, java.util.Map propertiesToSet, java.util.Set propertiesToExclude) throws AccumuloException, AccumuloSecurityException, TableNotFoundException, TableExistsException, org.apache.thrift.TException; - public void compactTable(java.nio.ByteBuffer login, java.lang.String tableName, java.nio.ByteBuffer startRow, java.nio.ByteBuffer endRow, java.util.List iterators, boolean flush, boolean wait, CompactionStrategyConfig compactionStrategy) throws AccumuloSecurityException, TableNotFoundException, AccumuloException, org.apache.thrift.TException; + public void compactTable(java.nio.ByteBuffer login, java.lang.String tableName, java.nio.ByteBuffer startRow, java.nio.ByteBuffer endRow, java.util.List iterators, boolean flush, boolean wait, PluginConfig selectorConfig, PluginConfig configurerConfig) throws AccumuloSecurityException, TableNotFoundException, AccumuloException, org.apache.thrift.TException; public void cancelCompaction(java.nio.ByteBuffer login, java.lang.String tableName) throws AccumuloSecurityException, TableNotFoundException, AccumuloException, org.apache.thrift.TException; @@ -247,7 +247,7 @@ public interface AsyncIface { public void cloneTable(java.nio.ByteBuffer login, java.lang.String tableName, java.lang.String newTableName, boolean flush, java.util.Map propertiesToSet, java.util.Set propertiesToExclude, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException; - public void compactTable(java.nio.ByteBuffer login, java.lang.String tableName, java.nio.ByteBuffer startRow, java.nio.ByteBuffer endRow, java.util.List iterators, boolean flush, boolean wait, CompactionStrategyConfig compactionStrategy, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException; + public void compactTable(java.nio.ByteBuffer login, java.lang.String tableName, java.nio.ByteBuffer startRow, java.nio.ByteBuffer endRow, java.util.List iterators, boolean flush, boolean wait, PluginConfig selectorConfig, PluginConfig configurerConfig, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException; public void cancelCompaction(java.nio.ByteBuffer login, java.lang.String tableName, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException; @@ -682,13 +682,13 @@ public void recv_cloneTable() throws AccumuloException, AccumuloSecurityExceptio } @Override - public void compactTable(java.nio.ByteBuffer login, java.lang.String tableName, java.nio.ByteBuffer startRow, java.nio.ByteBuffer endRow, java.util.List iterators, boolean flush, boolean wait, CompactionStrategyConfig compactionStrategy) throws AccumuloSecurityException, TableNotFoundException, AccumuloException, org.apache.thrift.TException + public void compactTable(java.nio.ByteBuffer login, java.lang.String tableName, java.nio.ByteBuffer startRow, java.nio.ByteBuffer endRow, java.util.List iterators, boolean flush, boolean wait, PluginConfig selectorConfig, PluginConfig configurerConfig) throws AccumuloSecurityException, TableNotFoundException, AccumuloException, org.apache.thrift.TException { - send_compactTable(login, tableName, startRow, endRow, iterators, flush, wait, compactionStrategy); + send_compactTable(login, tableName, startRow, endRow, iterators, flush, wait, selectorConfig, configurerConfig); recv_compactTable(); } - public void send_compactTable(java.nio.ByteBuffer login, java.lang.String tableName, java.nio.ByteBuffer startRow, java.nio.ByteBuffer endRow, java.util.List iterators, boolean flush, boolean wait, CompactionStrategyConfig compactionStrategy) throws org.apache.thrift.TException + public void send_compactTable(java.nio.ByteBuffer login, java.lang.String tableName, java.nio.ByteBuffer startRow, java.nio.ByteBuffer endRow, java.util.List iterators, boolean flush, boolean wait, PluginConfig selectorConfig, PluginConfig configurerConfig) throws org.apache.thrift.TException { compactTable_args args = new compactTable_args(); args.setLogin(login); @@ -698,7 +698,8 @@ public void send_compactTable(java.nio.ByteBuffer login, java.lang.String tableN args.setIterators(iterators); args.setFlush(flush); args.setWait(wait); - args.setCompactionStrategy(compactionStrategy); + args.setSelectorConfig(selectorConfig); + args.setConfigurerConfig(configurerConfig); sendBase("compactTable", args); } @@ -3920,9 +3921,9 @@ public Void getResult() throws AccumuloException, AccumuloSecurityException, Tab } @Override - public void compactTable(java.nio.ByteBuffer login, java.lang.String tableName, java.nio.ByteBuffer startRow, java.nio.ByteBuffer endRow, java.util.List iterators, boolean flush, boolean wait, CompactionStrategyConfig compactionStrategy, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException { + public void compactTable(java.nio.ByteBuffer login, java.lang.String tableName, java.nio.ByteBuffer startRow, java.nio.ByteBuffer endRow, java.util.List iterators, boolean flush, boolean wait, PluginConfig selectorConfig, PluginConfig configurerConfig, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException { checkReady(); - compactTable_call method_call = new compactTable_call(login, tableName, startRow, endRow, iterators, flush, wait, compactionStrategy, resultHandler, this, ___protocolFactory, ___transport); + compactTable_call method_call = new compactTable_call(login, tableName, startRow, endRow, iterators, flush, wait, selectorConfig, configurerConfig, resultHandler, this, ___protocolFactory, ___transport); this.___currentMethod = method_call; ___manager.call(method_call); } @@ -3935,8 +3936,9 @@ public static class compactTable_call extends org.apache.thrift.async.TAsyncMeth private java.util.List iterators; private boolean flush; private boolean wait; - private CompactionStrategyConfig compactionStrategy; - public compactTable_call(java.nio.ByteBuffer login, java.lang.String tableName, java.nio.ByteBuffer startRow, java.nio.ByteBuffer endRow, java.util.List iterators, boolean flush, boolean wait, CompactionStrategyConfig compactionStrategy, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException { + private PluginConfig selectorConfig; + private PluginConfig configurerConfig; + public compactTable_call(java.nio.ByteBuffer login, java.lang.String tableName, java.nio.ByteBuffer startRow, java.nio.ByteBuffer endRow, java.util.List iterators, boolean flush, boolean wait, PluginConfig selectorConfig, PluginConfig configurerConfig, org.apache.thrift.async.AsyncMethodCallback resultHandler, org.apache.thrift.async.TAsyncClient client, org.apache.thrift.protocol.TProtocolFactory protocolFactory, org.apache.thrift.transport.TNonblockingTransport transport) throws org.apache.thrift.TException { super(client, protocolFactory, transport, resultHandler, false); this.login = login; this.tableName = tableName; @@ -3945,7 +3947,8 @@ public compactTable_call(java.nio.ByteBuffer login, java.lang.String tableName, this.iterators = iterators; this.flush = flush; this.wait = wait; - this.compactionStrategy = compactionStrategy; + this.selectorConfig = selectorConfig; + this.configurerConfig = configurerConfig; } @Override @@ -3959,7 +3962,8 @@ public void write_args(org.apache.thrift.protocol.TProtocol prot) throws org.apa args.setIterators(iterators); args.setFlush(flush); args.setWait(wait); - args.setCompactionStrategy(compactionStrategy); + args.setSelectorConfig(selectorConfig); + args.setConfigurerConfig(configurerConfig); args.write(prot); prot.writeMessageEnd(); } @@ -8086,7 +8090,7 @@ protected boolean rethrowUnhandledExceptions() { public compactTable_result getResult(I iface, compactTable_args args) throws org.apache.thrift.TException { compactTable_result result = new compactTable_result(); try { - iface.compactTable(args.login, args.tableName, args.startRow, args.endRow, args.iterators, args.flush, args.wait, args.compactionStrategy); + iface.compactTable(args.login, args.tableName, args.startRow, args.endRow, args.iterators, args.flush, args.wait, args.selectorConfig, args.configurerConfig); } catch (AccumuloSecurityException ouch1) { result.ouch1 = ouch1; } catch (TableNotFoundException ouch2) { @@ -12017,7 +12021,7 @@ protected boolean isOneway() { @Override public void start(I iface, compactTable_args args, org.apache.thrift.async.AsyncMethodCallback resultHandler) throws org.apache.thrift.TException { - iface.compactTable(args.login, args.tableName, args.startRow, args.endRow, args.iterators, args.flush, args.wait, args.compactionStrategy,resultHandler); + iface.compactTable(args.login, args.tableName, args.startRow, args.endRow, args.iterators, args.flush, args.wait, args.selectorConfig, args.configurerConfig,resultHandler); } } @@ -27922,7 +27926,8 @@ public static class compactTable_args implements org.apache.thrift.TBase iterators; // required public boolean flush; // required public boolean wait; // required - public @org.apache.thrift.annotation.Nullable CompactionStrategyConfig compactionStrategy; // required + public @org.apache.thrift.annotation.Nullable PluginConfig selectorConfig; // required + public @org.apache.thrift.annotation.Nullable PluginConfig configurerConfig; // required /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */ public enum _Fields implements org.apache.thrift.TFieldIdEnum { @@ -27945,7 +27951,8 @@ public enum _Fields implements org.apache.thrift.TFieldIdEnum { ITERATORS((short)5, "iterators"), FLUSH((short)6, "flush"), WAIT((short)7, "wait"), - COMPACTION_STRATEGY((short)8, "compactionStrategy"); + SELECTOR_CONFIG((short)8, "selectorConfig"), + CONFIGURER_CONFIG((short)9, "configurerConfig"); private static final java.util.Map byName = new java.util.HashMap(); @@ -27975,8 +27982,10 @@ public static _Fields findByThriftId(int fieldId) { return FLUSH; case 7: // WAIT return WAIT; - case 8: // COMPACTION_STRATEGY - return COMPACTION_STRATEGY; + case 8: // SELECTOR_CONFIG + return SELECTOR_CONFIG; + case 9: // CONFIGURER_CONFIG + return CONFIGURER_CONFIG; default: return null; } @@ -28041,8 +28050,10 @@ public java.lang.String getFieldName() { new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL))); tmpMap.put(_Fields.WAIT, new org.apache.thrift.meta_data.FieldMetaData("wait", org.apache.thrift.TFieldRequirementType.DEFAULT, new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.BOOL))); - tmpMap.put(_Fields.COMPACTION_STRATEGY, new org.apache.thrift.meta_data.FieldMetaData("compactionStrategy", org.apache.thrift.TFieldRequirementType.DEFAULT, - new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, CompactionStrategyConfig.class))); + tmpMap.put(_Fields.SELECTOR_CONFIG, new org.apache.thrift.meta_data.FieldMetaData("selectorConfig", org.apache.thrift.TFieldRequirementType.DEFAULT, + new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, PluginConfig.class))); + tmpMap.put(_Fields.CONFIGURER_CONFIG, new org.apache.thrift.meta_data.FieldMetaData("configurerConfig", org.apache.thrift.TFieldRequirementType.DEFAULT, + new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, PluginConfig.class))); metaDataMap = java.util.Collections.unmodifiableMap(tmpMap); org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(compactTable_args.class, metaDataMap); } @@ -28058,7 +28069,8 @@ public compactTable_args( java.util.List iterators, boolean flush, boolean wait, - CompactionStrategyConfig compactionStrategy) + PluginConfig selectorConfig, + PluginConfig configurerConfig) { this(); this.login = org.apache.thrift.TBaseHelper.copyBinary(login); @@ -28070,7 +28082,8 @@ public compactTable_args( setFlushIsSet(true); this.wait = wait; setWaitIsSet(true); - this.compactionStrategy = compactionStrategy; + this.selectorConfig = selectorConfig; + this.configurerConfig = configurerConfig; } /** @@ -28099,8 +28112,11 @@ public compactTable_args(compactTable_args other) { } this.flush = other.flush; this.wait = other.wait; - if (other.isSetCompactionStrategy()) { - this.compactionStrategy = new CompactionStrategyConfig(other.compactionStrategy); + if (other.isSetSelectorConfig()) { + this.selectorConfig = new PluginConfig(other.selectorConfig); + } + if (other.isSetConfigurerConfig()) { + this.configurerConfig = new PluginConfig(other.configurerConfig); } } @@ -28120,7 +28136,8 @@ public void clear() { this.flush = false; setWaitIsSet(false); this.wait = false; - this.compactionStrategy = null; + this.selectorConfig = null; + this.configurerConfig = null; } public byte[] getLogin() { @@ -28338,27 +28355,52 @@ public void setWaitIsSet(boolean value) { } @org.apache.thrift.annotation.Nullable - public CompactionStrategyConfig getCompactionStrategy() { - return this.compactionStrategy; + public PluginConfig getSelectorConfig() { + return this.selectorConfig; + } + + public compactTable_args setSelectorConfig(@org.apache.thrift.annotation.Nullable PluginConfig selectorConfig) { + this.selectorConfig = selectorConfig; + return this; + } + + public void unsetSelectorConfig() { + this.selectorConfig = null; + } + + /** Returns true if field selectorConfig is set (has been assigned a value) and false otherwise */ + public boolean isSetSelectorConfig() { + return this.selectorConfig != null; + } + + public void setSelectorConfigIsSet(boolean value) { + if (!value) { + this.selectorConfig = null; + } + } + + @org.apache.thrift.annotation.Nullable + public PluginConfig getConfigurerConfig() { + return this.configurerConfig; } - public compactTable_args setCompactionStrategy(@org.apache.thrift.annotation.Nullable CompactionStrategyConfig compactionStrategy) { - this.compactionStrategy = compactionStrategy; + public compactTable_args setConfigurerConfig(@org.apache.thrift.annotation.Nullable PluginConfig configurerConfig) { + this.configurerConfig = configurerConfig; return this; } - public void unsetCompactionStrategy() { - this.compactionStrategy = null; + public void unsetConfigurerConfig() { + this.configurerConfig = null; } - /** Returns true if field compactionStrategy is set (has been assigned a value) and false otherwise */ - public boolean isSetCompactionStrategy() { - return this.compactionStrategy != null; + /** Returns true if field configurerConfig is set (has been assigned a value) and false otherwise */ + public boolean isSetConfigurerConfig() { + return this.configurerConfig != null; } - public void setCompactionStrategyIsSet(boolean value) { + public void setConfigurerConfigIsSet(boolean value) { if (!value) { - this.compactionStrategy = null; + this.configurerConfig = null; } } @@ -28433,11 +28475,19 @@ public void setFieldValue(_Fields field, @org.apache.thrift.annotation.Nullable } break; - case COMPACTION_STRATEGY: + case SELECTOR_CONFIG: + if (value == null) { + unsetSelectorConfig(); + } else { + setSelectorConfig((PluginConfig)value); + } + break; + + case CONFIGURER_CONFIG: if (value == null) { - unsetCompactionStrategy(); + unsetConfigurerConfig(); } else { - setCompactionStrategy((CompactionStrategyConfig)value); + setConfigurerConfig((PluginConfig)value); } break; @@ -28469,8 +28519,11 @@ public java.lang.Object getFieldValue(_Fields field) { case WAIT: return isWait(); - case COMPACTION_STRATEGY: - return getCompactionStrategy(); + case SELECTOR_CONFIG: + return getSelectorConfig(); + + case CONFIGURER_CONFIG: + return getConfigurerConfig(); } throw new java.lang.IllegalStateException(); @@ -28498,8 +28551,10 @@ public boolean isSet(_Fields field) { return isSetFlush(); case WAIT: return isSetWait(); - case COMPACTION_STRATEGY: - return isSetCompactionStrategy(); + case SELECTOR_CONFIG: + return isSetSelectorConfig(); + case CONFIGURER_CONFIG: + return isSetConfigurerConfig(); } throw new java.lang.IllegalStateException(); } @@ -28580,12 +28635,21 @@ public boolean equals(compactTable_args that) { return false; } - boolean this_present_compactionStrategy = true && this.isSetCompactionStrategy(); - boolean that_present_compactionStrategy = true && that.isSetCompactionStrategy(); - if (this_present_compactionStrategy || that_present_compactionStrategy) { - if (!(this_present_compactionStrategy && that_present_compactionStrategy)) + boolean this_present_selectorConfig = true && this.isSetSelectorConfig(); + boolean that_present_selectorConfig = true && that.isSetSelectorConfig(); + if (this_present_selectorConfig || that_present_selectorConfig) { + if (!(this_present_selectorConfig && that_present_selectorConfig)) + return false; + if (!this.selectorConfig.equals(that.selectorConfig)) + return false; + } + + boolean this_present_configurerConfig = true && this.isSetConfigurerConfig(); + boolean that_present_configurerConfig = true && that.isSetConfigurerConfig(); + if (this_present_configurerConfig || that_present_configurerConfig) { + if (!(this_present_configurerConfig && that_present_configurerConfig)) return false; - if (!this.compactionStrategy.equals(that.compactionStrategy)) + if (!this.configurerConfig.equals(that.configurerConfig)) return false; } @@ -28620,9 +28684,13 @@ public int hashCode() { hashCode = hashCode * 8191 + ((wait) ? 131071 : 524287); - hashCode = hashCode * 8191 + ((isSetCompactionStrategy()) ? 131071 : 524287); - if (isSetCompactionStrategy()) - hashCode = hashCode * 8191 + compactionStrategy.hashCode(); + hashCode = hashCode * 8191 + ((isSetSelectorConfig()) ? 131071 : 524287); + if (isSetSelectorConfig()) + hashCode = hashCode * 8191 + selectorConfig.hashCode(); + + hashCode = hashCode * 8191 + ((isSetConfigurerConfig()) ? 131071 : 524287); + if (isSetConfigurerConfig()) + hashCode = hashCode * 8191 + configurerConfig.hashCode(); return hashCode; } @@ -28705,12 +28773,22 @@ public int compareTo(compactTable_args other) { return lastComparison; } } - lastComparison = java.lang.Boolean.compare(isSetCompactionStrategy(), other.isSetCompactionStrategy()); + lastComparison = java.lang.Boolean.compare(isSetSelectorConfig(), other.isSetSelectorConfig()); + if (lastComparison != 0) { + return lastComparison; + } + if (isSetSelectorConfig()) { + lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.selectorConfig, other.selectorConfig); + if (lastComparison != 0) { + return lastComparison; + } + } + lastComparison = java.lang.Boolean.compare(isSetConfigurerConfig(), other.isSetConfigurerConfig()); if (lastComparison != 0) { return lastComparison; } - if (isSetCompactionStrategy()) { - lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.compactionStrategy, other.compactionStrategy); + if (isSetConfigurerConfig()) { + lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.configurerConfig, other.configurerConfig); if (lastComparison != 0) { return lastComparison; } @@ -28787,11 +28865,19 @@ public java.lang.String toString() { sb.append(this.wait); first = false; if (!first) sb.append(", "); - sb.append("compactionStrategy:"); - if (this.compactionStrategy == null) { + sb.append("selectorConfig:"); + if (this.selectorConfig == null) { + sb.append("null"); + } else { + sb.append(this.selectorConfig); + } + first = false; + if (!first) sb.append(", "); + sb.append("configurerConfig:"); + if (this.configurerConfig == null) { sb.append("null"); } else { - sb.append(this.compactionStrategy); + sb.append(this.configurerConfig); } first = false; sb.append(")"); @@ -28801,8 +28887,11 @@ public java.lang.String toString() { public void validate() throws org.apache.thrift.TException { // check for required fields // check for sub-struct validity - if (compactionStrategy != null) { - compactionStrategy.validate(); + if (selectorConfig != null) { + selectorConfig.validate(); + } + if (configurerConfig != null) { + configurerConfig.validate(); } } @@ -28911,11 +29000,20 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, compactTable_args s org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); } break; - case 8: // COMPACTION_STRATEGY + case 8: // SELECTOR_CONFIG + if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) { + struct.selectorConfig = new PluginConfig(); + struct.selectorConfig.read(iprot); + struct.setSelectorConfigIsSet(true); + } else { + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + break; + case 9: // CONFIGURER_CONFIG if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) { - struct.compactionStrategy = new CompactionStrategyConfig(); - struct.compactionStrategy.read(iprot); - struct.setCompactionStrategyIsSet(true); + struct.configurerConfig = new PluginConfig(); + struct.configurerConfig.read(iprot); + struct.setConfigurerConfigIsSet(true); } else { org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); } @@ -28974,9 +29072,14 @@ public void write(org.apache.thrift.protocol.TProtocol oprot, compactTable_args oprot.writeFieldBegin(WAIT_FIELD_DESC); oprot.writeBool(struct.wait); oprot.writeFieldEnd(); - if (struct.compactionStrategy != null) { - oprot.writeFieldBegin(COMPACTION_STRATEGY_FIELD_DESC); - struct.compactionStrategy.write(oprot); + if (struct.selectorConfig != null) { + oprot.writeFieldBegin(SELECTOR_CONFIG_FIELD_DESC); + struct.selectorConfig.write(oprot); + oprot.writeFieldEnd(); + } + if (struct.configurerConfig != null) { + oprot.writeFieldBegin(CONFIGURER_CONFIG_FIELD_DESC); + struct.configurerConfig.write(oprot); oprot.writeFieldEnd(); } oprot.writeFieldStop(); @@ -29019,10 +29122,13 @@ public void write(org.apache.thrift.protocol.TProtocol prot, compactTable_args s if (struct.isSetWait()) { optionals.set(6); } - if (struct.isSetCompactionStrategy()) { + if (struct.isSetSelectorConfig()) { optionals.set(7); } - oprot.writeBitSet(optionals, 8); + if (struct.isSetConfigurerConfig()) { + optionals.set(8); + } + oprot.writeBitSet(optionals, 9); if (struct.isSetLogin()) { oprot.writeBinary(struct.login); } @@ -29050,15 +29156,18 @@ public void write(org.apache.thrift.protocol.TProtocol prot, compactTable_args s if (struct.isSetWait()) { oprot.writeBool(struct.wait); } - if (struct.isSetCompactionStrategy()) { - struct.compactionStrategy.write(oprot); + if (struct.isSetSelectorConfig()) { + struct.selectorConfig.write(oprot); + } + if (struct.isSetConfigurerConfig()) { + struct.configurerConfig.write(oprot); } } @Override public void read(org.apache.thrift.protocol.TProtocol prot, compactTable_args struct) throws org.apache.thrift.TException { org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot; - java.util.BitSet incoming = iprot.readBitSet(8); + java.util.BitSet incoming = iprot.readBitSet(9); if (incoming.get(0)) { struct.login = iprot.readBinary(); struct.setLoginIsSet(true); @@ -29098,9 +29207,14 @@ public void read(org.apache.thrift.protocol.TProtocol prot, compactTable_args st struct.setWaitIsSet(true); } if (incoming.get(7)) { - struct.compactionStrategy = new CompactionStrategyConfig(); - struct.compactionStrategy.read(iprot); - struct.setCompactionStrategyIsSet(true); + struct.selectorConfig = new PluginConfig(); + struct.selectorConfig.read(iprot); + struct.setSelectorConfigIsSet(true); + } + if (incoming.get(8)) { + struct.configurerConfig = new PluginConfig(); + struct.configurerConfig.read(iprot); + struct.setConfigurerConfigIsSet(true); } } } diff --git a/src/main/thrift-gen-java/org/apache/accumulo/proxy/thrift/CompactionStrategyConfig.java b/src/main/thrift-gen-java/org/apache/accumulo/proxy/thrift/PluginConfig.java similarity index 88% rename from src/main/thrift-gen-java/org/apache/accumulo/proxy/thrift/CompactionStrategyConfig.java rename to src/main/thrift-gen-java/org/apache/accumulo/proxy/thrift/PluginConfig.java index d90d270c..f2dc8152 100644 --- a/src/main/thrift-gen-java/org/apache/accumulo/proxy/thrift/CompactionStrategyConfig.java +++ b/src/main/thrift-gen-java/org/apache/accumulo/proxy/thrift/PluginConfig.java @@ -25,14 +25,14 @@ package org.apache.accumulo.proxy.thrift; @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused"}) -public class CompactionStrategyConfig implements org.apache.thrift.TBase, java.io.Serializable, Cloneable, Comparable { - private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("CompactionStrategyConfig"); +public class PluginConfig implements org.apache.thrift.TBase, java.io.Serializable, Cloneable, Comparable { + private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("PluginConfig"); private static final org.apache.thrift.protocol.TField CLASS_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("className", org.apache.thrift.protocol.TType.STRING, (short)1); private static final org.apache.thrift.protocol.TField OPTIONS_FIELD_DESC = new org.apache.thrift.protocol.TField("options", org.apache.thrift.protocol.TType.MAP, (short)2); - private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new CompactionStrategyConfigStandardSchemeFactory(); - private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new CompactionStrategyConfigTupleSchemeFactory(); + private static final org.apache.thrift.scheme.SchemeFactory STANDARD_SCHEME_FACTORY = new PluginConfigStandardSchemeFactory(); + private static final org.apache.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY = new PluginConfigTupleSchemeFactory(); public @org.apache.thrift.annotation.Nullable java.lang.String className; // required public @org.apache.thrift.annotation.Nullable java.util.Map options; // required @@ -113,13 +113,13 @@ public java.lang.String getFieldName() { new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING), new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)))); metaDataMap = java.util.Collections.unmodifiableMap(tmpMap); - org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(CompactionStrategyConfig.class, metaDataMap); + org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(PluginConfig.class, metaDataMap); } - public CompactionStrategyConfig() { + public PluginConfig() { } - public CompactionStrategyConfig( + public PluginConfig( java.lang.String className, java.util.Map options) { @@ -131,7 +131,7 @@ public CompactionStrategyConfig( /** * Performs a deep copy on other. */ - public CompactionStrategyConfig(CompactionStrategyConfig other) { + public PluginConfig(PluginConfig other) { if (other.isSetClassName()) { this.className = other.className; } @@ -142,8 +142,8 @@ public CompactionStrategyConfig(CompactionStrategyConfig other) { } @Override - public CompactionStrategyConfig deepCopy() { - return new CompactionStrategyConfig(this); + public PluginConfig deepCopy() { + return new PluginConfig(this); } @Override @@ -157,7 +157,7 @@ public java.lang.String getClassName() { return this.className; } - public CompactionStrategyConfig setClassName(@org.apache.thrift.annotation.Nullable java.lang.String className) { + public PluginConfig setClassName(@org.apache.thrift.annotation.Nullable java.lang.String className) { this.className = className; return this; } @@ -193,7 +193,7 @@ public java.util.Map getOptions() { return this.options; } - public CompactionStrategyConfig setOptions(@org.apache.thrift.annotation.Nullable java.util.Map options) { + public PluginConfig setOptions(@org.apache.thrift.annotation.Nullable java.util.Map options) { this.options = options; return this; } @@ -267,12 +267,12 @@ public boolean isSet(_Fields field) { @Override public boolean equals(java.lang.Object that) { - if (that instanceof CompactionStrategyConfig) - return this.equals((CompactionStrategyConfig)that); + if (that instanceof PluginConfig) + return this.equals((PluginConfig)that); return false; } - public boolean equals(CompactionStrategyConfig that) { + public boolean equals(PluginConfig that) { if (that == null) return false; if (this == that) @@ -315,7 +315,7 @@ public int hashCode() { } @Override - public int compareTo(CompactionStrategyConfig other) { + public int compareTo(PluginConfig other) { if (!getClass().equals(other.getClass())) { return getClass().getName().compareTo(other.getClass().getName()); } @@ -363,7 +363,7 @@ public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache. @Override public java.lang.String toString() { - java.lang.StringBuilder sb = new java.lang.StringBuilder("CompactionStrategyConfig("); + java.lang.StringBuilder sb = new java.lang.StringBuilder("PluginConfig("); boolean first = true; sb.append("className:"); @@ -406,17 +406,17 @@ private void readObject(java.io.ObjectInputStream in) throws java.io.IOException } } - private static class CompactionStrategyConfigStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory { + private static class PluginConfigStandardSchemeFactory implements org.apache.thrift.scheme.SchemeFactory { @Override - public CompactionStrategyConfigStandardScheme getScheme() { - return new CompactionStrategyConfigStandardScheme(); + public PluginConfigStandardScheme getScheme() { + return new PluginConfigStandardScheme(); } } - private static class CompactionStrategyConfigStandardScheme extends org.apache.thrift.scheme.StandardScheme { + private static class PluginConfigStandardScheme extends org.apache.thrift.scheme.StandardScheme { @Override - public void read(org.apache.thrift.protocol.TProtocol iprot, CompactionStrategyConfig struct) throws org.apache.thrift.TException { + public void read(org.apache.thrift.protocol.TProtocol iprot, PluginConfig struct) throws org.apache.thrift.TException { org.apache.thrift.protocol.TField schemeField; iprot.readStructBegin(); while (true) @@ -466,7 +466,7 @@ public void read(org.apache.thrift.protocol.TProtocol iprot, CompactionStrategyC } @Override - public void write(org.apache.thrift.protocol.TProtocol oprot, CompactionStrategyConfig struct) throws org.apache.thrift.TException { + public void write(org.apache.thrift.protocol.TProtocol oprot, PluginConfig struct) throws org.apache.thrift.TException { struct.validate(); oprot.writeStructBegin(STRUCT_DESC); @@ -494,17 +494,17 @@ public void write(org.apache.thrift.protocol.TProtocol oprot, CompactionStrategy } - private static class CompactionStrategyConfigTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory { + private static class PluginConfigTupleSchemeFactory implements org.apache.thrift.scheme.SchemeFactory { @Override - public CompactionStrategyConfigTupleScheme getScheme() { - return new CompactionStrategyConfigTupleScheme(); + public PluginConfigTupleScheme getScheme() { + return new PluginConfigTupleScheme(); } } - private static class CompactionStrategyConfigTupleScheme extends org.apache.thrift.scheme.TupleScheme { + private static class PluginConfigTupleScheme extends org.apache.thrift.scheme.TupleScheme { @Override - public void write(org.apache.thrift.protocol.TProtocol prot, CompactionStrategyConfig struct) throws org.apache.thrift.TException { + public void write(org.apache.thrift.protocol.TProtocol prot, PluginConfig struct) throws org.apache.thrift.TException { org.apache.thrift.protocol.TTupleProtocol oprot = (org.apache.thrift.protocol.TTupleProtocol) prot; java.util.BitSet optionals = new java.util.BitSet(); if (struct.isSetClassName()) { @@ -530,7 +530,7 @@ public void write(org.apache.thrift.protocol.TProtocol prot, CompactionStrategyC } @Override - public void read(org.apache.thrift.protocol.TProtocol prot, CompactionStrategyConfig struct) throws org.apache.thrift.TException { + public void read(org.apache.thrift.protocol.TProtocol prot, PluginConfig struct) throws org.apache.thrift.TException { org.apache.thrift.protocol.TTupleProtocol iprot = (org.apache.thrift.protocol.TTupleProtocol) prot; java.util.BitSet incoming = iprot.readBitSet(2); if (incoming.get(0)) { diff --git a/src/main/thrift/proxy.thrift b/src/main/thrift/proxy.thrift index 95fe2fb2..563ead91 100644 --- a/src/main/thrift/proxy.thrift +++ b/src/main/thrift/proxy.thrift @@ -264,7 +264,7 @@ struct WriterOptions { 5:optional Durability durability } -struct CompactionStrategyConfig { +struct PluginConfig { 1:string className 2:map options } @@ -407,7 +407,8 @@ service AccumuloProxy { 5:list iterators 6:bool flush 7:bool wait - 8:CompactionStrategyConfig compactionStrategy + 8:PluginConfig selectorConfig + 9:PluginConfig configurerConfig ) throws ( 1:AccumuloSecurityException ouch1 2:TableNotFoundException ouch2 diff --git a/src/test/java/org/apache/accumulo/proxy/its/SelectHalfSelector.java b/src/test/java/org/apache/accumulo/proxy/its/SelectHalfSelector.java new file mode 100644 index 00000000..758c6189 --- /dev/null +++ b/src/test/java/org/apache/accumulo/proxy/its/SelectHalfSelector.java @@ -0,0 +1,45 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.accumulo.proxy.its; + +import java.util.List; +import java.util.stream.Collectors; + +import org.apache.accumulo.core.client.admin.compaction.CompactableFile; +import org.apache.accumulo.core.client.admin.compaction.CompactionSelector; + +/** + * Select half of the files to compact + */ +public class SelectHalfSelector implements CompactionSelector { + + @Override + public void init(InitParameters iparams) {} + + @Override + public Selection select(SelectionParameters sparams) { + final var totalFiles = sparams.getAvailableFiles(); + + final int halfOfFileCount = totalFiles.size() / 2; + + final List toCompact = + totalFiles.stream().limit(halfOfFileCount).collect(Collectors.toList()); + + return new Selection(toCompact); + } + +} diff --git a/src/test/java/org/apache/accumulo/proxy/its/SimpleProxyBase.java b/src/test/java/org/apache/accumulo/proxy/its/SimpleProxyBase.java index 14f6975c..ce37a8d1 100644 --- a/src/test/java/org/apache/accumulo/proxy/its/SimpleProxyBase.java +++ b/src/test/java/org/apache/accumulo/proxy/its/SimpleProxyBase.java @@ -86,7 +86,6 @@ import org.apache.accumulo.proxy.thrift.Column; import org.apache.accumulo.proxy.thrift.ColumnUpdate; import org.apache.accumulo.proxy.thrift.CompactionReason; -import org.apache.accumulo.proxy.thrift.CompactionStrategyConfig; import org.apache.accumulo.proxy.thrift.CompactionType; import org.apache.accumulo.proxy.thrift.Condition; import org.apache.accumulo.proxy.thrift.ConditionalStatus; @@ -103,6 +102,7 @@ import org.apache.accumulo.proxy.thrift.NamespaceNotFoundException; import org.apache.accumulo.proxy.thrift.NamespacePermission; import org.apache.accumulo.proxy.thrift.PartialKey; +import org.apache.accumulo.proxy.thrift.PluginConfig; import org.apache.accumulo.proxy.thrift.Range; import org.apache.accumulo.proxy.thrift.ScanColumn; import org.apache.accumulo.proxy.thrift.ScanOptions; @@ -122,7 +122,6 @@ import org.apache.accumulo.test.constraints.NumericValueConstraint; import org.apache.accumulo.test.functional.SlowIterator; import org.apache.accumulo.test.util.Wait; -import org.apache.commons.io.FileUtils; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.CommonConfigurationKeysPublic; import org.apache.hadoop.fs.FSDataInputStream; @@ -406,7 +405,7 @@ public void clearLocatorCacheLoginFailure() { @Timeout(5) public void compactTableLoginFailure() { assertThrows(AccumuloSecurityException.class, - () -> client.compactTable(badLogin, tableName, null, null, null, true, false, null)); + () -> client.compactTable(badLogin, tableName, null, null, null, true, false, null, null)); } @Test @@ -1005,7 +1004,7 @@ public void tableNotFound() throws IOException { () -> client.checkIteratorConflicts(creds, doesNotExist, setting, EnumSet.allOf(IteratorScope.class)), () -> client.clearLocatorCache(creds, doesNotExist), () -> client.cloneTable(creds, doesNotExist, newTableName, false, null, null), - () -> client.compactTable(creds, doesNotExist, null, null, null, true, false, null), + () -> client.compactTable(creds, doesNotExist, null, null, null, true, false, null,null), () -> client.createBatchScanner(creds, doesNotExist, new BatchScanOptions()), () -> client.createScanner(creds, doesNotExist, new ScanOptions()), () -> client.createWriter(creds, doesNotExist, new WriterOptions()), @@ -1361,7 +1360,7 @@ public void attachIteratorWithCompactions() throws Exception { proxyClient2 = new TestProxyClient(hostname, proxyPort, factory); } Client client2 = proxyClient2.proxy(); - client2.compactTable(creds, "slow", null, null, null, true, true, null); + client2.compactTable(creds, "slow", null, null, null, true, true, null, null); } catch (Exception e) { throw new RuntimeException(e); } finally { @@ -1995,7 +1994,7 @@ public void compactTable() throws Exception { assertScan(expected, tableName); // compact - client.compactTable(creds, tableName, null, null, null, true, true, null); + client.compactTable(creds, tableName, null, null, null, true, true, null, null); assertEquals(1, countFiles(tableName)); assertScan(expected, tableName); } @@ -2014,7 +2013,7 @@ public void diskUsage() throws Exception { assertScan(expected, tableName); // compact - client.compactTable(creds, tableName, null, null, null, true, true, null); + client.compactTable(creds, tableName, null, null, null, true, true, null, null); assertEquals(1, countFiles(tableName)); assertScan(expected, tableName); @@ -2036,7 +2035,7 @@ public void diskUsage() throws Exception { assertEquals(1, diskUsage.get(1).getTables().size()); // Compact the clone so it writes its own files instead of referring to the original - client.compactTable(creds, TABLE_TEST2, null, null, null, true, true, null); + client.compactTable(creds, TABLE_TEST2, null, null, null, true, true, null, null); diskUsage = (client.getDiskUsage(creds, tablesToScan)); assertEquals(3, diskUsage.size()); @@ -2670,40 +2669,26 @@ public void testGetRowRange() throws Exception { } @Test - public void testCompactionStrategy() throws Exception { - File jarDir = new File(System.getProperty("user.dir"), "target"); - assertTrue(jarDir.mkdirs() || jarDir.isDirectory()); - File jarFile = new File(jarDir, "TestCompactionStrat.jar"); - FileUtils.copyInputStreamToFile( - SimpleProxyBase.class.getResourceAsStream("/TestCompactionStrat.jar"), jarFile); - client.setProperty(creds, Property.VFS_CONTEXT_CLASSPATH_PROPERTY.getKey() + "context1", - jarFile.toString()); - client.setTableProperty(creds, tableName, Property.TABLE_CLASSPATH.getKey(), "context1"); + public void testCompactionSelector() throws Exception { - client.addSplits(creds, tableName, Collections.singleton(s2bb("efg"))); + String[] data = "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z".split(" "); + final int expectedFileCount = data.length; - client.updateAndFlush(creds, tableName, mutation("a", "cf", "cq", "v1")); - client.flushTable(creds, tableName, null, null, true); - - client.updateAndFlush(creds, tableName, mutation("b", "cf", "cq", "v2")); - client.flushTable(creds, tableName, null, null, true); - - client.updateAndFlush(creds, tableName, mutation("y", "cf", "cq", "v1")); - client.flushTable(creds, tableName, null, null, true); - - client.updateAndFlush(creds, tableName, mutation("z", "cf", "cq", "v2")); - client.flushTable(creds, tableName, null, null, true); - - assertEquals(4, countFiles(tableName)); + for (String datum : data) { + client.addSplits(creds, tableName, Set.of(s2bb(datum))); + client.updateAndFlush(creds, tableName, mutation(datum, "cf", "cq", datum)); + client.flushTable(creds, tableName, null, null, true); + } - CompactionStrategyConfig csc = new CompactionStrategyConfig(); + assertEquals(expectedFileCount, countFiles(tableName), "Unexpected file count"); - // The EfgCompactionStrat will only compact tablets with and end row of efg - csc.setClassName("org.apache.accumulo.test.EfgCompactionStrat"); + String selectorClassname = SelectHalfSelector.class.getName(); + PluginConfig selector = new PluginConfig(selectorClassname, Map.of()); - client.compactTable(creds, tableName, null, null, null, true, true, csc); + client.compactTable(creds, tableName, null, null, null, true, true, selector, null); - assertEquals(3, countFiles(tableName)); + // SelectHalfSelector should lead to half the files being compacted + Wait.waitFor(() -> countFiles(tableName) == (expectedFileCount / 2)); } @Test diff --git a/src/test/resources/TestCompactionStrat.jar b/src/test/resources/TestCompactionStrat.jar deleted file mode 100644 index 3daa16e2..00000000 Binary files a/src/test/resources/TestCompactionStrat.jar and /dev/null differ