felix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Felix Meschberger (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (FELIX-5394) Memoryusage plugin creates a heap dump on every notification
Date Fri, 04 Nov 2016 14:17:58 GMT

    [ https://issues.apache.org/jira/browse/FELIX-5394?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15636472#comment-15636472
] 

Felix Meschberger edited comment on FELIX-5394 at 11/4/16 2:17 PM:
-------------------------------------------------------------------

Apart from that, there is indeed a proplem with the plugin: The documentation of the _Dump
Threshold_ property states _zero to disable automatic dump creation_.

This is clearly not implemented like that. Rather the implementation does this when the property
is zero:

  * Registers the notification listener (yes, this listener is always registered !)
  * Sets the threshold to zero on all memory pools allowing to set the threshold. This causes
these pools to not send events.
  * Still set the threshold to zero on the settable pools (this may be overwritten by other
tooling but dumps by the plugin will not be created)

Now, should some other system tooling decide to set the threshold to some value (of course
this setting is sort of a race condition between this plugin and the other tool), the plugin
will receive events and in contrast to the stated "disable automatic dump creation", dumps
will be created.

We should fix this as follows:

  * Register the listener only in case a non-zero threshold is configured
  * Make sure the listener is not registered (or unregistered) if a zero threshold is configured

[~alex.parvulescu] Does that work for you ?


was (Author: fmeschbe):
Apart from that, there is indeed a proplem with the plugin: The documentation of the _Dump
Threshold_ property states _zero to disable automatic dump creation_.

This is clearly not implemented like that. Rather the implementation does this when the property
is zero:

  * Registers the notification listener (yes, this listener is always registered !)
  * Sets the threshold to zero on all memory pools allowing to set the threshold. This causes
these pools to not send events.

Now, should some other system tooling decide to set the threshold to some value (of course
this setting is sort of a race condition between this plugin and the other tool), the plugin
will receive events and in contrast to the stated "disable automatic dump creation", dumps
will be created.

We should fix this as follows:

  * Register the listener only in case a non-zero threshold is configured
  * Make sure the listener is not registered (or unregistered) if a zero threshold is configured

[~alex.parvulescu] Does that work for you ?

> Memoryusage plugin creates a heap dump on every notification
> ------------------------------------------------------------
>
>                 Key: FELIX-5394
>                 URL: https://issues.apache.org/jira/browse/FELIX-5394
>             Project: Felix
>          Issue Type: Bug
>          Components: Web Console
>    Affects Versions: webconsole-memoryusage-plugin-1.0.6
>            Reporter: Alex Parvulescu
>              Labels: patch-available
>         Attachments: FELIX-5394-v0.patch
>
>
> As a part of OAK-4966 I'm trying to install a listener on available memory with a notification
when a certain available memory threshold is met [0]. This seems to clash a bit with the current
{{memoryusage}} plugin, as both jmx listeners try to change the threshold for the notification,
and subsequently both might receive the notification at a different value than expected. (for
example I'm setting a notification at {{15%}} and even though the {{memoryusage}} plugin is
not used and is currently set at {{0%}} it will still create a heap dump:
> {noformat}
> *WARN* [Service Thread] org.apache.felix.webconsole.plugins.memoryusage Received Memory
Threshold Exceeded Notification, dumping Heap
> {noformat}
> I have 2 suggestions:
> * first is to _not_ change the threshold value if it's already set at a smaller value.
this means the plugin will not break other listeners expectations of receiving an event
>  
> * second is to verify the locally set threshold value against the values seen at notification
time. this effectively means the plugin is free to ignore certain events, and not dump the
heap to disk every time it gets a ping [1].
> I would like to provide a patch for this issue pretty soon as I really need to fix OAK-4966,
unless someone is more eager to come up with a working solution.
> [0] https://issues.apache.org/jira/browse/OAK-4966?focusedCommentId=15629253&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-15629253
> [1] https://github.com/apache/felix/blob/trunk/webconsole-plugins/memoryusage/src/main/java/org/apache/felix/webconsole/plugins/memoryusage/internal/MemoryUsageSupport.java#L553



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

Mime
View raw message