Skip to content

Remove references to Statistics of unloaded plugins #238

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
guusdk opened this issue Sep 29, 2022 · 1 comment
Closed

Remove references to Statistics of unloaded plugins #238

guusdk opened this issue Sep 29, 2022 · 1 comment

Comments

@guusdk
Copy link
Member

guusdk commented Sep 29, 2022

The monitoring plugin displays data that is collected by implementations of org.jivesoftware.openfire.stats.Statistic. This data is mainly used to populate RRD databases and display graphs.

When a Statistic instance is provided by another plugin, it can disappear, when that plugin gets unloaded (or reloaded).

The Monitoring plugin keeps a reference to a Statistic instance indefinitely. It should release the reference if the instance was provided by a plugin that is being unloaded. Failing to do so will prevent that plugin's classloader from being removed. This keeps various entities that should be removed available, with various (undesired) side-effects: one of which is that the graphs shown by the Monitoring plugin for that particular plugin fail to show new data.

guusdk added a commit to guusdk/openfire-monitoring-plugin that referenced this issue Sep 29, 2022
…gins

When another plugin provides a Statistic instance, that instance should be released when the provider unloads. Failing to do so will prevent that plugin's classloader from being destroyed. This can cause all kinds of unexpected side-effects.

This commit removes references to _all_ Statistic instances whenever _any_ plugin unloads. That's a buckshot, but the effects should be limited to missing stats around the time that a plugin gets unloaded/reloaded - which is expected to be very rare.
guusdk added a commit to guusdk/openfire-restAPI-plugin that referenced this issue Sep 29, 2022
This commit adds statistics for every response generated in response to a HTTP request on one of the REST API endpoints.

The statistics show the amount of responses for each particular 'family' of status codes (1xx, 2xx, 3xx, 4xx and 5xx).

The Monitoring plugin can be used to review graphs of this data. Note that the current latest release of the Monitoring plugin (2.3.1) has an issue that affects the functionality when a plugin that _provides_ a statistic is unloaded/reloaded. See igniterealtime/openfire-monitoring-plugin#238 for details. It is recommended to use this commit only in combination with a version of the Monitoring plugin in which this issue is fixed. A work-around for the issue, if it does occur, is to restart Openfire after a plugin has been unloaded/reloaded.
guusdk added a commit to guusdk/openfire-restAPI-plugin that referenced this issue Sep 29, 2022
This commit adds statistics for every response generated in response to a HTTP request on one of the REST API endpoints.

The statistics show the amount of responses for each particular 'family' of status codes (1xx, 2xx, 3xx, 4xx and 5xx).

The Monitoring plugin can be used to review graphs of this data. Note that the current latest release of the Monitoring plugin (2.3.1) has an issue that affects the functionality when a plugin that _provides_ a statistic is unloaded/reloaded. See igniterealtime/openfire-monitoring-plugin#238 for details. It is recommended to use this commit only in combination with a version of the Monitoring plugin in which this issue is fixed. A work-around for the issue, if it does occur, is to restart Openfire after a plugin has been unloaded/reloaded.
guusdk added a commit to igniterealtime/openfire-restAPI-plugin that referenced this issue Sep 29, 2022
This commit adds statistics for every response generated in response to a HTTP request on one of the REST API endpoints.

The statistics show the amount of responses for each particular 'family' of status codes (1xx, 2xx, 3xx, 4xx and 5xx).

The Monitoring plugin can be used to review graphs of this data. Note that the current latest release of the Monitoring plugin (2.3.1) has an issue that affects the functionality when a plugin that _provides_ a statistic is unloaded/reloaded. See igniterealtime/openfire-monitoring-plugin#238 for details. It is recommended to use this commit only in combination with a version of the Monitoring plugin in which this issue is fixed. A work-around for the issue, if it does occur, is to restart Openfire after a plugin has been unloaded/reloaded.
@guusdk
Copy link
Member Author

guusdk commented Sep 29, 2022

A work-around for the issue is restarting Openfire after a plugin that provides statistics is reloaded or upgraded in Openfire.

guusdk added a commit to guusdk/openfire-monitoring-plugin that referenced this issue Nov 22, 2022
…gins

When another plugin provides a Statistic instance, that instance should be released when the provider unloads. Failing to do so will prevent that plugin's classloader from being destroyed. This can cause all kinds of unexpected side-effects.

This commit removes references to _all_ Statistic instances whenever _any_ plugin unloads. That's a buckshot, but the effects should be limited to missing stats around the time that a plugin gets unloaded/reloaded - which is expected to be very rare.
@guusdk guusdk closed this as completed in 352a044 Nov 22, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant