/** * Subscriber. * * @param event event */ @EventListener public void metacatDeleteTablePostEventHandler(final MetacatDeleteTablePostEvent event) { if (config.canCascadeViewsMetadataOnTableDelete() && !event.isMView()) { final QualifiedName name = event.getTable().getName(); try { // delete views associated with this table final List<NameDateDto> viewNames = mViewService.list(name); viewNames.forEach(viewName -> mViewService.deleteAndReturn(viewName.getName())); } catch (Exception e) { log.warn("Failed cleaning mviews after deleting table {}", name); } // delete table partitions metadata try { final List<QualifiedName> names = userMetadataService.getDescendantDefinitionNames(name); if (names != null && !names.isEmpty()) { userMetadataService.deleteDefinitionMetadata(names); } } catch (Exception e) { log.warn("Failed cleaning partition definition metadata after deleting table {}", name); } } }