Change in asterixdb-bad[master]: Improve performance of NotifyBrokerRuntime code

2018-06-19 Thread Steven Jacobs (Code Review)
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

2018-06-19 Thread Xikui Wang (Code Review)
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

2018-06-19 Thread Jenkins (Code Review)
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

2018-06-19 Thread Steven Jacobs (Code Review)
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

2018-06-19 Thread Steven Jacobs (Code Review)
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

2018-06-19 Thread Jenkins (Code Review)
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

2018-06-19 Thread Jenkins (Code Review)
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

2018-06-19 Thread Steven Jacobs (Code Review)
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

2018-06-19 Thread Steven Jacobs (Code Review)
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

2018-06-19 Thread Xikui Wang (Code Review)
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

2018-06-19 Thread Jenkins (Code Review)
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

2018-06-19 Thread Steven Jacobs (Code Review)
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