CatalogServiceCatalog.reset() sets the table ID counter to 0, which is protected by the catalog lock. However, TableLoadingMgr.load() calls catalog_.getNextTableId() without taking the lock. This means that if reset() and multiples load()s are running concurrently, two tables created by load() can have the same ID (I'm not sure exactly what happens to these loaded tables since they'll get cleared from the catalog soon, but it appears they still show up in queries).
This means that if "invalidate metadata" is called concurrently with queries that touch at least two tables (e.g. inserts), there is a chance that operators in the BE will see the wrong table descriptor.