/** * 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); } } }
QualifiedName::toString).collect(Collectors.toList()); log.info("Deleting databases({}): {}", deleteDatabaseNames.size(), deleteDatabaseNames); userMetadataService.deleteDefinitionMetadata(deleteDatabaseQualifiedNames); elasticSearchUtil.softDelete("database", deleteDatabaseNames, context);
this.helper.postPreDeleteEvent(name, metacatRequestContext); this.userMetadataService.deleteDefinitionMetadata(Lists.newArrayList(name)); this.tagService.delete(name, false); log.info("Deleted definition metadata for {}", name);
/** * {@inheritDoc} */ @Override public void delete(final QualifiedName name) { validate(name); final MetacatRequestContext metacatRequestContext = MetacatContextManager.getContext(); this.authorizationService.checkPermission(metacatRequestContext.getUserName(), name, MetacatOperation.DELETE); log.info("Dropping schema {}", name); final DatabaseDto dto = get(name, GetDatabaseServiceParameters.builder() .disableOnReadMetadataIntercetor(false) .includeUserMetadata(true) .includeTableNames(true) .build()); eventBus.post(new MetacatDeleteDatabasePreEvent(name, metacatRequestContext, this, dto)); final ConnectorRequestContext connectorRequestContext = converterUtil.toConnectorContext(metacatRequestContext); connectorManager.getDatabaseService(name).delete(connectorRequestContext, name); // Delete definition metadata if it exists if (userMetadataService.getDefinitionMetadata(name).isPresent()) { log.info("Deleting user metadata for schema {}", name); userMetadataService.deleteDefinitionMetadata(ImmutableList.of(name)); } eventBus.post(new MetacatDeleteDatabasePostEvent(name, metacatRequestContext, this, dto)); }