public static void insertGenericMetadataIntoLegacyCell(KeyValueService kvs, TableReference tableRef, byte[] data) { Cell legacyMetadataCell = CassandraKeyValueServices.getOldMetadataCell(tableRef); kvs.put(AtlasDbConstants.DEFAULT_METADATA_TABLE, ImmutableMap.of(legacyMetadataCell, data), System.currentTimeMillis()); } }
tableRefToMetadata, (tableRef, metadata) -> CassandraKeyValueServices.getMetadataCell(tableRef)); Map<TableReference, Cell> tableRefToOldCell = Maps.transformEntries( tableRefToMetadata, (tableRef, metadata) -> CassandraKeyValueServices.getOldMetadataCell(tableRef));
@Test @SuppressWarnings("Slf4jConstantLogMessage") public void upgradeFromOlderInternalSchemaDoesNotErrorOnTablesWithOldMetadata() { TableReference tableRef = TableReference.createFromFullyQualifiedName("test.oldTimeyTable"); keyValueService.put( AtlasDbConstants.DEFAULT_METADATA_TABLE, ImmutableMap.of(CassandraKeyValueServices.getOldMetadataCell(tableRef), ORIGINAL_METADATA), System.currentTimeMillis()); keyValueService.createTable(tableRef, ORIGINAL_METADATA); ((CassandraKeyValueServiceImpl) keyValueService).upgradeFromOlderInternalSchema(); verify(logger, never()).error(anyString(), any(Object.class)); }
@Test public void metadataUpdateForExistingOldFormatMetadataUpdatesOldFormat() { TableReference userTable = TableReference.createFromFullyQualifiedName("test.tOoMaNyTeStS"); Cell oldMetadataCell = CassandraKeyValueServices.getOldMetadataCell(userTable); byte[] tableMetadataUpdate = new TableMetadata( new NameMetadataDescription(), new ColumnMetadataDescription(), ConflictHandler.IGNORE_ALL, // <--- new, update that isn't in ORIGINAL_METADATA TableMetadataPersistence.LogSafety.SAFE) .persistToBytes(); keyValueService.put( AtlasDbConstants.DEFAULT_METADATA_TABLE, ImmutableMap.of(oldMetadataCell, ORIGINAL_METADATA), System.currentTimeMillis()); keyValueService.createTable(userTable, tableMetadataUpdate); assertThat(Arrays.equals(keyValueService.getMetadataForTable(userTable), tableMetadataUpdate), is(true)); }
tableRefToMetadata, (tableRef, metadata) -> CassandraKeyValueServices.getMetadataCell(tableRef)); Map<TableReference, Cell> tableRefToOldCell = Maps.transformEntries( tableRefToMetadata, (tableRef, metadata) -> CassandraKeyValueServices.getOldMetadataCell(tableRef));