diff options
author | Corey Hulen <corey@hulen.com> | 2016-12-21 14:31:24 -0800 |
---|---|---|
committer | enahum <nahumhbl@gmail.com> | 2016-12-21 19:31:24 -0300 |
commit | 64a86bd32f82b8c9c943c38949f6f7e105bcd54e (patch) | |
tree | 5e69090792d229cdf2ba2379e5970f92d2168fdd | |
parent | 56dc863de14da2c5d6b897352e91384a91a40f94 (diff) | |
download | chat-64a86bd32f82b8c9c943c38949f6f7e105bcd54e.tar.gz chat-64a86bd32f82b8c9c943c38949f6f7e105bcd54e.tar.bz2 chat-64a86bd32f82b8c9c943c38949f6f7e105bcd54e.zip |
PLT-4853 adding purge cache button to the UI. (#4811)
* PLT_4853 adding purge cache button to the UI.
* Fixing loc stuff
-rw-r--r-- | webapp/client/client.jsx | 9 | ||||
-rw-r--r-- | webapp/components/admin_console/configuration_settings.jsx | 2 | ||||
-rw-r--r-- | webapp/components/admin_console/purge_caches.jsx | 112 | ||||
-rw-r--r-- | webapp/i18n/en.json | 4 |
4 files changed, 127 insertions, 0 deletions
diff --git a/webapp/client/client.jsx b/webapp/client/client.jsx index c5743ae7b..782b74571 100644 --- a/webapp/client/client.jsx +++ b/webapp/client/client.jsx @@ -265,6 +265,15 @@ export default class Client { end(this.handleResponse.bind(this, 'reloadConfig', success, error)); } + invalidateAllCaches(success, error) { + return request. + get(`${this.getAdminRoute()}/invalidate_all_caches`). + set(this.defaultHeaders). + type('application/json'). + accept('application/json'). + end(this.handleResponse.bind(this, 'invalidate_all_caches', success, error)); + } + recycleDatabaseConnection(success, error) { return request. get(`${this.getAdminRoute()}/recycle_db_conn`). diff --git a/webapp/components/admin_console/configuration_settings.jsx b/webapp/components/admin_console/configuration_settings.jsx index 4653a5df9..a5e5abe87 100644 --- a/webapp/components/admin_console/configuration_settings.jsx +++ b/webapp/components/admin_console/configuration_settings.jsx @@ -10,6 +10,7 @@ import {FormattedMessage, FormattedHTMLMessage} from 'react-intl'; import SettingsGroup from './settings_group.jsx'; import TextSetting from './text_setting.jsx'; import ReloadConfigButton from './reload_config.jsx'; +import PurgeCachesButton from './purge_caches.jsx'; import WebserverModeDropdownSetting from './webserver_mode_dropdown_setting.jsx'; import {ConnectionSecurityDropdownSettingWebserver} from './connection_security_dropdown_setting.jsx'; import BooleanSetting from './boolean_setting.jsx'; @@ -252,6 +253,7 @@ export default class ConfigurationSettings extends AdminSettings { disabled={false} /> <ReloadConfigButton/> + <PurgeCachesButton/> </SettingsGroup> ); } diff --git a/webapp/components/admin_console/purge_caches.jsx b/webapp/components/admin_console/purge_caches.jsx new file mode 100644 index 000000000..a999f090e --- /dev/null +++ b/webapp/components/admin_console/purge_caches.jsx @@ -0,0 +1,112 @@ +// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +import React from 'react'; + +import Client from 'client/web_client.jsx'; + +import {FormattedMessage} from 'react-intl'; + +export default class PurgeCachesButton extends React.Component { + constructor(props) { + super(props); + + this.handlePurge = this.handlePurge.bind(this); + + this.state = { + loading: false, + fail: null + }; + } + + handlePurge(e) { + e.preventDefault(); + + this.setState({ + loading: true, + fail: null + }); + + Client.invalidateAllCaches( + () => { + this.setState({ + loading: false + }); + }, + (err) => { + this.setState({ + loading: false, + fail: err.message + ' - ' + err.detailed_error + }); + } + ); + } + + render() { + if (global.window.mm_license.IsLicensed !== 'true') { + return <div/>; + } + + let testMessage = null; + if (this.state.fail) { + testMessage = ( + <div className='alert alert-warning'> + <i className='fa fa-warning'/> + <FormattedMessage + id='admin.purge.purgeFail' + defaultMessage='Purging unsuccessful: {error}' + values={{ + error: this.state.fail + }} + /> + </div> + ); + } + + const helpText = ( + <FormattedMessage + id='admin.purge.purgeDescription' + defaultMessage='This will purge all the in-memory caches for things like sessions, accounts, channels, etc. Deployments using High Availability will attempt to purge all the servers in the cluster. Purging the caches may adversly impact performance.' + /> + ); + + let contents = null; + if (this.state.loading) { + contents = ( + <span> + <span className='fa fa-refresh icon--rotate'/> + <FormattedMessage + id='admin.purge.loading' + defaultMessage='Loading...' + /> + </span> + ); + } else { + contents = ( + <FormattedMessage + id='admin.purge.button' + defaultMessage='Purge All Caches' + /> + ); + } + + return ( + <div className='form-group reload-config'> + <div className='col-sm-offset-4 col-sm-8'> + <div> + <button + className='btn btn-default' + onClick={this.handlePurge} + > + {contents} + </button> + {testMessage} + </div> + <div className='help-text'> + {helpText} + </div> + </div> + </div> + ); + } +} diff --git a/webapp/i18n/en.json b/webapp/i18n/en.json index 733c72560..5d1b710d7 100644 --- a/webapp/i18n/en.json +++ b/webapp/i18n/en.json @@ -573,6 +573,10 @@ "admin.reload.loading": " Loading...", "admin.reload.reloadDescription": "Deployments using multiple databases can switch from one master database to another without restarting the Mattermost server by updating \"config.json\" to the new desired configuration and using the <b>Reload Configuration from Disk</b> feature to load the new settings while the server is running. The administrator should then use the <a href=\"../advanced/database\"><b>Database > Recycle Database Connections</b></a> feature to recycle the database connections based on the new settings.", "admin.reload.reloadFail": "Reloading unsuccessful: {error}", + "admin.purge.button": "Purge All Caches", + "admin.purge.loading": " Loading...", + "admin.purge.purgeDescription": "This will purge all the in-memory caches for things like sessions, accounts, channels, etc. Deployments using High Availability will attempt to purge all the servers in the cluster. Purging the caches may adversly impact performance.", + "admin.purge.purgeFail": "Purging unsuccessful: {error}", "admin.reset_password.close": "Close", "admin.reset_password.newPassword": "New Password", "admin.reset_password.select": "Select", |