private static CompactionPolicy getCompactionPolicyEntity(String compactionPolicyClassName) throws AlgebricksException { try { String policyName = ((ILSMMergePolicyFactory) (Class.forName(compactionPolicyClassName).newInstance())).getName(); return new CompactionPolicy(MetadataConstants.METADATA_DATAVERSE_NAME, policyName, compactionPolicyClassName); } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) { throw new MetadataException("Unable to instantiate builtin Merge Policy Factory", e); } }
public static Pair<ILSMMergePolicyFactory, Map<String, String>> getMergePolicyFactory(Dataset dataset, MetadataTransactionContext mdTxnCtx) throws AlgebricksException { String policyName = dataset.getCompactionPolicy(); CompactionPolicy compactionPolicy = MetadataManager.INSTANCE.getCompactionPolicy(mdTxnCtx, MetadataConstants.METADATA_DATAVERSE_NAME, policyName); String compactionPolicyFactoryClassName = compactionPolicy.getClassName(); ILSMMergePolicyFactory mergePolicyFactory; Map<String, String> properties = dataset.getCompactionPolicyProperties(); try { mergePolicyFactory = (ILSMMergePolicyFactory) Class.forName(compactionPolicyFactoryClassName).newInstance(); if (mergePolicyFactory.getName().compareTo(CorrelatedPrefixMergePolicyFactory.NAME) == 0) { properties.put(CorrelatedPrefixMergePolicyFactory.KEY_DATASET_ID, Integer.toString(dataset.getDatasetId())); } } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) { throw new AlgebricksException(e); } return new Pair<>(mergePolicyFactory, properties); }
ILSMMergePolicyFactory mergePolicyFactory = (ILSMMergePolicyFactory) Class.forName(compactionPolicyFactoryClassName).newInstance(); if (isExternalDataset && mergePolicyFactory.getName().compareTo("correlated-prefix") == 0) { throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc, "The correlated-prefix merge policy cannot be used with external dataset."); if (mergePolicyFactory.getName().compareTo("no-merge") != 0) { throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc, "Compaction policy properties are missing.");