phoenix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jesse Yates (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (PHOENIX-1226) Exception in Tracing
Date Tue, 02 Sep 2014 18:37:21 GMT

     [ https://issues.apache.org/jira/browse/PHOENIX-1226?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Jesse Yates updated PHOENIX-1226:
---------------------------------
    Attachment: phoenix-1226-4.0-v0.patch

Adding patch that just assumes all the values are written as Bytes.toBytes() from Strings.
This is actually how we are storing them anyways through TracingCompat, so it should be fine
for the moment.

Ideally, we'd actually like to store each of the kv annotations as the underlying bytes, and
then let the client decide how it wants to deserialize them. However, I think that also requires
a schema upgrade of the tags column (assumes its string everywhere) and there is a bug in
the blob array implementation in phoenix around zero-byte elements (PHOENIX-1223). Plus it
will require significantly updating the underlying transport, which currently assumes everything
is a MetricsTag (and stores the value as a string)

That isn't an immediate problem here because everything is strings, but if we want to make
it a general catch-all trace sink, that needs to be fixed first.

> Exception in Tracing
> --------------------
>
>                 Key: PHOENIX-1226
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-1226
>             Project: Phoenix
>          Issue Type: Bug
>    Affects Versions: 4.1
>         Environment: 0.98.5 hbase, 4.1.0 phoenix
>            Reporter: Dan Di Spaltro
>            Assignee: Jesse Yates
>         Attachments: phoenix-1226-4.0-v0.patch
>
>
> I was exposed to an exception in the tracing code, during my test setup of Phoenix in
the following code:
> {code}
> 58062 [defaultRpcServer.handler=2,queue=0,port=53950] WARN  org.apache.hadoop.ipc.RpcServer
 - defaultRpcServer.handler=2,queue=0,port=53950: caught: java.lang.IllegalArgumentException:
offset (0) + length (4) exceed the capacity of the array: 3
> 	at org.apache.hadoop.hbase.util.Bytes.explainWrongLengthOrOffset(Bytes.java:600)
> 	at org.apache.hadoop.hbase.util.Bytes.toInt(Bytes.java:749)
> 	at org.apache.hadoop.hbase.util.Bytes.toInt(Bytes.java:725)
> 	at org.apache.phoenix.trace.TracingCompat.readAnnotation(TracingCompat.java:56)
> 	at org.apache.phoenix.trace.TraceMetricSource.receiveSpan(TraceMetricSource.java:121)
> 	at org.cloudera.htrace.Tracer.deliver(Tracer.java:81)
> 	at org.cloudera.htrace.impl.MilliSpan.stop(MilliSpan.java:70)
> 	at org.cloudera.htrace.TraceScope.close(TraceScope.java:70)
> 	at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:106)
> 	at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:114)
> 	at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:94)
> 	at java.lang.Thread.run(Thread.java:744)
> {code}
> It is related to the following line of code where we interpret all KV annotation values
as byte-wise integers here:
> https://github.com/apache/phoenix/blob/v4.1.0/phoenix-hadoop-compat/src/main/java/org/apache/phoenix/trace/TracingCompat.java#L56
> Here is where HBase is adding a non-integer KV annotation:
> https://github.com/apache/hbase/blob/0.98.5/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RequestContext.java#L105
> The fix should be simple, but I am not aware of all the related issues in changing this.
> cc [~jesse_yates], [~samarth.jain@gmail.com], [~giacomotaylor]



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message