You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hive.apache.org by "Gopal V (JIRA)" <ji...@apache.org> on 2015/11/19 09:42:11 UTC
[jira] [Updated] (HIVE-12463) VectorMapJoinFastKeyStore has Array
OOB errors
[ https://issues.apache.org/jira/browse/HIVE-12463?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Gopal V updated HIVE-12463:
---------------------------
Affects Version/s: 1.3.0
> VectorMapJoinFastKeyStore has Array OOB errors
> ----------------------------------------------
>
> Key: HIVE-12463
> URL: https://issues.apache.org/jira/browse/HIVE-12463
> Project: Hive
> Issue Type: Bug
> Components: Vectorization
> Affects Versions: 1.3.0, 2.0.0
> Reporter: Gopal V
> Assignee: Gopal V
>
> When combining different sized keys, observing an occasional error in hashtable probes.
> {code}
> Caused by: java.lang.ArrayIndexOutOfBoundsException: 162046429
> at org.apache.hadoop.hive.ql.exec.vector.mapjoin.fast.VectorMapJoinFastKeyStore.equalKey(VectorMapJoinFastKeyStore.java:150)
> at org.apache.hadoop.hive.ql.exec.vector.mapjoin.fast.VectorMapJoinFastBytesHashTable.findReadSlot(VectorMapJoinFastBytesHashTable.java:191)
> at org.apache.hadoop.hive.ql.exec.vector.mapjoin.fast.VectorMapJoinFastBytesHashMap.lookup(VectorMapJoinFastBytesHashMap.java:76)
> at org.apache.hadoop.hive.ql.exec.vector.mapjoin.VectorMapJoinInnerMultiKeyOperator.process(VectorMapJoinInnerMultiKeyOperator.java:300)
> ... 26 more
> {code}
> {code}
> // Our reading is positioned to the key.
> writeBuffers.getByteSegmentRefToCurrent(byteSegmentRef, keyLength, readPos);
> byte[] currentBytes = byteSegmentRef.getBytes();
> int currentStart = (int) byteSegmentRef.getOffset();
> for (int i = 0; i < keyLength; i++) {
> if (currentBytes[currentStart + i] != keyBytes[keyStart + i]) {
> // LOG.debug("VectorMapJoinFastKeyStore equalKey no match on bytes");
> return false;
> }
> }
> {code}
> This needs an identical fix to match
> {code}
> // Rare case of buffer boundary. Unfortunately we'd have to copy some bytes.
> // Rare case of buffer boundary. Unfortunately we'd have to copy some bytes.
> byte[] bytes = new byte[length];
> int destOffset = 0;
> while (destOffset < length) {
> ponderNextBufferToRead(readPos);
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)