private static RawAsyncTableImpl getRawAsyncTable(AsyncConnectionImpl conn,
AsyncTableBuilderBase<?> builder) {
long hotTtl = -1;
if( builder.tableName.isSystemTable() ) {
return new RawAsyncTableImpl(conn,builder);
}
AsyncAdmin admin = conn.getAdmin();
try {
TableDescriptor descriptor = admin.getDescriptor(builder.tableName).get();
if (descriptor.getValue(HConstants.SINK_TABLE_NAME) != null) {
hotTtl = Long.parseLong(descriptor.getValue(HConstants.SOURCE_TTL));
if (hotTtl > 0) {
return new RawAsyncHotTableImpl(conn,builder,hotTtl);
}
} else if (descriptor.getValue(HConstants.SOURCE_TABLE_NAME) != null) {
TableName hotTable = TableName.valueOf(descriptor.getValue(HConstants.SOURCE_TABLE_NAME));
TableDescriptor hotDescriptor = admin.getDescriptor(hotTable).get();
if (builder.tableName.toString().equals(hotDescriptor.getValue(HConstants.SINK_TABLE_NAME))) {
hotTtl = Long.parseLong(hotDescriptor.getValue(HConstants.SOURCE_TTL));
if (hotTtl > 0) {
return new RawAsyncColdTableImpl(conn,builder,hotTable,hotTtl);
}
}
}
} catch (Exception e) {
LOG.error("exception caught when getting hot/cold tables", e);
}
return new RawAsyncTableImpl(conn,builder);
}