Bharath Vissapragada has posted comments on this change.

Change subject: [PREVIEW] Use native allocation while building catalog updates
......................................................................


Patch Set 1:

(17 comments)

http://gerrit.cloudera.org:8080/#/c/7955/1/be/src/catalog/catalog.cc
File be/src/catalog/catalog.cc:

PS1, Line 106: RETURN_IF_ERROR(DeserializeThriftMsg(jni_env, result_bytes, 
&nbuffer));
> What happens if DeserializeThriftMsg returns a non-ok status? Who will rele
As we discussed, this is a tricky one. Reason being, if the call fails, it is 
likely that nbuffer points to a non-existent memory and free'ing it can 
seg-fault the Catalog. I'm changing it to an EXIT_IF_ERROR. Thoughts? cc: Alex.


PS1, Line 108: uint32_t len = static_cast<uint32_t>(nbuffer.buffer_len);
> Isn't buffer_len i64? What will happen if the cast fails?
Regarding i64, Yea, but thrift has some limits on how big a payload can be and 
hence all our Deserialize*() methods accept a uint32_t sized length.

Regarding static cast failures, I've placed some limits on the allocator side 
to not exceed that limit so that we fail fast on getCatalogObjects() and don't 
reach this point. Let me know what you think.


PS1, Line 110: buf
> Interestingly, DeserializeThriftMsg() casts the const away of the first par
Checked the DeserializeThriftMsg, don't think thats possible.


PS1, Line 111: desrialize
> nit: deserialize (typo)
Done


PS1, Line 113: free(buf);
> Yes, I think we need to place it safe here. If the implementation changes i
Done


http://gerrit.cloudera.org:8080/#/c/7955/1/common/thrift/JniCatalog.thrift
File common/thrift/JniCatalog.thrift:

PS1, Line 596: native byte buffer
> In the context of reading this thrift file, I don't think it is clear what 
Done


http://gerrit.cloudera.org:8080/#/c/7955/1/fe/src/main/java/org/apache/impala/service/JniCatalog.java
File fe/src/main/java/org/apache/impala/service/JniCatalog.java:

Line 137:    * Gets all catalog objects
> Please expand the comment. We're adding some non-trivial behavior here.
Done


http://gerrit.cloudera.org:8080/#/c/7955/1/fe/src/main/java/org/apache/impala/thrift/NativeByteArrayOutputStream.java
File fe/src/main/java/org/apache/impala/thrift/NativeByteArrayOutputStream.java:

Line 1: package org.apache.impala.thrift;
> Apache header?
Done


PS1, Line 26: @SuppressWarnings("restriction")
> explain?
looks like auto generated by IDE, not needed. Removed


PS1, Line 27: class
> nit: make it final (do you plan to extend it?)
Done


PS1, Line 33:   private static final long BUFFER_DOUBLING_RESIZE_LIMIT = 1 * 
1024 * 1024 * 1024; /* 1GB */
> nit: long line
Done


PS1, Line 38: length
> length (in bytes)
Done


PS1, Line 39: protected
> why protected?
Done


PS1, Line 48: public NativeByteArrayOutputStream() {
            :     this(BUFFER_INITIAL_SIZE_DEFAULT);
            :   }
> single line?
Done


PS1, Line 57: // Unsafe#allocateMemory() can handle negative inputs.
> Why do I need to know about this here? Maybe remove.
I was doing some cleanup and added it. Doesn't make sense, can be removed. 
Appears totally out of context in this CR, lol.


PS1, Line 94: if (bufferLen_ >= BUFFER_DOUBLING_RESIZE_LIMIT) {
            :         newBufferSize = bufferLen_ + BUFFER_RESIZE_INCREMENTS;
            :       } else {
            :         newBufferSize = bufferLen_ << 1;
            :       }
> How do you guarantee that newBufferSize > bytesWritten_ + len?
Yea thats a bug. fixed it.


http://gerrit.cloudera.org:8080/#/c/7955/1/fe/src/main/java/org/apache/impala/thrift/TNativeSerializer.java
File fe/src/main/java/org/apache/impala/thrift/TNativeSerializer.java:

PS1, Line 31: native by array
> nit: "native by array"?
Done


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

Gerrit-MessageType: comment
Gerrit-Change-Id: I383684effa9524734ce3c6c0fb7ed37de0e15782
Gerrit-PatchSet: 1
Gerrit-Project: Impala-ASF
Gerrit-Branch: master
Gerrit-Owner: Bharath Vissapragada <bhara...@cloudera.com>
Gerrit-Reviewer: Alex Behm <alex.b...@cloudera.com>
Gerrit-Reviewer: Bharath Vissapragada <bhara...@cloudera.com>
Gerrit-Reviewer: Dimitris Tsirogiannis <dtsirogian...@cloudera.com>
Gerrit-Reviewer: Mostafa Mokhtar <mmokh...@cloudera.com>
Gerrit-Reviewer: Tim Armstrong <tarmstr...@cloudera.com>
Gerrit-HasComments: Yes

Reply via email to