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 CompactionPolicy dropCompactionPolicy(CompactionPolicy compactionPolicy) { synchronized (compactionPolicies) { Map<String, CompactionPolicy> p = compactionPolicies.get(compactionPolicy.getDataverseName()); if (p != null && p.get(compactionPolicy.getPolicyName()) != null) { return p.remove(compactionPolicy); } return null; } }
aString.setValue(compactionPolicy.getDataverseName()); stringSerde.serialize(aString, tupleBuilder.getDataOutput()); tupleBuilder.addFieldEndOffset(); aString.setValue(compactionPolicy.getPolicyName()); stringSerde.serialize(aString, tupleBuilder.getDataOutput()); tupleBuilder.addFieldEndOffset(); aString.setValue(compactionPolicy.getDataverseName()); stringSerde.serialize(aString, fieldValue.getDataOutput()); recordBuilder.addField(MetadataRecordTypes.COMPACTION_POLICY_ARECORD_DATAVERSE_NAME_FIELD_INDEX, fieldValue); aString.setValue(compactionPolicy.getPolicyName()); stringSerde.serialize(aString, fieldValue.getDataOutput()); recordBuilder.addField(MetadataRecordTypes.COMPACTION_POLICY_ARECORD_POLICY_NAME_FIELD_INDEX, fieldValue); aString.setValue(compactionPolicy.getClassName()); stringSerde.serialize(aString, fieldValue.getDataOutput()); recordBuilder.addField(MetadataRecordTypes.COMPACTION_POLICY_ARECORD_CLASSNAME_FIELD_INDEX, fieldValue);
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); }
@Override public void addCompactionPolicy(TxnId txnId, CompactionPolicy compactionPolicy) throws AlgebricksException, RemoteException { try { // Insert into the 'CompactionPolicy' dataset. CompactionPolicyTupleTranslator tupleReaderWriter = tupleTranslatorProvider.getCompactionPolicyTupleTranslator(true); ITupleReference compactionPolicyTuple = tupleReaderWriter.getTupleFromMetadataEntity(compactionPolicy); insertTupleIntoIndex(txnId, MetadataPrimaryIndexes.COMPACTION_POLICY_DATASET, compactionPolicyTuple); } catch (HyracksDataException e) { if (e.getComponent().equals(ErrorCode.HYRACKS) && e.getErrorCode() == ErrorCode.DUPLICATE_KEY) { throw new AlgebricksException("A compcation policy with this name " + compactionPolicy.getPolicyName() + " already exists in dataverse '" + compactionPolicy.getPolicyName() + "'.", e); } else { throw new AlgebricksException(e); } } }
"Unknown compaction policy: " + compactionPolicy); String compactionPolicyFactoryClassName = compactionPolicyEntity.getClassName(); ILSMMergePolicyFactory mergePolicyFactory = (ILSMMergePolicyFactory) Class.forName(compactionPolicyFactoryClassName).newInstance();
public CompactionPolicy addCompactionPolicyIfNotExists(CompactionPolicy compactionPolicy) { synchronized (compactionPolicy) { Map<String, CompactionPolicy> p = compactionPolicies.get(compactionPolicy.getDataverseName()); if (p == null) { p = new HashMap<>(); p.put(compactionPolicy.getPolicyName(), compactionPolicy); compactionPolicies.put(compactionPolicy.getDataverseName(), p); } else { if (p.get(compactionPolicy.getPolicyName()) == null) { p.put(compactionPolicy.getPolicyName(), compactionPolicy); } } return null; } }
private CompactionPolicy createCompactionPolicyFromARecord(ARecord compactionPolicyRecord) { CompactionPolicy compactionPolicy = null; String dataverseName = ((AString) compactionPolicyRecord .getValueByPos(MetadataRecordTypes.COMPACTION_POLICY_ARECORD_DATAVERSE_NAME_FIELD_INDEX)) .getStringValue(); String policyName = ((AString) compactionPolicyRecord .getValueByPos(MetadataRecordTypes.COMPACTION_POLICY_ARECORD_POLICY_NAME_FIELD_INDEX)).getStringValue(); String className = ((AString) compactionPolicyRecord .getValueByPos(MetadataRecordTypes.COMPACTION_POLICY_ARECORD_CLASSNAME_FIELD_INDEX)).getStringValue(); compactionPolicy = new CompactionPolicy(dataverseName, policyName, className); return compactionPolicy; }