Change in asterixdb-bad[master]: Improve performance of NotifyBrokerRuntime code
Steven Jacobs has submitted this change and it was merged. Change subject: Improve performance of NotifyBrokerRuntime code .. Improve performance of NotifyBrokerRuntime code Change-Id: Ia4ecd381d102c67f7c66cfa965312bfb885aa281 --- M asterix-bad/pom.xml M asterix-bad/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerRuntime.java 2 files changed, 77 insertions(+), 55 deletions(-) Approvals: Jenkins: Verified Xikui Wang: Looks good to me, approved diff --git a/asterix-bad/pom.xml b/asterix-bad/pom.xml index b7d775a..cc8204e 100644 --- a/asterix-bad/pom.xml +++ b/asterix-bad/pom.xml @@ -276,6 +276,16 @@ org.apache.hyracks + hyracks-util + ${hyracks.version} + + + org.apache.hyracks + algebricks-data + ${hyracks.version} + + + org.apache.hyracks hyracks-control-common ${hyracks.version} diff --git a/asterix-bad/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerRuntime.java b/asterix-bad/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerRuntime.java index 6ffb244..8e07af2 100644 --- a/asterix-bad/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerRuntime.java +++ b/asterix-bad/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerRuntime.java @@ -19,34 +19,33 @@ package org.apache.asterix.bad.runtime; +import java.io.ByteArrayOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; +import java.io.PrintStream; +import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.URL; import java.nio.ByteBuffer; +import java.nio.charset.StandardCharsets; import java.util.HashMap; -import java.util.HashSet; import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; -import org.apache.asterix.active.ActiveManager; import org.apache.asterix.active.EntityId; import org.apache.asterix.bad.BADConstants; -import org.apache.asterix.common.api.INcApplicationContext; +import org.apache.asterix.dataflow.data.nontagged.printers.json.clean.AOrderedlistPrinterFactory; +import org.apache.asterix.dataflow.data.nontagged.printers.json.clean.ARecordPrinterFactory; import org.apache.asterix.dataflow.data.nontagged.serde.ADateTimeSerializerDeserializer; -import org.apache.asterix.dataflow.data.nontagged.serde.AOrderedListSerializerDeserializer; -import org.apache.asterix.dataflow.data.nontagged.serde.ARecordSerializerDeserializer; import org.apache.asterix.dataflow.data.nontagged.serde.AStringSerializerDeserializer; import org.apache.asterix.om.base.ADateTime; -import org.apache.asterix.om.base.AOrderedList; -import org.apache.asterix.om.base.ARecord; -import org.apache.asterix.om.base.AUUID; import org.apache.asterix.om.types.AOrderedListType; import org.apache.asterix.om.types.ARecordType; import org.apache.asterix.om.types.BuiltinType; import org.apache.asterix.om.types.IAType; +import org.apache.hyracks.algebricks.data.IPrinter; import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator; import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory; import org.apache.hyracks.algebricks.runtime.operators.base.AbstractOneInputOneOutputOneFramePushRuntime; @@ -58,15 +57,19 @@ import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAccessor; import org.apache.hyracks.dataflow.common.comm.util.ByteBufferInputStream; import org.apache.hyracks.dataflow.common.data.accessors.FrameTupleReference; +import org.apache.hyracks.util.string.UTF8StringReader; +import org.apache.hyracks.util.string.UTF8StringWriter; public class NotifyBrokerRuntime extends AbstractOneInputOneOutputOneFramePushRuntime { private static final Logger LOGGER = Logger.getLogger(NotifyBrokerRuntime.class.getName()); private final ByteBufferInputStream bbis = new ByteBufferInputStream(); private final DataInputStream di = new DataInputStream(bbis); -private final AOrderedListSerializerDeserializer subSerDes = -new AOrderedListSerializerDeserializer(new AOrderedListType(BuiltinType.AUUID, null)); -private final ARecordSerializerDeserializer recordSerDes; +private static final AStringSerializerDeserializer stringSerDes = +new AStringSerializerDeserializer(new UTF8StringWriter(), new UTF8StringReader()); + +private final IPrinter recordPrinterFactory; +private final IPrinter subscriptionIdListPrinterFactory; private IPointable inputArg0 = new VoidPointable(); private IPointable inputArg1 = new VoidPointable(); @@ -74,14 +77,14 @@ private IScalarEvaluator eval0; private IScalarEvaluator eval1; private IScalarEvaluator eval2; -private final ActiveManager activeManager; private final EntityId entityId; private final boolean push; -private AOrderedList pushList; -private ARecord pushRecord; -priv
Change in asterixdb-bad[master]: Improve performance of NotifyBrokerRuntime code
Xikui Wang has posted comments on this change. Change subject: Improve performance of NotifyBrokerRuntime code .. Patch Set 4: Code-Review+2 -- To view, visit https://asterix-gerrit.ics.uci.edu/2717 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia4ecd381d102c67f7c66cfa965312bfb885aa281 Gerrit-PatchSet: 4 Gerrit-Project: asterixdb-bad Gerrit-Branch: master Gerrit-Owner: Steven Jacobs Gerrit-Reviewer: Jenkins Gerrit-Reviewer: Steven Jacobs Gerrit-Reviewer: Xikui Wang Gerrit-HasComments: No
Change in asterixdb-bad[master]: Improve performance of NotifyBrokerRuntime code
Jenkins has posted comments on this change. Change subject: Improve performance of NotifyBrokerRuntime code .. Patch Set 4: Build Started https://asterix-jenkins.ics.uci.edu/job/asterixbad-gerrit/320/ -- To view, visit https://asterix-gerrit.ics.uci.edu/2717 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia4ecd381d102c67f7c66cfa965312bfb885aa281 Gerrit-PatchSet: 4 Gerrit-Project: asterixdb-bad Gerrit-Branch: master Gerrit-Owner: Steven Jacobs Gerrit-Reviewer: Jenkins Gerrit-Reviewer: Steven Jacobs Gerrit-Reviewer: Xikui Wang Gerrit-HasComments: No
Change in asterixdb-bad[master]: Improve performance of NotifyBrokerRuntime code
Hello Jenkins, I'd like you to reexamine a change. Please visit https://asterix-gerrit.ics.uci.edu/2717 to look at the new patch set (#4). Change subject: Improve performance of NotifyBrokerRuntime code .. Improve performance of NotifyBrokerRuntime code Change-Id: Ia4ecd381d102c67f7c66cfa965312bfb885aa281 --- M asterix-bad/pom.xml M asterix-bad/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerRuntime.java 2 files changed, 77 insertions(+), 55 deletions(-) git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb-bad refs/changes/17/2717/4 -- To view, visit https://asterix-gerrit.ics.uci.edu/2717 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ia4ecd381d102c67f7c66cfa965312bfb885aa281 Gerrit-PatchSet: 4 Gerrit-Project: asterixdb-bad Gerrit-Branch: master Gerrit-Owner: Steven Jacobs Gerrit-Reviewer: Jenkins Gerrit-Reviewer: Steven Jacobs Gerrit-Reviewer: Xikui Wang
Change in asterixdb-bad[master]: Improve performance of NotifyBrokerRuntime code
Hello Jenkins, I'd like you to reexamine a change. Please visit https://asterix-gerrit.ics.uci.edu/2717 to look at the new patch set (#3). Change subject: Improve performance of NotifyBrokerRuntime code .. Improve performance of NotifyBrokerRuntime code Change-Id: Ia4ecd381d102c67f7c66cfa965312bfb885aa281 --- M asterix-bad/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerRuntime.java 1 file changed, 67 insertions(+), 55 deletions(-) git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb-bad refs/changes/17/2717/3 -- To view, visit https://asterix-gerrit.ics.uci.edu/2717 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ia4ecd381d102c67f7c66cfa965312bfb885aa281 Gerrit-PatchSet: 3 Gerrit-Project: asterixdb-bad Gerrit-Branch: master Gerrit-Owner: Steven Jacobs Gerrit-Reviewer: Jenkins Gerrit-Reviewer: Steven Jacobs Gerrit-Reviewer: Xikui Wang
Change in asterixdb-bad[master]: Improve performance of NotifyBrokerRuntime code
Jenkins has posted comments on this change. Change subject: Improve performance of NotifyBrokerRuntime code .. Patch Set 3: Build Started https://asterix-jenkins.ics.uci.edu/job/asterixbad-gerrit/319/ -- To view, visit https://asterix-gerrit.ics.uci.edu/2717 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia4ecd381d102c67f7c66cfa965312bfb885aa281 Gerrit-PatchSet: 3 Gerrit-Project: asterixdb-bad Gerrit-Branch: master Gerrit-Owner: Steven Jacobs Gerrit-Reviewer: Jenkins Gerrit-Reviewer: Steven Jacobs Gerrit-Reviewer: Xikui Wang Gerrit-HasComments: No
Change in asterixdb-bad[master]: Improve performance of NotifyBrokerRuntime code
Jenkins has posted comments on this change. Change subject: Improve performance of NotifyBrokerRuntime code .. Patch Set 2: Build Started https://asterix-jenkins.ics.uci.edu/job/asterixbad-gerrit/318/ -- To view, visit https://asterix-gerrit.ics.uci.edu/2717 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia4ecd381d102c67f7c66cfa965312bfb885aa281 Gerrit-PatchSet: 2 Gerrit-Project: asterixdb-bad Gerrit-Branch: master Gerrit-Owner: Steven Jacobs Gerrit-Reviewer: Jenkins Gerrit-Reviewer: Steven Jacobs Gerrit-Reviewer: Xikui Wang Gerrit-HasComments: No
Change in asterixdb-bad[master]: Improve performance of NotifyBrokerRuntime code
Hello Jenkins, I'd like you to reexamine a change. Please visit https://asterix-gerrit.ics.uci.edu/2717 to look at the new patch set (#2). Change subject: Improve performance of NotifyBrokerRuntime code .. Improve performance of NotifyBrokerRuntime code Change-Id: Ia4ecd381d102c67f7c66cfa965312bfb885aa281 --- M asterix-bad/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerRuntime.java 1 file changed, 66 insertions(+), 55 deletions(-) git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb-bad refs/changes/17/2717/2 -- To view, visit https://asterix-gerrit.ics.uci.edu/2717 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ia4ecd381d102c67f7c66cfa965312bfb885aa281 Gerrit-PatchSet: 2 Gerrit-Project: asterixdb-bad Gerrit-Branch: master Gerrit-Owner: Steven Jacobs Gerrit-Reviewer: Jenkins Gerrit-Reviewer: Steven Jacobs Gerrit-Reviewer: Xikui Wang
Change in asterixdb-bad[master]: Improve performance of NotifyBrokerRuntime code
Steven Jacobs has posted comments on this change. Change subject: Improve performance of NotifyBrokerRuntime code .. Patch Set 1: (6 comments) https://asterix-gerrit.ics.uci.edu/#/c/2717/1/asterix-bad/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerRuntime.java File asterix-bad/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerRuntime.java: Line 99: listPrinterFactory = > -> subscriptionIdPrinter ? Done Line 114: String JSON = "{ \"dataverseName\":\"" + entityId.getDataverse() + "\", \"channelName\":\"" > let's take this chance to rename this variable to jsonStr. JSON is an actua Done PS1, Line 177: + 1 > What's this +1 for? To skip the type tag in the serialized value Line 178: endpoint = stringSerDes.deserialize(di).getStringValue(); > It seems the endpoint comes from one of the record field value? Do we have Done Line 181: sendStreams.putIfAbsent(endpoint, new PrintStream(sendbaos.get(endpoint), true, "UTF-8")); > use standard charset as well Not sure what this is referring to. Line 193: sendStreams.get(endpoint)); > uncheck firstResult? line 202 (happens in both cases) -- To view, visit https://asterix-gerrit.ics.uci.edu/2717 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia4ecd381d102c67f7c66cfa965312bfb885aa281 Gerrit-PatchSet: 1 Gerrit-Project: asterixdb-bad Gerrit-Branch: master Gerrit-Owner: Steven Jacobs Gerrit-Reviewer: Jenkins Gerrit-Reviewer: Steven Jacobs Gerrit-Reviewer: Xikui Wang Gerrit-HasComments: Yes
Change in asterixdb-bad[master]: Improve performance of NotifyBrokerRuntime code
Xikui Wang has posted comments on this change. Change subject: Improve performance of NotifyBrokerRuntime code .. Patch Set 1: (6 comments) Added several comments. https://asterix-gerrit.ics.uci.edu/#/c/2717/1/asterix-bad/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerRuntime.java File asterix-bad/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerRuntime.java: Line 99: listPrinterFactory = -> subscriptionIdPrinter ? Line 114: String JSON = "{ \"dataverseName\":\"" + entityId.getDataverse() + "\", \"channelName\":\"" let's take this chance to rename this variable to jsonStr. JSON is an actual library name. PS1, Line 177: + 1 What's this +1 for? Line 178: endpoint = stringSerDes.deserialize(di).getStringValue(); It seems the endpoint comes from one of the record field value? Do we have the record schema somewhere? If not, could you add some comments before this method? Line 181: sendStreams.putIfAbsent(endpoint, new PrintStream(sendbaos.get(endpoint), true, "UTF-8")); use standard charset as well Line 193: sendStreams.get(endpoint)); uncheck firstResult? -- To view, visit https://asterix-gerrit.ics.uci.edu/2717 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia4ecd381d102c67f7c66cfa965312bfb885aa281 Gerrit-PatchSet: 1 Gerrit-Project: asterixdb-bad Gerrit-Branch: master Gerrit-Owner: Steven Jacobs Gerrit-Reviewer: Jenkins Gerrit-Reviewer: Xikui Wang Gerrit-HasComments: Yes
Change in asterixdb-bad[master]: Improve performance of NotifyBrokerRuntime code
Jenkins has posted comments on this change. Change subject: Improve performance of NotifyBrokerRuntime code .. Patch Set 1: Build Started https://asterix-jenkins.ics.uci.edu/job/asterixbad-gerrit/317/ -- To view, visit https://asterix-gerrit.ics.uci.edu/2717 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: comment Gerrit-Change-Id: Ia4ecd381d102c67f7c66cfa965312bfb885aa281 Gerrit-PatchSet: 1 Gerrit-Project: asterixdb-bad Gerrit-Branch: master Gerrit-Owner: Steven Jacobs Gerrit-Reviewer: Jenkins Gerrit-HasComments: No
Change in asterixdb-bad[master]: Improve performance of NotifyBrokerRuntime code
Steven Jacobs has uploaded a new change for review. https://asterix-gerrit.ics.uci.edu/2717 Change subject: Improve performance of NotifyBrokerRuntime code .. Improve performance of NotifyBrokerRuntime code Change-Id: Ia4ecd381d102c67f7c66cfa965312bfb885aa281 --- M asterix-bad/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerRuntime.java 1 file changed, 57 insertions(+), 52 deletions(-) git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb-bad refs/changes/17/2717/1 diff --git a/asterix-bad/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerRuntime.java b/asterix-bad/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerRuntime.java index 6ffb244..97615b1 100644 --- a/asterix-bad/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerRuntime.java +++ b/asterix-bad/src/main/java/org/apache/asterix/bad/runtime/NotifyBrokerRuntime.java @@ -19,34 +19,33 @@ package org.apache.asterix.bad.runtime; +import java.io.ByteArrayOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; +import java.io.PrintStream; +import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.URL; import java.nio.ByteBuffer; +import java.nio.charset.StandardCharsets; import java.util.HashMap; -import java.util.HashSet; import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; -import org.apache.asterix.active.ActiveManager; import org.apache.asterix.active.EntityId; import org.apache.asterix.bad.BADConstants; -import org.apache.asterix.common.api.INcApplicationContext; +import org.apache.asterix.dataflow.data.nontagged.printers.json.clean.AOrderedlistPrinterFactory; +import org.apache.asterix.dataflow.data.nontagged.printers.json.clean.ARecordPrinterFactory; import org.apache.asterix.dataflow.data.nontagged.serde.ADateTimeSerializerDeserializer; -import org.apache.asterix.dataflow.data.nontagged.serde.AOrderedListSerializerDeserializer; -import org.apache.asterix.dataflow.data.nontagged.serde.ARecordSerializerDeserializer; import org.apache.asterix.dataflow.data.nontagged.serde.AStringSerializerDeserializer; import org.apache.asterix.om.base.ADateTime; -import org.apache.asterix.om.base.AOrderedList; -import org.apache.asterix.om.base.ARecord; -import org.apache.asterix.om.base.AUUID; import org.apache.asterix.om.types.AOrderedListType; import org.apache.asterix.om.types.ARecordType; import org.apache.asterix.om.types.BuiltinType; import org.apache.asterix.om.types.IAType; +import org.apache.hyracks.algebricks.data.IPrinter; import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator; import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory; import org.apache.hyracks.algebricks.runtime.operators.base.AbstractOneInputOneOutputOneFramePushRuntime; @@ -58,15 +57,19 @@ import org.apache.hyracks.dataflow.common.comm.io.FrameTupleAccessor; import org.apache.hyracks.dataflow.common.comm.util.ByteBufferInputStream; import org.apache.hyracks.dataflow.common.data.accessors.FrameTupleReference; +import org.apache.hyracks.util.string.UTF8StringReader; +import org.apache.hyracks.util.string.UTF8StringWriter; public class NotifyBrokerRuntime extends AbstractOneInputOneOutputOneFramePushRuntime { private static final Logger LOGGER = Logger.getLogger(NotifyBrokerRuntime.class.getName()); private final ByteBufferInputStream bbis = new ByteBufferInputStream(); private final DataInputStream di = new DataInputStream(bbis); -private final AOrderedListSerializerDeserializer subSerDes = -new AOrderedListSerializerDeserializer(new AOrderedListType(BuiltinType.AUUID, null)); -private final ARecordSerializerDeserializer recordSerDes; +private static final AStringSerializerDeserializer stringSerDes = +new AStringSerializerDeserializer(new UTF8StringWriter(), new UTF8StringReader()); + +private final IPrinter recordPrinterFactory; +private final IPrinter listPrinterFactory; private IPointable inputArg0 = new VoidPointable(); private IPointable inputArg1 = new VoidPointable(); @@ -74,14 +77,14 @@ private IScalarEvaluator eval0; private IScalarEvaluator eval1; private IScalarEvaluator eval2; -private final ActiveManager activeManager; private final EntityId entityId; private final boolean push; -private AOrderedList pushList; -private ARecord pushRecord; -private final IAType recordType; -private final Map> sendData = new HashMap<>(); +private final Map sendData = new HashMap<>(); +private final Map sendbaos = new HashMap<>(); +private final Map sendStreams = new HashMap<>(); private String executionTimeString; +private boolean firstResult = true; +String endpoint; public NotifyBrokerRuntime(IHyracksTaskContext ctx, IScalarEvaluat