You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-issues@hadoop.apache.org by "Akira Ajisaka (JIRA)" <ji...@apache.org> on 2017/06/15 05:17:00 UTC
[jira] [Updated] (HDFS-11583) Parent spans are not initialized to
NullScope for every DFSPacket
[ https://issues.apache.org/jira/browse/HDFS-11583?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Akira Ajisaka updated HDFS-11583:
---------------------------------
Resolution: Fixed
Hadoop Flags: Reviewed
Fix Version/s: 2.7.4
Status: Resolved (was: Patch Available)
Committed this to branch-2.7. Thanks [~iwasakims] for the fix and thanks all for the discussion.
> Parent spans are not initialized to NullScope for every DFSPacket
> -----------------------------------------------------------------
>
> Key: HDFS-11583
> URL: https://issues.apache.org/jira/browse/HDFS-11583
> Project: Hadoop HDFS
> Issue Type: Bug
> Components: tracing
> Affects Versions: 2.7.1
> Reporter: Karan Mehta
> Assignee: Masatake Iwasaki
> Fix For: 2.7.4
>
> Attachments: HDFS-11583-branch-2.7.001.patch, HDFS-11583-branch-2.7.002.patch, HDFS-11583-branch-2.7.003.patch
>
>
> The issue was found while working with PHOENIX-3752.
> Each packet received by the {{run()}} method of {{DataStreamer}} class, uses the {{parents}} field of the {{DFSPacket}} to create a new {{dataStreamer}} span, which in turn creates a {{writeTo}} span as its child span. The parents field is initialized when the packet is added to the {{dataQueue}} and the value is initialized from the {{ThreadLocal}}. This is how HTrace handles spans.
> A {{TraceScope}} is created and initialized to {{NullScope}} before the loop which runs till the point when the stream is closed.
> Consider the following scenario, when the {{dataQueue}} contains multiple packets, only the first of which has a tracing enabled. The scope is initialized to the {{dataStreamer}} scope and a {{writeTo}} span is created as its child, which gets closed once the packet is sent out to a remote datanode. Before {{writeTo}} span is started, the {{dataStreamer}} scope is detached. So calling the close method on it doesn't do anything at the end of loop.
> The second iteration will be using the stale value of the {{scope}} variable with a DFSPacket on which tracing is not enabled. This results in generation of an orphan {{writeTo}} spans which are being delivered to the {{SpanReceiver}} as registered in the TraceFramework. This may result in unlimited number of spans being generated and sent out to receiver.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
---------------------------------------------------------------------
To unsubscribe, e-mail: hdfs-issues-unsubscribe@hadoop.apache.org
For additional commands, e-mail: hdfs-issues-help@hadoop.apache.org