[ 
https://issues.apache.org/jira/browse/CRUNCH-346?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13902765#comment-13902765
 ] 

Gabriel Reid commented on CRUNCH-346:
-------------------------------------

Ok, I'll put together a patch for this.

About the fact that the correct primitive handling is only done for Avro -- 
there's no technical reason for this, as far as I'm aware. Instead, it's just 
that the the short-circuiting to a no-op for the deep-copying was never done 
for Writables. All of your understanding of the deep-copying is correct as you 
described it.

> Don't deep-copy immutable Writable PTypes
> -----------------------------------------
>
>                 Key: CRUNCH-346
>                 URL: https://issues.apache.org/jira/browse/CRUNCH-346
>             Project: Crunch
>          Issue Type: Improvement
>            Reporter: Chao Shi
>
> I found getDetachedValue() appears quite often when jstack on one of my 
> pipeline. A piece of stacktrace is shown below. In the pipeline, most of 
> types we used are immutable (e.g. java primitives, strings, protobuf). I 
> think we can avoid deep-copy overhead here.
> "main" prio=10 tid=0x00007f0de801d800 nid=0x7ef runnable [0x00007f0dee66c000]
>    java.lang.Thread.State: RUNNABLE
>       at org.apache.hadoop.io.BytesWritable.<init>(BytesWritable.java:52)
>       at org.apache.hadoop.io.BytesWritable.<init>(BytesWritable.java:46)
>       at sun.reflect.GeneratedConstructorAccessor9.newInstance(Unknown Source)
>       at 
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
>       at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
>       at java.lang.Class.newInstance0(Class.java:355)
>       at java.lang.Class.newInstance(Class.java:308)
>       at 
> org.apache.crunch.types.writable.WritableDeepCopier.deepCopy(WritableDeepCopier.java:63)
>       at 
> org.apache.crunch.types.writable.WritableDeepCopier.deepCopy(WritableDeepCopier.java:36)
>       at 
> org.apache.crunch.types.writable.WritableType.getDetachedValue(WritableType.java:125)
>       at 
> org.apache.crunch.impl.mr.emit.IntermediateEmitter.emit(IntermediateEmitter.java:54)



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to