Add SearchPlugin abstract class
Add SearchPlugin unit test implementation
Add tsd.search.enable and tsd.search.plugin config option defaults
Add tsd.core.plugin_path config default
Add search object to TSDB
Add TSDB.indexTSMeta() and .indexUIDMeta() to access the search object
Add delete TSUID and UID search calls to TSDB
Add TSDB.initializePlugins() to load plugins and toss exceptions AFTER
construction of the TSDB
Add TestTSDB initialize plugins UTs
Add search index and delete calls to UniqueIdRpc so that the index is updated
when the user makes a modification
Update Unit tests to verify the search method was called
Add SearchPlugin abstract class
Add SearchPlugin unit test implementation

Signed-off-by: Chris Larsen <clarsen@euphoriaaudio.com>
Add tsd.search.enable and tsd.search.plugin config option defaults
Add tsd.core.plugin_path config default

Signed-off-by: Chris Larsen <clarsen@euphoriaaudio.com>
Add search object to TSDB
Add TSDB.indexTSMeta() and .indexUIDMeta() to access the search object
Add delete TSUID and UID search calls to TSDB
Add TSDB.initializePlugins() to load plugins and toss exceptions AFTER
construction of the TSDB
Add TestTSDB initialize plugins UTs

Signed-off-by: Chris Larsen <clarsen@euphoriaaudio.com>
Add search index and delete calls to UniqueIdRpc so that the index is updated
when the user makes a modification
Update Unit tests to verify the search method was called

Signed-off-by: Chris Larsen <clarsen@euphoriaaudio.com>
Merge remote branch 'remotes/official/next' into next
Add UniqueId.getTSUIDFromKey() to parse TSUIDs from an HBase row key
Add "tsd.core.meta.enable_tracking" config option, defaults to false
Add TSMeta.metaExistsInStorage() to determine if a meta object exists
Add TSMeta.incrementAndGetCounter() to use atomic counters for tracking
timeseries as per Tsuna
Add TSMeta constructor that stores a given created timestamp
Add TSMeta.storeNew() that stores a new timeseris meta object without syncs
Fix possible issues to avoid corrupted storage data for TSMeta objects
Add total_dps field and getter to TSMeta
Change TSMeta.QUALIFIER to META_QUALIFER and add COUNTER_QUALIFIER to
differentiate between the columns
Fix TSMeta to throw an exception if a user tries to modify an entry that does
not exist instead of creating one
Modify TSMeta.getFromStorage() to load the last_received and total datapoints
from storage
Replace TSMeta.copyToStorageObject() with getStorageJSON() to serialize only
the fields we want to the data store
Add UIDMeta.storeNew() to create a new object
Add UIDmeta.setCreated() as we may need to override when syncing past timeseries
Add logging ignores to TestUIDMeta
Add TSDB reference to UniqueId for the UIDMeta creation calls with a setter so
we don't have to modify the constructor
Add UniqueIdType field to UniqueId
Modify UniqueId to create the UIDMeta when assigning a UID if enabled by the
user
Replace NoSuchUniqueName catches with NoSuchUniqueId in UniqueIdRpc UID calls, was a bug
Refactor TestUniqueIdRpc tests so setups are only called where necessary
Add call to TSMeta.incrementAndGetCounter() in TSDB if meta tracking is enabled
Add call to UniqueId.setTSDB() if meta tracking is enabled
Add TSMeta.counterExistsInStorage() to determine if the counter exists
Add uid metasync CLI command to generate meta data from existing data for use
in upgrading to 2.0. The command also updates the "created" timestamp and
attempts to fix corrupted meta data
Major Branch updates
Remove InternalTree.java