private void deleteMaterialization(Materialization materialization) { if (Iterables.isEmpty(materializationStore.getRefreshesExclusivelyOwnedBy(materialization))) { logger.debug("materialization {} doesn't own any refresh, entry will be deleted without running a drop table", getId(materialization)); materializationStore.delete(materialization.getId()); return; } // set the materialization to DELETED so we don't try to delete it again materialization.setState(MaterializationState.DELETED); materializationStore.save(materialization); try { final String pathString = constructFullPath(getMaterializationPath(materialization)); final String query = String.format("DROP TABLE IF EXISTS %s", pathString); MaterializationSummary materializationSummary = new MaterializationSummary() .setReflectionId(materialization.getReflectionId().getId()) .setLayoutVersion(materialization.getReflectionGoalVersion()) .setMaterializationId(materialization.getId().getId()); jobsService.submitJob( JobRequest.newMaterializationJobBuilder(materializationSummary, SubstitutionSettings.of()) .setSqlQuery(new SqlQuery(query, SYSTEM_USERNAME)) .setQueryType(QueryType.ACCELERATOR_DROP) .build(), NoOpJobStatusListener.INSTANCE); } catch (Exception e) { logger.warn("failed to drop materialization {}", materialization.getId().getId(), e); } }
public static Job submitRefreshJob(JobsService jobsService, NamespaceService namespaceService, ReflectionEntry entry, Materialization materialization, String sql, JobStatusListener jobStatusListener) { final SqlQuery query = new SqlQuery(sql, SYSTEM_USERNAME); NamespaceKey datasetPathList = new NamespaceKey(namespaceService.findDatasetByUUID(entry.getDatasetId()).getFullPathList()); MaterializationSummary materializationSummary = new MaterializationSummary() .setDatasetId(entry.getDatasetId()) .setReflectionId(entry.getId().getId()) .setLayoutVersion(entry.getTag()) .setMaterializationId(materialization.getId().getId()) .setReflectionName(entry.getName()) .setReflectionType(entry.getType().toString()); return jobsService.submitJob( JobRequest.newMaterializationJobBuilder(materializationSummary, new SubstitutionSettings(ImmutableList.of())) .setSqlQuery(query) .setQueryType(QueryType.ACCELERATOR_CREATE) .setDatasetPath(datasetPathList) .build(), jobStatusListener); }