[
https://issues.apache.org/jira/browse/OWB-1388?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Raghunandan updated OWB-1388:
-----------------------------
Description:
*Problem*: Repeated instantiation of
[ViolationMessageBuilder.java|https://github.com/apache/openwebbeans/blob/master/webbeans-impl/src/main/java/org/apache/webbeans/exception/helper/ViolationMessageBuilder.java]
causes thread to block at java.util.Hashtable.
Class :
[https://github.com/apache/openwebbeans/blob/master/webbeans-impl/src/main/java/org/apache/webbeans/exception/helper/ViolationMessageBuilder.java]
Current field :
_private_ _final String lineSeparator = System.getProperty("line.separator");_
_Currently it is getting initialized every time
*{color:#ff0000}ViolationMessageBuilder{color}* is instantiated by the code._
*_Fix :_*
Change it to static variable :
_private {color:#ff0000}static{color} final String lineSeparator =
System.getProperty("line.separator");_
This will prevent java.util.HashTable (_System.getProperty("line.separator")_
being called every time {color:#ff0000}ViolationMessageBuilder{color}
instantiated.
*Sample thread block noticed at high concurrency*
java.lang.Thread.State: BLOCKED (on object monitor)
at
java.util.Hashtable.get(Ljava/lang/Object;)Ljava/lang/Object;(Hashtable.java:363)
- waiting to lock <0x000000069a4fc6e0> (a java.util.Properties)
at
java.util.Properties.getProperty(Ljava/lang/String;)Ljava/lang/String;(Properties.java:1093)
at
java.lang.System.getProperty(Ljava/lang/String;)Ljava/lang/String;(System.java:732)
at
org.apache.webbeans.exception.helper.*{color:#ff0000}ViolationMessageBuilder{color}*{color:#ff0000}.<init>{color}()V(ViolationMessageBuilder.java:25)
at
org.apache.webbeans.exception.helper.ViolationMessageBuilder.newViolation([Ljava/lang/String;)Lorg/apache/webbeans/exception/helper/ViolationMessageBuilder;(ViolationMessageBuilder.java:34)
at
org.apache.webbeans.util.InjectionExceptionUtil.*throwUnsatisfiedResolutionException*(Ljava/lang/Class;Ljavax/enterprise/inject/spi/InjectionPoint;[Ljava/lang/annotation/Annotation;)V(InjectionExceptionUtil.java:51)
at
org.apache.webbeans.container.InjectionResolver.getInjectionPointBean(Ljavax/enterprise/inject/spi/InjectionPoint;)Ljavax/enterprise/inject/spi/Bean;(InjectionResolver.java:293)
was:
*Problem*: Repeated instantiation of
[ViolationMessageBuilder.java|https://github.com/apache/openwebbeans/blob/master/webbeans-impl/src/main/java/org/apache/webbeans/exception/helper/ViolationMessageBuilder.java]
causes thread to block at java.util.Hashtable.
Class :
[https://github.com/apache/openwebbeans/blob/master/webbeans-impl/src/main/java/org/apache/webbeans/exception/helper/ViolationMessageBuilder.java]
Current field :
_private_ _final String lineSeparator = System.getProperty("line.separator");_
_Currently it is getting instantiated every time
*{color:#FF0000}ViolationMessageBuilder{color}* is instantiated by the code._
*_Fix :_*
Change it to static variable :
_private {color:#FF0000}static{color} final String lineSeparator =
System.getProperty("line.separator");_
This will prevent java.util.HashTable (_System.getProperty("line.separator")_
being called every time {color:#FF0000}ViolationMessageBuilder{color}
instantiated.
*Sample thread block noticed at high concurrency*
java.lang.Thread.State: BLOCKED (on object monitor)
at
java.util.Hashtable.get(Ljava/lang/Object;)Ljava/lang/Object;(Hashtable.java:363)
- waiting to lock <0x000000069a4fc6e0> (a java.util.Properties)
at
java.util.Properties.getProperty(Ljava/lang/String;)Ljava/lang/String;(Properties.java:1093)
at
java.lang.System.getProperty(Ljava/lang/String;)Ljava/lang/String;(System.java:732)
at
org.apache.webbeans.exception.helper.*{color:#FF0000}ViolationMessageBuilder{color}*{color:#FF0000}.<init>{color}()V(ViolationMessageBuilder.java:25)
at
org.apache.webbeans.exception.helper.ViolationMessageBuilder.newViolation([Ljava/lang/String;)Lorg/apache/webbeans/exception/helper/ViolationMessageBuilder;(ViolationMessageBuilder.java:34)
at
org.apache.webbeans.util.InjectionExceptionUtil.*throwUnsatisfiedResolutionException*(Ljava/lang/Class;Ljavax/enterprise/inject/spi/InjectionPoint;[Ljava/lang/annotation/Annotation;)V(InjectionExceptionUtil.java:51)
at
org.apache.webbeans.container.InjectionResolver.getInjectionPointBean(Ljavax/enterprise/inject/spi/InjectionPoint;)Ljavax/enterprise/inject/spi/Bean;(InjectionResolver.java:293)
> ViolationMessageBuilder has System.getProperty call as instance variable
> rather than static variable
> ----------------------------------------------------------------------------------------------------
>
> Key: OWB-1388
> URL: https://issues.apache.org/jira/browse/OWB-1388
> Project: OpenWebBeans
> Issue Type: Bug
> Components: Enterprise Web Beans, Simple Web Beans
> Reporter: Raghunandan
> Priority: Major
>
> *Problem*: Repeated instantiation of
> [ViolationMessageBuilder.java|https://github.com/apache/openwebbeans/blob/master/webbeans-impl/src/main/java/org/apache/webbeans/exception/helper/ViolationMessageBuilder.java]
> causes thread to block at java.util.Hashtable.
> Class :
> [https://github.com/apache/openwebbeans/blob/master/webbeans-impl/src/main/java/org/apache/webbeans/exception/helper/ViolationMessageBuilder.java]
> Current field :
> _private_ _final String lineSeparator =
> System.getProperty("line.separator");_
> _Currently it is getting initialized every time
> *{color:#ff0000}ViolationMessageBuilder{color}* is instantiated by the code._
>
> *_Fix :_*
> Change it to static variable :
> _private {color:#ff0000}static{color} final String lineSeparator =
> System.getProperty("line.separator");_
> This will prevent java.util.HashTable
> (_System.getProperty("line.separator")_ being called every time
> {color:#ff0000}ViolationMessageBuilder{color} instantiated.
>
> *Sample thread block noticed at high concurrency*
> java.lang.Thread.State: BLOCKED (on object monitor)
> at
> java.util.Hashtable.get(Ljava/lang/Object;)Ljava/lang/Object;(Hashtable.java:363)
> - waiting to lock <0x000000069a4fc6e0> (a java.util.Properties)
> at
> java.util.Properties.getProperty(Ljava/lang/String;)Ljava/lang/String;(Properties.java:1093)
> at
> java.lang.System.getProperty(Ljava/lang/String;)Ljava/lang/String;(System.java:732)
> at
> org.apache.webbeans.exception.helper.*{color:#ff0000}ViolationMessageBuilder{color}*{color:#ff0000}.<init>{color}()V(ViolationMessageBuilder.java:25)
> at
> org.apache.webbeans.exception.helper.ViolationMessageBuilder.newViolation([Ljava/lang/String;)Lorg/apache/webbeans/exception/helper/ViolationMessageBuilder;(ViolationMessageBuilder.java:34)
> at
> org.apache.webbeans.util.InjectionExceptionUtil.*throwUnsatisfiedResolutionException*(Ljava/lang/Class;Ljavax/enterprise/inject/spi/InjectionPoint;[Ljava/lang/annotation/Annotation;)V(InjectionExceptionUtil.java:51)
> at
> org.apache.webbeans.container.InjectionResolver.getInjectionPointBean(Ljavax/enterprise/inject/spi/InjectionPoint;)Ljavax/enterprise/inject/spi/Bean;(InjectionResolver.java:293)
--
This message was sent by Atlassian Jira
(v8.3.4#803005)