OpenDataException thrown when constructing CompositeData for ThreadInfo
Mandy Chung
mandy.chung at oracle.com
Mon Oct 22 16:00:00 UTC 2018
I assume it's a simple ThreadInfo then a simple text form would work; if
not, you can use the format NB use if you have the reader.
Mandy
On 10/22/18 7:53 AM, Sven Reimers wrote:
> Hi Mandy,
> will try to get a sample to you.
>
> Which format do you prefer?
>
> Thanks for helping
>
> -Sven
>
>
> Mandy Chung <mandy.chung at oracle.com <mailto:mandy.chung at oracle.com>>
> schrieb am So., 21. Okt. 2018, 23:26:
>
> Hi Sven,
>
> Do you have a sample ThreadInfo to reproduce this issue? That
> will be helpful. JMX monitoring is not impacted as far as I can
> tell. NB profiling is using this internal API
> `sun.management.ThreadInfoCompositeData::toCompositeData` which
> may be unused since JMX supports MXBean.
>
> Mandy
>
> On 10/21/18 5:38 PM, Sven Reimers wrote:
>> Hi,
>>
>> one more problem to go
>>
>> After applying the proposed fix for the
>> ThreadINfoCompositeData.compositeTyoe() the following exception
>> is raised:
>>
>> java.lang.reflect.InvocationTargetException
>> at
>> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
>> Method)
>> at
>> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>> at
>> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>> at java.base/java.lang.reflect.Method.invoke(Method.java:566)
>> at
>> org.netbeans.modules.sampler.SamplesOutputStream.toCompositeData(SamplesOutputStream.java:178)
>> at
>> org.netbeans.modules.sampler.SamplesOutputStream.access$400(SamplesOutputStream.java:44)
>> at
>> org.netbeans.modules.sampler.SamplesOutputStream$Sample.writeToStream(SamplesOutputStream.java:285)
>> at
>> org.netbeans.modules.sampler.SamplesOutputStream$Sample.access$300(SamplesOutputStream.java:253)
>> at
>> org.netbeans.modules.sampler.SamplesOutputStream.close(SamplesOutputStream.java:202)
>> at
>> org.netbeans.modules.sampler.Sampler.stopSampling(Sampler.java:231)
>> at org.netbeans.modules.sampler.Sampler.stop(Sampler.java:207)
>> at
>> org.netbeans.core.ui.sampler.SelfSamplerAction$1.doInBackground(SelfSamplerAction.java:90)
>> at java.desktop/javax.swing.SwingWorker$1.call(SwingWorker.java:304)
>> at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
>> at java.desktop/javax.swing.SwingWorker.run(SwingWorker.java:343)
>> at
>> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
>> at
>> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
>> at java.base/java.lang.Thread.run(Thread.java:835)
>> Caused by: java.lang.AssertionError:
>> javax.management.openmbean.OpenDataException: Argument value of
>> wrong type for item lockInfo: value false, type
>> javax.management.openmbean.CompositeType(name=java.lang.management.LockInfo,items=((itemName=className,itemType=javax.management.openmbean.SimpleType(name=java.lang.String)),(itemName=identityHashCode,itemType=javax.management.openmbean.SimpleType(name=java.lang.Integer))))
>> at
>> java.management/sun.management.ThreadInfoCompositeData.getCompositeData(ThreadInfoCompositeData.java:135)
>> at
>> java.management/sun.management.ThreadInfoCompositeData.toCompositeData(ThreadInfoCompositeData.java:72)
>> ... 18 more
>> Caused by: javax.management.openmbean.OpenDataException: Argument
>> value of wrong type for item lockInfo: value false, type
>> javax.management.openmbean.CompositeType(name=java.lang.management.LockInfo,items=((itemName=className,itemType=javax.management.openmbean.SimpleType(name=java.lang.String)),(itemName=identityHashCode,itemType=javax.management.openmbean.SimpleType(name=java.lang.Integer))))
>> at
>> java.management/javax.management.openmbean.CompositeDataSupport.<init>(CompositeDataSupport.java:235)
>> at
>> java.management/javax.management.openmbean.CompositeDataSupport.<init>(CompositeDataSupport.java:118)
>> at
>> java.management/sun.management.ThreadInfoCompositeData.getCompositeData(ThreadInfoCompositeData.java:130)
>> ... 19 more
>>
>> Seems the sequence of values is broken for
>> ThreadInfoCompoositeData also.
>>
>> Changing the sequence so that lockInfoData is after isNative
>> fixes the problem:
>>
>> final Object[] threadInfoItemValues = {
>> threadInfo.getThreadId(),
>> threadInfo.getThreadName(),
>> threadInfo.getThreadState().name(),
>> threadInfo.getBlockedTime(),
>> threadInfo.getBlockedCount(),
>> threadInfo.getWaitedTime(),
>> threadInfo.getWaitedCount(),
>> threadInfo.getLockName(),
>> threadInfo.getLockOwnerId(),
>> threadInfo.getLockOwnerName(),
>> stackTraceData,
>> threadInfo.isSuspended(),
>> threadInfo.isInNative(),
>> lockInfoData,
>> lockedMonitorsData,
>> lockedSyncsData,
>> threadInfo.isDaemon(),
>> threadInfo.getPriority(),
>> };
>>
>> With both of this fixes in place I can finally get the self
>> sampling in NetBeans to work on JDK 12.. (and 11)
>>
>> Thanks for looking into this
>>
>> -Sven
>> --
>> Sven Reimers
>>
>> * Senior Expert Software Architect
>> * Java Champion
>> * JUG Leader JUG Bodensee: http://www.jug-bodensee.de
>> * Duke's Choice Award Winner 2009
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/serviceability-dev/attachments/20181022/5f2b0379/attachment-0001.html>
More information about the serviceability-dev
mailing list