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

rajesh updated HDDS-17588:
--------------------------
    Description: 
Parent task: HDDS-17586.

On an OM write trace, compare each parent span with its children. A parent of 
about 100ms whose children are about 1ms each is missing the span for the work 
that used the time. Add that span. A span that only repeats its parent does not 
count.

Check volume, bucket and key create and commit:
* The request span ({{CreateVolume}}, {{CreateBucket}}, {{CreateKey}}, 
{{CommitKey}}) against {{OM.preExecute}}, {{OM.applyTransaction}} and the 
double-buffer {{DB}} spans.
* {{OM.preExecute}} against the ACL check and, for key create, the SCM 
{{allocateBlock}} call.
* {{OM.applyTransaction}} against {{OM.validateAndUpdateCache}}.

One local trace already shows the shape: {{CreateVolume}} was about 45ms, while 
{{OM.preExecute}}, {{OM.applyTransaction}} and the {{DB}} spans added up to 
about 20ms. Find that missing time and name a span for the step that used it.

  was:
Wrap OM components with \{{TracingUtil.createProxy(impl, Interface.class, 
SpanKind.INTERNAL)}}, so that every call gets a \{{<ImplClass>.<method>}} span, 
for example \{{OMKeyCreateRequest.validateAndUpdateCache}} or 
\{{KeyManagerImpl.listStatus}}:
* \{{RequestHandler}} (\{{OzoneManagerRequestHandler}}), in the state machine 
and in the server-side translator
* OM client requests, through the new \{{IOMClientRequest}} interface returned 
by \{{OzoneManagerRatisUtils#createClientRequest}}
* \{{KeyManager}}, \{{BucketManager}}, \{{VolumeManager}}, \{{S3SecretManager}} 
and \{{OMMultiTenantManager}}
* \{{IAccessAuthorizer}}

Trivial or very frequently called methods are excluded with \{{@SkipTracing}}.

A JDK dynamic proxy implements only its interface, so the following refactors 
come first (no functional change):
* use the \{{KeyManager}} interface instead of \{{KeyManagerImpl}} casts;
* test read-path datanode sorting through \{{KeyManager#listStatus}};
* move request handler fault injection into a test decorator;
* introduce \{{IOMClientRequest}}.

        Summary: Find OM write spans whose children do not account for the 
parent time  (was: Create tracing proxies for OM components)

> Find OM write spans whose children do not account for the parent time
> ---------------------------------------------------------------------
>
>                 Key: HDDS-17588
>                 URL: https://issues.apache.org/jira/browse/HDDS-17588
>             Project: Apache Ozone
>          Issue Type: Sub-task
>            Reporter: rajesh
>            Assignee: rajesh
>            Priority: Major
>
> Parent task: HDDS-17586.
> On an OM write trace, compare each parent span with its children. A parent of 
> about 100ms whose children are about 1ms each is missing the span for the 
> work that used the time. Add that span. A span that only repeats its parent 
> does not count.
> Check volume, bucket and key create and commit:
> * The request span ({{CreateVolume}}, {{CreateBucket}}, {{CreateKey}}, 
> {{CommitKey}}) against {{OM.preExecute}}, {{OM.applyTransaction}} and the 
> double-buffer {{DB}} spans.
> * {{OM.preExecute}} against the ACL check and, for key create, the SCM 
> {{allocateBlock}} call.
> * {{OM.applyTransaction}} against {{OM.validateAndUpdateCache}}.
> One local trace already shows the shape: {{CreateVolume}} was about 45ms, 
> while {{OM.preExecute}}, {{OM.applyTransaction}} and the {{DB}} spans added 
> up to about 20ms. Find that missing time and name a span for the step that 
> used it.



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to