Skip to content

Commit

Permalink
Add invalidateAll for Metastore caching
Browse files Browse the repository at this point in the history
  • Loading branch information
ajaygeorge committed Mar 22, 2024
1 parent e4c5211 commit 48c5a29
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,8 @@ public void renameDatabase(MetastoreContext metastoreContext, String databaseNam
}
}

protected abstract void invalidateAll();

protected abstract void invalidateDatabase(String databaseName);

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -299,7 +299,8 @@ public ExtendedHiveMetastore getDelegate()
}

@Managed
public void flushCache()
@Override
public void invalidateAll()
{
databaseNamesCache.invalidateAll();
tableNamesCache.invalidateAll();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ public void testGetAllDatabases()
assertEquals(metastore.getAllDatabases(TEST_METASTORE_CONTEXT), ImmutableList.of(TEST_DATABASE));
assertEquals(mockClient.getAccessCount(), 1);

metastore.flushCache();
metastore.invalidateAll();

assertEquals(metastore.getAllDatabases(TEST_METASTORE_CONTEXT), ImmutableList.of(TEST_DATABASE));
assertEquals(mockClient.getAccessCount(), 2);
Expand All @@ -122,7 +122,7 @@ public void testGetAllTable()
assertEquals(metastore.getAllTables(TEST_METASTORE_CONTEXT, TEST_DATABASE).get(), ImmutableList.of(TEST_TABLE, TEST_TABLE_WITH_CONSTRAINTS));
assertEquals(mockClient.getAccessCount(), 1);

metastore.flushCache();
metastore.invalidateAll();

assertEquals(metastore.getAllTables(TEST_METASTORE_CONTEXT, TEST_DATABASE).get(), ImmutableList.of(TEST_TABLE, TEST_TABLE_WITH_CONSTRAINTS));
assertEquals(mockClient.getAccessCount(), 2);
Expand All @@ -142,7 +142,7 @@ public void testGetTable()
assertNotNull(metastore.getTable(TEST_METASTORE_CONTEXT, TEST_DATABASE, TEST_TABLE));
assertEquals(mockClient.getAccessCount(), 1);

metastore.flushCache();
metastore.invalidateAll();

assertNotNull(metastore.getTable(TEST_METASTORE_CONTEXT, TEST_DATABASE, TEST_TABLE));
assertEquals(mockClient.getAccessCount(), 2);
Expand All @@ -167,7 +167,7 @@ public void testGetPartitionNames()
assertEquals(metastore.getPartitionNames(TEST_METASTORE_CONTEXT, TEST_DATABASE, TEST_TABLE).get(), expectedPartitions);
assertEquals(mockClient.getAccessCount(), 1);

metastore.flushCache();
metastore.invalidateAll();

assertEquals(metastore.getPartitionNames(TEST_METASTORE_CONTEXT, TEST_DATABASE, TEST_TABLE).get(), expectedPartitions);
assertEquals(mockClient.getAccessCount(), 2);
Expand All @@ -190,7 +190,7 @@ public void testGetPartitionNamesByParts()
assertEquals(metastore.getPartitionNamesByFilter(TEST_METASTORE_CONTEXT, TEST_DATABASE, TEST_TABLE, ImmutableMap.of()), expectedPartitions);
assertEquals(mockClient.getAccessCount(), 1);

metastore.flushCache();
metastore.invalidateAll();

assertEquals(metastore.getPartitionNamesByFilter(TEST_METASTORE_CONTEXT, TEST_DATABASE, TEST_TABLE, ImmutableMap.of()), expectedPartitions);
assertEquals(mockClient.getAccessCount(), 2);
Expand Down Expand Up @@ -389,7 +389,7 @@ public void testGetPartitionsByNames()
assertEquals(metastore.getPartitionsByNames(TEST_METASTORE_CONTEXT, TEST_DATABASE, TEST_TABLE, ImmutableList.of(TEST_PARTITION1, TEST_PARTITION2)).size(), 2);
assertEquals(mockClient.getAccessCount(), 3);

metastore.flushCache();
metastore.invalidateAll();

// Fetching both should only result in one batched access
assertEquals(metastore.getPartitionsByNames(TEST_METASTORE_CONTEXT, TEST_DATABASE, TEST_TABLE, ImmutableList.of(TEST_PARTITION1, TEST_PARTITION2)).size(), 2);
Expand All @@ -408,7 +408,7 @@ public void testListRoles()
assertEquals(metastore.listRoles(TEST_METASTORE_CONTEXT), TEST_ROLES);
assertEquals(mockClient.getAccessCount(), 1);

metastore.flushCache();
metastore.invalidateAll();

assertEquals(metastore.listRoles(TEST_METASTORE_CONTEXT), TEST_ROLES);
assertEquals(mockClient.getAccessCount(), 2);
Expand Down Expand Up @@ -463,7 +463,7 @@ public void testTableConstraints()
assertEquals(mockClient.getAccessCount(), 2);
metastore.getTableConstraints(TEST_METASTORE_CONTEXT, TEST_DATABASE, TEST_TABLE_WITH_CONSTRAINTS);
assertEquals(mockClient.getAccessCount(), 2);
metastore.flushCache();
metastore.invalidateAll();
metastore.getTableConstraints(TEST_METASTORE_CONTEXT, TEST_DATABASE, TEST_TABLE_WITH_CONSTRAINTS);
assertEquals(mockClient.getAccessCount(), 4);
}
Expand Down

0 comments on commit 48c5a29

Please sign in to comment.