Hao Hao has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/14329 )

Change subject: [java] KUDU-2971: process communicates via protobuf-based 
protocol
......................................................................


Patch Set 15:

(17 comments)

> Patch Set 14:
>
> (17 comments)
>
> Overall looks much cleaner and simpler than the last revision I looked at. 
> Thanks for making all of the changes.
>
> Note: I didn't review the test code.

Thanks a lot for the review!

http://gerrit.cloudera.org:8080/#/c/14329/14/java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/EchoProtocolHandler.java
File 
java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/EchoProtocolHandler.java:

http://gerrit.cloudera.org:8080/#/c/14329/14/java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/EchoProtocolHandler.java@34
PS14, Line 34: respBuilde
> Nit: elsewhere in the C++ code we generally use 'resp' as the prefix for th
Done


http://gerrit.cloudera.org:8080/#/c/14329/14/java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/MessageIO.java
File 
java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/MessageIO.java:

http://gerrit.cloudera.org:8080/#/c/14329/14/java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/MessageIO.java@34
PS14, Line 34:  * Util class for reading and writing protobuf messages.
> Nit: reading and writing protobuf messages.
Done


http://gerrit.cloudera.org:8080/#/c/14329/14/java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/MessageIO.java@98
PS14, Line 98: expect
> expected
Done


http://gerrit.cloudera.org:8080/#/c/14329/14/java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/MessageIO.java@105
PS14, Line 105: will b
> will
Done


http://gerrit.cloudera.org:8080/#/c/14329/14/java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/MessageReader.java
File 
java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/MessageReader.java:

http://gerrit.cloudera.org:8080/#/c/14329/14/java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/MessageReader.java@79
PS14, Line 79: exit
> Nit: exiting
Done


http://gerrit.cloudera.org:8080/#/c/14329/14/java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/MessageReader.java@90
PS14, Line 90:       if (data.length == 0) {
> Under what circumstances would we expect to see an empty message? Doc?
We don't expect to see empty messages in general. Updated the comment.


http://gerrit.cloudera.org:8080/#/c/14329/14/java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/MessageWriter.java
File 
java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/MessageWriter.java:

http://gerrit.cloudera.org:8080/#/c/14329/14/java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/MessageWriter.java@37
PS14, Line 37: o
> one
Done


http://gerrit.cloudera.org:8080/#/c/14329/14/java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/MessageWriter.java@65
PS14, Line 65:     while (true) {
> Why do we have to test this condition? Why not just while (true)? If we're
Hmm, you're right, missed this one, thanks!


http://gerrit.cloudera.org:8080/#/c/14329/14/java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/MessageWriter.java@92
PS14, Line 92:    * Constructs a message with the given error status.
> Nit: resp
Done


http://gerrit.cloudera.org:8080/#/c/14329/14/java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/MessageWriter.java@123
PS14, Line 123:                              new String(data, 
StandardCharsets.UTF_8)), e);
> This method is simple enough that I think you can inline it into run().
Done


http://gerrit.cloudera.org:8080/#/c/14329/14/java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/SubprocessCommandLineParser.java
File 
java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/SubprocessCommandLineParser.java:

http://gerrit.cloudera.org:8080/#/c/14329/14/java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/SubprocessCommandLineParser.java@91
PS14, Line 91:
             :
             :
             :
> What do you think of passing the entire CommandLine into the SubprocessConf
If I understand it correctly, you are suggesting to combine CommandLine with 
SubprocessConfiguration, so that the caller only need to care about 
SubprocessConfiguration? If so, looks good to me, updated accordingly.


http://gerrit.cloudera.org:8080/#/c/14329/14/java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/SubprocessConfiguration.java
File 
java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/SubprocessConfiguration.java:

http://gerrit.cloudera.org:8080/#/c/14329/14/java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/SubprocessConfiguration.java@42
PS14, Line 42: WRITER_
> Nit: add a space before
Done


http://gerrit.cloudera.org:8080/#/c/14329/14/java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/SubprocessConfiguration.java@44
PS14, Line 44:       "Maximum number of threads in the writer thread pool for 
subprocess";
> Nit: maybe you can shorten the Javadoc for the below getters:
Done


http://gerrit.cloudera.org:8080/#/c/14329/14/java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/SubprocessExecutor.java
File 
java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/SubprocessExecutor.java:

http://gerrit.cloudera.org:8080/#/c/14329/14/java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/SubprocessExecutor.java@52
PS14, Line 52:     // Exit the program with a nonzero status code if unexpected 
exception(s)
> This isn't actually "visible" for testing. The accessor is (and you've anno
Done


http://gerrit.cloudera.org:8080/#/c/14329/14/java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/SubprocessExecutor.java@56
PS14, Line 56:   };
             :   private boolean injectInterrupt = false;
             :
             :   SubprocessExecutor() {
             :   }
             :
> Can this be defined in the declaration of errorHandler itself? Could it be
Done


http://gerrit.cloudera.org:8080/#/c/14329/14/java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/SubprocessExecutor.java@108
PS14, Line 108:       for (int i = 0; i < maxWriterThread; i++) {
> Can you put the readerFuture into this array too? Then you can simplify the
The problem is certain tests depends on the failure of the reader task. If 
adding readerFuture along with writerFutures, we will get TimeoutException 
instead of ExecutionException as we are waiting for all tasks to finish.


http://gerrit.cloudera.org:8080/#/c/14329/14/java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/SubprocessOutputStream.java
File 
java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/SubprocessOutputStream.java:

http://gerrit.cloudera.org:8080/#/c/14329/14/java/kudu-subprocess/src/main/java/org/apache/kudu/subprocess/SubprocessOutputStream.java@44
PS14, Line 44:   @Override
> Do we need to provide overrides for the other two write() variants, or for
In OutputStream, the other two variants will call into write(int b). But to be 
safe, I will update to add all.



--
To view, visit http://gerrit.cloudera.org:8080/14329
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: Iaf9ad24dbc9acc681284b6433836271b5b4c7982
Gerrit-Change-Number: 14329
Gerrit-PatchSet: 15
Gerrit-Owner: Hao Hao <hao....@cloudera.com>
Gerrit-Reviewer: Adar Dembo <a...@cloudera.com>
Gerrit-Reviewer: Andrew Wong <aw...@cloudera.com>
Gerrit-Reviewer: Attila Bukor <abu...@apache.org>
Gerrit-Reviewer: Grant Henke <granthe...@apache.org>
Gerrit-Reviewer: Hao Hao <hao....@cloudera.com>
Gerrit-Reviewer: Kudu Jenkins (120)
Gerrit-Comment-Date: Wed, 05 Feb 2020 02:17:51 +0000
Gerrit-HasComments: Yes

Reply via email to