@Override void doWrite(final YangInstanceIdentifier path, final NormalizedNode<?, ?> data) { modification.write(path, data); }
@Override public synchronized void write(final YangInstanceIdentifier path, final NormalizedNode<?, ?> data) { delegate.write(path, data); }
@Override public final void write(final YangInstanceIdentifier path, final NormalizedNode<?, ?> data) { modification.write(path, data); }
@Override public synchronized void write(final YangInstanceIdentifier path, final NormalizedNode<?, ?> data) { delegate.write(path, data); }
private void pruneAndWriteNode(YangInstanceIdentifier yangInstanceIdentifier, NormalizedNode<?, ?> normalizedNode) { NormalizedNode<?,?> pruned = pruneNormalizedNode(yangInstanceIdentifier, normalizedNode); if(pruned != null) { delegate.write(yangInstanceIdentifier, pruned); } }
@Override public void apply(final DataTreeModification transaction) { transaction.write(getPath(), data); }
@SuppressWarnings("checkstyle:IllegalCatch") @Override public void write(final YangInstanceIdentifier path, final NormalizedNode<?, ?> data) { checkNotReady(); final DataTreeModification tree = mutableTree; LOG.debug("Tx: {} Write: {}:{}", getIdentifier(), path, data); try { tree.write(path, data); // FIXME: Add checked exception } catch (Exception e) { LOG.error("Tx: {}, failed to write {}:{} in {}", getIdentifier(), path, data, tree, e); // Rethrow original ones if they are subclasses of RuntimeException or Error Throwables.throwIfUnchecked(e); // FIXME: Introduce proper checked exception throw new IllegalArgumentException("Illegal input data.", e); } }
@Override public void write(final YangInstanceIdentifier path, final NormalizedNode<?, ?> data) { checkNotReady(); final DataTreeModification tree = mutableTree; LOG.debug("Tx: {} Write: {}:{}", getIdentifier(), path, data); try { tree.write(path, data); // FIXME: Add checked exception } catch (Exception e) { LOG.error("Tx: {}, failed to write {}:{} in {}", getIdentifier(), path, data, tree, e); // Rethrow original ones if they are subclasses of RuntimeException // or Error Throwables.propagateIfPossible(e); // FIXME: Introduce proper checked exception throw new IllegalArgumentException("Illegal input data.", e); } }
@Override @SuppressWarnings("checkstyle:IllegalCatch") public void write(final YangInstanceIdentifier path, final NormalizedNode<?, ?> data) { checkNotReady(); final DataTreeModification tree = mutableTree; LOG.debug("Tx: {} Write: {}:{}", getIdentifier(), path, data); try { tree.write(path, data); // FIXME: Add checked exception } catch (RuntimeException e) { LOG.error("Tx: {}, failed to write {}:{} in {}", getIdentifier(), path, data, tree, e); // Rethrow original ones if they are subclasses of RuntimeException // or Error Throwables.propagateIfPossible(e); // FIXME: Introduce proper checked exception throw new IllegalArgumentException("Illegal input data.", e); } }
@Override public void write(PathArgument child, NormalizedNode<?, ?> data) { YangInstanceIdentifier path = current().node(child); NormalizedNode<?, ?> prunedNode = pruningModification.pruneNormalizedNode(path, data); if(prunedNode != null) { toModification.write(path, prunedNode); } }
@Override public void write(YangInstanceIdentifier yangInstanceIdentifier, NormalizedNode<?, ?> normalizedNode) { try { if(YangInstanceIdentifier.EMPTY.equals(yangInstanceIdentifier)){ pruneAndWriteNode(yangInstanceIdentifier, normalizedNode); } else { delegate.write(yangInstanceIdentifier, normalizedNode); } } catch (SchemaValidationFailedException e){ LOG.warn("Node at path : {} was pruned during write due to validation error: {}", yangInstanceIdentifier, e.getMessage()); pruneAndWriteNode(yangInstanceIdentifier, normalizedNode); } }
@Benchmark @Warmup(iterations = WARMUP_ITERATIONS, timeUnit = TimeUnit.MILLISECONDS) @Measurement(iterations = MEASUREMENT_ITERATIONS, timeUnit = TimeUnit.MILLISECONDS) public void write50KSingleNodeWithTwoInnerItemsInOneCommitBenchmark() throws DataValidationFailedException { final DataTreeModification modification = begin(); for (int outerListKey = 0; outerListKey < OUTER_LIST_50K; ++outerListKey) { modification.write(OUTER_LIST_PATHS[outerListKey], OUTER_LIST_TWO_ITEM_INNER_LIST[outerListKey]); } commit(modification); }
@Benchmark @Warmup(iterations = WARMUP_ITERATIONS, timeUnit = TimeUnit.MILLISECONDS) @Measurement(iterations = MEASUREMENT_ITERATIONS, timeUnit = TimeUnit.MILLISECONDS) public void write100KSingleNodeWithOneInnerItemInCommitPerWriteBenchmark() throws DataValidationFailedException { for (int outerListKey = 0; outerListKey < OUTER_LIST_100K; ++outerListKey) { final DataTreeModification modification = begin(); modification.write(OUTER_LIST_PATHS[outerListKey], OUTER_LIST_ONE_ITEM_INNER_LIST[outerListKey]); commit(modification); } }
@Benchmark @Warmup(iterations = WARMUP_ITERATIONS, timeUnit = TimeUnit.MILLISECONDS) @Measurement(iterations = MEASUREMENT_ITERATIONS, timeUnit = TimeUnit.MILLISECONDS) public void write10KSingleNodeWithTenInnerItemsInOneCommitBenchmark() throws DataValidationFailedException { final DataTreeModification modification = begin(); for (int outerListKey = 0; outerListKey < OUTER_LIST_10K; ++outerListKey) { modification.write(OUTER_LIST_PATHS[outerListKey], OUTER_LIST_TEN_ITEM_INNER_LIST[outerListKey]); } commit(modification); }
@Benchmark @Warmup(iterations = WARMUP_ITERATIONS, timeUnit = TimeUnit.MILLISECONDS) @Measurement(iterations = MEASUREMENT_ITERATIONS, timeUnit = TimeUnit.MILLISECONDS) public void write100KSingleNodeWithOneInnerItemInOneCommitBenchmark() throws DataValidationFailedException { final DataTreeModification modification = begin(); for (int outerListKey = 0; outerListKey < OUTER_LIST_100K; ++outerListKey) { modification.write(OUTER_LIST_PATHS[outerListKey], OUTER_LIST_ONE_ITEM_INNER_LIST[outerListKey]); } commit(modification); }
@Benchmark @Warmup(iterations = WARMUP_ITERATIONS, timeUnit = TimeUnit.MILLISECONDS) @Measurement(iterations = MEASUREMENT_ITERATIONS, timeUnit = TimeUnit.MILLISECONDS) public void write50KSingleNodeWithTwoInnerItemsInCommitPerWriteBenchmark() throws DataValidationFailedException { for (int outerListKey = 0; outerListKey < OUTER_LIST_50K; ++outerListKey) { final DataTreeModification modification = begin(); modification.write(OUTER_LIST_PATHS[outerListKey], OUTER_LIST_TWO_ITEM_INNER_LIST[outerListKey]); commit(modification); } }
@Benchmark @Warmup(iterations = WARMUP_ITERATIONS, timeUnit = TimeUnit.MILLISECONDS) @Measurement(iterations = MEASUREMENT_ITERATIONS, timeUnit = TimeUnit.MILLISECONDS) public void write10KSingleNodeWithTenInnerItemsInCommitPerWriteBenchmark() throws DataValidationFailedException { for (int outerListKey = 0; outerListKey < OUTER_LIST_10K; ++outerListKey) { final DataTreeModification modification = begin(); modification.write(OUTER_LIST_PATHS[outerListKey], OUTER_LIST_TEN_ITEM_INNER_LIST[outerListKey]); commit(modification); } }
@Override public DataTree create(final DataTreeConfiguration treeConfig, final SchemaContext initialSchemaContext, final NormalizedNodeContainer<?, ?, ?> initialRoot) throws DataValidationFailedException { final DataTree ret = create(treeConfig, initialSchemaContext, false); final DataTreeModification mod = ret.takeSnapshot().newModification(); mod.write(YangInstanceIdentifier.EMPTY, initialRoot); mod.ready(); ret.validate(mod); final DataTreeCandidate candidate = ret.prepare(mod); ret.commit(candidate); return ret; }
@Override public DataTree create(final DataTreeConfiguration treeConfig, final SchemaContext initialSchemaContext, final NormalizedNodeContainer<?, ?, ?> initialRoot) throws DataValidationFailedException { final DataTree ret = create(treeConfig, initialSchemaContext, false); final DataTreeModification mod = ret.takeSnapshot().newModification(); mod.write(YangInstanceIdentifier.EMPTY, initialRoot); mod.ready(); ret.validate(mod); final DataTreeCandidate candidate = ret.prepare(mod); ret.commit(candidate); return ret; }
@Setup(Level.Trial) public void setup() throws DataValidationFailedException { datastore = new InMemoryDataTreeFactory().create(DataTreeConfiguration.DEFAULT_CONFIGURATION, BenchmarkModel.createTestContext()); final DataTreeModification modification = begin(); modification.write(BenchmarkModel.TEST_PATH, ImmutableContainerNodeBuilder.create() .withNodeIdentifier(BenchmarkModel.TEST).withChild(EMPTY_OUTER_LIST).build()); commit(modification); }