[
https://issues.apache.org/jira/browse/HBASE-3433?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12980392#action_12980392
]
Nicolas Spiegelberg commented on HBASE-3433:
--------------------------------------------
dj_ryan: nspiegelberg: extra copy of all the queried data does make a big
difference
[12:04pm] dj_ryan: now im goign to have to spend an hour or two profiling to
find if it is the case or not
[12:04pm] nspiegelberg: an extra shallow copy?
[12:04pm] nspiegelberg: I agree that an extra deep copy does
[12:04pm] dj_ryan: are you sure that's a shallow copy?
[12:04pm] nspiegelberg: yes
[12:04pm] dj_ryan: hmm
[12:04pm] dj_ryan: that might have minimal impact
[12:05pm] dj_ryan: i thought it was a deep copy actually.
[12:05pm] dj_ryan: but you'd be surprised at what can affect performance.
[12:05pm] nspiegelberg: that brings up my next point...
[12:05pm] nspiegelberg: I want to add a softCopy() function to KeyValue
[12:05pm] dj_ryan: which does what
[12:05pm] dj_ryan: and why woudl we use it
[12:06pm] nspiegelberg: because dj_ryan doesn't know when we do a shallow copy.
I oftentimes don't either. it's just easier to look at the function and know
for sure what it does
[12:06pm] dj_ryan: hmm
[12:06pm] dj_ryan: ha
[12:06pm] dj_ryan: it would make sense to have a kv.copy
[12:06pm] dj_ryan: rather than what the code is doing
[12:06pm] dj_ryan: what with the this and that
[12:07pm] nspiegelberg: but kv.copy should do a deepCopy, correct?
[12:07pm] nspiegelberg: I don't mind 2 deepCopy() and softCopy() functions
either
[12:08pm] dj_ryan: well yes
[12:08pm] dj_ryan: i guess deep/soft
[12:08pm] dj_ryan: or whatever might be a better nomenclature
[12:08pm] nspiegelberg: explicit is best. I chose deep and soft because I've
written too much python and both words are short
> Remove the KV copy of every KV in Scan; introduced by HBASE-3232 (why doesn't
> keyonlyfilter make copies rather than mutate -- HBASE-3211)?
> ------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: HBASE-3433
> URL: https://issues.apache.org/jira/browse/HBASE-3433
> Project: HBase
> Issue Type: Improvement
> Components: performance, regionserver
> Reporter: stack
> Priority: Critical
> Fix For: 0.92.0
>
>
> Here is offending code from inside in StoreScanner#next:
> {code}
> // kv is no longer immutable due to KeyOnlyFilter! use copy for safety
> KeyValue copyKv = new KeyValue(kv.getBuffer(), kv.getOffset(),
> kv.getLength());
> {code}
> This looks wrong given philosophy up to this has been avoidance of
> garbage-making copies.
> Maybe this has been looked into before and this is the only thing to be done
> but why is KeyOnlyFilter not making copies rather than mutating originals?
> Making this critical against 0.92.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.