You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by rd...@apache.org on 2018/08/22 16:44:06 UTC
[4/4] tinkerpop git commit: Merge branch 'tp32' into tp33
Merge branch 'tp32' into tp33
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/b34515a9
Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/b34515a9
Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/b34515a9
Branch: refs/heads/tp33
Commit: b34515a91b2055bef3c4561da65b2a1c5f8617ae
Parents: b46c295 ca3a343
Author: Robert Dale <ro...@gmail.com>
Authored: Wed Aug 22 12:42:46 2018 -0400
Committer: Robert Dale <ro...@gmail.com>
Committed: Wed Aug 22 12:42:46 2018 -0400
----------------------------------------------------------------------
.../jsr223/AbstractGremlinScriptEngineFactory.java | 6 +++---
.../process/traversal/dsl/GremlinDslProcessor.java | 12 +++++++-----
.../traversal/util/DefaultTraversalMetrics.java | 16 +++++++++-------
3 files changed, 19 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b34515a9/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/dsl/GremlinDslProcessor.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/b34515a9/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalMetrics.java
----------------------------------------------------------------------
diff --cc gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalMetrics.java
index ae0bd8e,055e3ab..bfcfacc
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalMetrics.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/util/DefaultTraversalMetrics.java
@@@ -286,10 -188,121 +287,11 @@@ public final class DefaultTraversalMetr
private static String padLeft(final String text, final int amountToPad) {
// not sure why this method needed to exist. stupid string format stuff and commons utilities wouldn't
// work for some reason in the context this method was used above.
- String newText = text;
+ final StringBuilder newText = new StringBuilder();
for (int ix = 0; ix < amountToPad; ix++) {
- newText = " " + newText;
+ newText.append(" ");
}
- return newText;
+ newText.append(text);
+ return newText.toString();
}
-
- private void computeTotals() {
- // Create temp list of ordered metrics
- final List<MutableMetrics> tempMetrics = new ArrayList<>(this.metrics.size());
- for (final String label : this.indexToLabelMap.values()) {
- // The indexToLabelMap is sorted by index (key)
- tempMetrics.add(this.metrics.get(label).clone());
- }
-
- // Calculate total duration
- this.totalStepDuration = 0;
- tempMetrics.forEach(metric -> this.totalStepDuration += metric.getDuration(MutableMetrics.SOURCE_UNIT));
-
- // Assign %'s
- tempMetrics.forEach(m -> {
- final double dur = m.getDuration(TimeUnit.NANOSECONDS) * 100.d / this.totalStepDuration;
- m.setAnnotation(PERCENT_DURATION_KEY, dur);
- });
-
- // Store immutable instances of the calculated metrics
- this.computedMetrics = new LinkedHashMap<>(this.metrics.size());
- tempMetrics.forEach(it -> this.computedMetrics.put(it.getId(), it.getImmutableClone()));
- }
-
- public static DefaultTraversalMetrics merge(final Iterator<DefaultTraversalMetrics> toMerge) {
- final DefaultTraversalMetrics newTraversalMetrics = new DefaultTraversalMetrics();
-
- // iterate the incoming TraversalMetrics
- toMerge.forEachRemaining(inTraversalMetrics -> {
- // aggregate the internal Metrics
- inTraversalMetrics.metrics.forEach((metricsId, toAggregate) -> {
-
- MutableMetrics aggregateMetrics = newTraversalMetrics.metrics.get(metricsId);
- if (null == aggregateMetrics) {
- // need to create a Metrics to aggregate into
- aggregateMetrics = new MutableMetrics(toAggregate.getId(), toAggregate.getName());
-
- newTraversalMetrics.metrics.put(metricsId, aggregateMetrics);
- // Set the index of the Metrics
- for (final Map.Entry<Integer, String> entry : inTraversalMetrics.indexToLabelMap.entrySet()) {
- if (metricsId.equals(entry.getValue())) {
- newTraversalMetrics.indexToLabelMap.put(entry.getKey(), metricsId);
- break;
- }
- }
- }
- aggregateMetrics.aggregate(toAggregate);
- });
- });
- return newTraversalMetrics;
- }
-
- public void setMetrics(final Traversal.Admin traversal, final boolean onGraphComputer) {
- addTopLevelMetrics(traversal, onGraphComputer);
- handleNestedTraversals(traversal, null, onGraphComputer);
- computeTotals();
- }
-
- private void addTopLevelMetrics(Traversal.Admin traversal, final boolean onGraphComputer) {
- final List<ProfileStep> profileSteps = TraversalHelper.getStepsOfClass(ProfileStep.class, traversal);
- for (int ii = 0; ii < profileSteps.size(); ii++) {
- // The index is necessary to ensure that step order is preserved after a merge.
- final ProfileStep step = profileSteps.get(ii);
- if (onGraphComputer) {
- final MutableMetrics stepMetrics = traversal.getSideEffects().get(step.getId());
- this.indexToLabelMap.put(ii, stepMetrics.getId());
- this.metrics.put(stepMetrics.getId(), stepMetrics);
- } else {
- final MutableMetrics stepMetrics = step.getMetrics();
- this.indexToLabelMap.put(ii, stepMetrics.getId());
- this.metrics.put(stepMetrics.getId(), stepMetrics);
- }
- }
- }
-
- private void handleNestedTraversals(final Traversal.Admin traversal, final MutableMetrics parentMetrics, final boolean onGraphComputer) {
- long prevDur = 0;
- for (int i = 0; i < traversal.getSteps().size(); i++) {
- final Step step = (Step) traversal.getSteps().get(i);
- if (!(step instanceof ProfileStep))
- continue;
-
- final MutableMetrics metrics = onGraphComputer ?
- traversal.getSideEffects().get(step.getId()) :
- ((ProfileStep) step).getMetrics();
-
- if (null != metrics) { // this happens when a particular branch never received a .next() call (the metrics were never initialized)
- if (!onGraphComputer) {
- // subtract upstream duration.
- long durBeforeAdjustment = metrics.getDuration(TimeUnit.NANOSECONDS);
- // adjust duration
- metrics.setDuration(metrics.getDuration(TimeUnit.NANOSECONDS) - prevDur, TimeUnit.NANOSECONDS);
- prevDur = durBeforeAdjustment;
- }
-
- if (parentMetrics != null) {
- parentMetrics.addNested(metrics);
- }
-
- if (step.getPreviousStep() instanceof TraversalParent) {
- for (Traversal.Admin<?, ?> t : ((TraversalParent) step.getPreviousStep()).getLocalChildren()) {
- handleNestedTraversals(t, metrics, onGraphComputer);
- }
- for (Traversal.Admin<?, ?> t : ((TraversalParent) step.getPreviousStep()).getGlobalChildren()) {
- handleNestedTraversals(t, metrics, onGraphComputer);
- }
- }
- }
- }
- }
}