use of org.bboxdb.distribution.partitioner.SpacePartitioner in project bboxdb by jnidzwetzki.
the class ContinuousBoundingBoxClientQuery method init.
/**
* Init the query
* @param tupleStoreManagerRegistry
* @throws BBoxDBException
*/
protected void init() throws BBoxDBException {
try {
final TupleStoreManagerRegistry storageRegistry = clientConnectionHandler.getStorageRegistry();
final String fullname = requestTable.getDistributionGroup();
final SpacePartitioner spacePartitioner = SpacePartitionerCache.getInstance().getSpacePartitionerForGroupName(fullname);
final DistributionRegionIdMapper regionIdMapper = spacePartitioner.getDistributionRegionIdMapper();
final List<TupleStoreName> localTables = regionIdMapper.getLocalTablesForRegion(boundingBox, requestTable);
if (localTables.size() != 1) {
logger.error("Got more than one table for the continuous query {}", localTables);
close();
return;
}
final TupleStoreName tupleStoreName = localTables.get(0);
storageManager = QueryHelper.getTupleStoreManager(storageRegistry, tupleStoreName);
storageManager.registerInsertCallback(tupleInsertCallback);
// Remove tuple store insert listener on connection close
clientConnectionHandler.addConnectionClosedHandler((c) -> close());
} catch (StorageManagerException | ZookeeperException e) {
logger.error("Got an exception during query init", e);
close();
}
}
use of org.bboxdb.distribution.partitioner.SpacePartitioner in project bboxdb by jnidzwetzki.
the class KeyClientQuery method computeTuples.
/**
* Fetch the tuples for the given key and remove the duplicates
*/
protected void computeTuples() {
try {
final String fullname = requestTable.getDistributionGroup();
final SpacePartitioner spacePartitioner = SpacePartitionerCache.getInstance().getSpacePartitionerForGroupName(fullname);
final DistributionRegionIdMapper regionIdMapper = spacePartitioner.getDistributionRegionIdMapper();
final List<TupleStoreName> localTables = regionIdMapper.getAllLocalTables(requestTable);
for (final TupleStoreName tupleStoreName : localTables) {
final TupleStoreManager storageManager = clientConnectionHandler.getStorageRegistry().getTupleStoreManager(tupleStoreName);
final List<Tuple> tuplesInTable = storageManager.get(key);
tuplesForKey.addAll(tuplesInTable);
}
removeDuplicates(localTables);
} catch (BBoxDBException | StorageManagerException e) {
logger.error("Got an exception while fetching tuples for key " + key, e);
tuplesForKey.clear();
}
}
use of org.bboxdb.distribution.partitioner.SpacePartitioner in project bboxdb by jnidzwetzki.
the class StreamClientQuery method determineLocalTables.
/**
* Determine the local tables
* @param requestTables
*/
private void determineLocalTables(final List<TupleStoreName> requestTables) {
try {
for (final TupleStoreName requestTable : requestTables) {
final String fullname = requestTable.getDistributionGroup();
final SpacePartitioner spacePartitioner = SpacePartitionerCache.getInstance().getSpacePartitionerForGroupName(fullname);
final DistributionRegionIdMapper regionIdMapper = spacePartitioner.getDistributionRegionIdMapper();
final List<TupleStoreName> localTablesForTable = regionIdMapper.getAllLocalTables(requestTable);
localTablesForTable.sort((c1, c2) -> c1.compareTo(c2));
localTables.put(requestTable, localTablesForTable);
}
// Check all tables have the same amount of local tables
int elementSize = -1;
for (final List<TupleStoreName> elements : localTables.values()) {
if (elementSize == -1) {
elementSize = elements.size();
}
if (elementSize != elements.size()) {
throw new IllegalArgumentException("Got invalid element size: " + elementSize + " / " + elements.size());
}
}
} catch (BBoxDBException e) {
logger.error("Got exception while reading local tables", e);
}
}
use of org.bboxdb.distribution.partitioner.SpacePartitioner in project bboxdb by jnidzwetzki.
the class TestZookeeperIntegration method testMergingSupported.
/**
* Test merging supported
* @throws ZookeeperException
* @throws BBoxDBException
*/
@Test(timeout = 60000)
public void testMergingSupported() throws ZookeeperException, BBoxDBException {
final SpacePartitioner spacePartitioner = SpacePartitionerCache.getInstance().getSpacePartitionerForGroupName(TEST_GROUP);
final DistributionRegion rootNode = spacePartitioner.getRootNode();
Assert.assertTrue(distributionRegionAdapter.isMergingSupported(rootNode));
distributionRegionAdapter.setMergingSupported(rootNode, false);
Assert.assertFalse(distributionRegionAdapter.isMergingSupported(rootNode));
distributionRegionAdapter.setMergingSupported(rootNode, true);
Assert.assertTrue(distributionRegionAdapter.isMergingSupported(rootNode));
}
use of org.bboxdb.distribution.partitioner.SpacePartitioner in project bboxdb by jnidzwetzki.
the class TestZookeeperIntegration method testTableCreateDelete.
/**
* Test the table deletion and creation
* @throws ZookeeperException
* @throws BBoxDBException
* @throws InterruptedException
*/
@Test(timeout = 60000)
public void testTableCreateDelete() throws Exception {
final TupleStoreAdapter tupleStoreAdapter = zookeeperClient.getTupleStoreAdapter();
final SpacePartitioner spacePartitioner = getSpacePartitioner();
final DistributionRegion rootNode = spacePartitioner.getRootNode();
final String rootPath = distributionRegionAdapter.getZookeeperPathForDistributionRegion(rootNode);
distributionRegionAdapter.addSystemToDistributionRegion(rootPath, ZookeeperClientFactory.getLocalInstanceName());
final TupleStoreName tupleStoreName = new TupleStoreName(TEST_GROUP + "_tabletest");
final TupleStoreName tupleStoreName0 = new TupleStoreName(TEST_GROUP + "_tabletest_0");
final TupleStoreConfiguration configuration = TupleStoreConfigurationBuilder.create().build();
tupleStoreAdapter.writeTuplestoreConfiguration(tupleStoreName, configuration);
final TupleStoreManagerRegistry storageRegistry = new TupleStoreManagerRegistry();
storageRegistry.init();
storageRegistry.deleteTable(tupleStoreName0, true);
storageRegistry.createTable(tupleStoreName0, configuration);
storageRegistry.getTupleStoreManager(tupleStoreName0);
Assert.assertTrue(storageRegistry.isStorageManagerKnown(tupleStoreName0));
System.out.println("=== Executing deletion");
tupleStoreAdapter.deleteTable(tupleStoreName0);
Thread.sleep(5000);
Assert.assertFalse(storageRegistry.isStorageManagerKnown(tupleStoreName0));
storageRegistry.shutdown();
}
Aggregations