@Override public void postCreate(String repositoryName) throws Exception { log.info("Performing repository post-creation actions for repository " + repositoryName); LilyHBaseSchema.getRecordTable(tableFactory, repositoryName, LilyHBaseSchema.Table.RECORD.name, false); }
private EventPublisher createEventPublisher(String repositoryName, String tableName) throws IOException, InterruptedException { HTableInterface recordTable = LilyHBaseSchema.getRecordTable(tableFactory, repositoryName, tableName); return new LilyHBaseEventPublisher(recordTable); } }
@Override public RepositoryTable createTable(TableCreateDescriptor descriptor) throws InterruptedException, IOException { if (!RepoAndTableUtil.isValidTableName(descriptor.getName())) { throw new IllegalArgumentException(String.format("'%s' is not a valid table name. " + RepoAndTableUtil.VALID_NAME_EXPLANATION, descriptor.getName())); } if (tableExists(descriptor.getName())) { throw new IllegalArgumentException(String.format("Table '%s' already exists", descriptor.getName())); } LilyHBaseSchema.getRecordTable(tableFactory, repositoryName, descriptor.getName(), descriptor.getSplitKeys()); return new RepositoryTableImpl(repositoryName, descriptor.getName()); }
/** * Factory method for creation of a {@code BulkIngester} that operates on a non-default repository table. * * @param zkConnString connection string for ZooKeeper * @param timeout ZooKeeper session timeout * @param tableName name of the repository table to write to */ public static BulkIngester newBulkIngester(String zkConnString, int timeout, String repositoryName, String tableName, boolean bulkMode) { try { ZooKeeperItf zk = ZkUtil.connect(zkConnString, timeout); // we need a lily client for non bulk access LilyClient lilyClient = new LilyClient(zk); // we need an HBaseRepository for bulk access Configuration conf = HBaseConfiguration.create(); conf.set("hbase.zookeeper.quorum", zkConnString); HBaseTableFactory hbaseTableFactory = new HBaseTableFactoryImpl(conf); HBaseRepository hbaseRepository = createHBaseRepository(repositoryName, tableName, zk, conf, hbaseTableFactory); return new BulkIngester( lilyClient, hbaseRepository, LilyHBaseSchema.getRecordTable(hbaseTableFactory, hbaseRepository.getRepositoryName(), hbaseRepository.getTableName()), bulkMode); } catch (Exception e) { ExceptionUtil.handleInterrupt(e); throw new RuntimeException(e); } }
@Override protected Repository createRepository(RepoTableKey key) throws InterruptedException, RepositoryException { try { TableManager tableManager = new RemoteTableManager(key.getRepositoryName(), transceiver, avroConverter); HTableInterface nonAuthRecordTable = LilyHBaseSchema.getRecordTable(tableFactory, key.getRepositoryName(), key.getTableName(), true); HTableInterface recordTable = wrapWithAuthorization(nonAuthRecordTable); Repository repo = new RemoteRepository(key, transceiver, avroConverter, this, blobManager, recordTable, nonAuthRecordTable, tableManager, getRecordFactory()); if ("true".equals(System.getProperty("lilyclient.trace"))) { repo = TracingRepository.wrap(repo); } return repo; } catch (org.apache.hadoop.hbase.TableNotFoundException e) { throw new TableNotFoundException(key.getRepositoryName(), key.getTableName()); } catch (IOException e) { throw new RepositoryException(e); } }
@Override protected Repository createRepository(RepoTableKey key) throws InterruptedException, RepositoryException { TableManager tableManager = new TableManagerImpl(key.getRepositoryName(), hbaseConf, hbaseTableFactory); try { HTableInterface nonAuthHTable = LilyHBaseSchema.getRecordTable(hbaseTableFactory, key.getRepositoryName(), key.getTableName(), true); HTableInterface htable = wrapWithAuthorization(nonAuthHTable); return new HBaseRepository(key, this, htable, nonAuthHTable, blobManager, tableManager, getRecordFactory()); } catch (org.apache.hadoop.hbase.TableNotFoundException e) { throw new TableNotFoundException(key.getRepositoryName(), key.getTableName()); } catch (IOException e) { throw new RepositoryException(e); } }
private Result getBlobUsage(byte[] blobKey, SchemaId recordId, SchemaId fieldId) throws FieldTypeNotFoundException, TypeException, InterruptedException, IOException, RepositoryException { FieldTypeImpl fieldType = (FieldTypeImpl)typeManager.getFieldTypeById(fieldId); ValueType valueType = fieldType.getValueType(); Get get = new Get(recordId.getBytes()); get.addColumn(RecordCf.DATA.bytes, fieldType.getQualifier()); byte[] valueToCompare = Bytes.toBytes(valueType.getNestingLevel()); valueToCompare = Bytes.add(valueToCompare, blobKey); WritableByteArrayComparable valueComparator = new ContainsValueComparator(valueToCompare); Filter filter = new SingleColumnValueFilter(RecordCf.DATA.bytes, fieldType.getQualifier(), CompareOp.EQUAL, valueComparator); get.setFilter(filter); for (RepositoryTable repoTable : tableManager.getTables()) { HTableInterface recordTable = LilyHBaseSchema.getRecordTable(tableFactory, repoTable.getRepositoryName(), repoTable.getName()); Result result = recordTable.get(get); if (result != null && !result.isEmpty()) { return result; } } return null; } }