From 64a86bd32f82b8c9c943c38949f6f7e105bcd54e Mon Sep 17 00:00:00 2001 From: Corey Hulen Date: Wed, 21 Dec 2016 14:31:24 -0800 Subject: [PATCH] PLT-4853 adding purge cache button to the UI. (#4811) * PLT_4853 adding purge cache button to the UI. * Fixing loc stuff --- webapp/client/client.jsx | 9 ++ .../admin_console/configuration_settings.jsx | 2 + .../components/admin_console/purge_caches.jsx | 112 ++++++++++++++++++ webapp/i18n/en.json | 4 + 4 files changed, 127 insertions(+) create mode 100644 webapp/components/admin_console/purge_caches.jsx diff --git a/webapp/client/client.jsx b/webapp/client/client.jsx index c5743ae7b8..782b745714 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 4653a5df9b..a5e5abe872 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} /> + ); } diff --git a/webapp/components/admin_console/purge_caches.jsx b/webapp/components/admin_console/purge_caches.jsx new file mode 100644 index 0000000000..a999f090e2 --- /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
; + } + + let testMessage = null; + if (this.state.fail) { + testMessage = ( +
+ + +
+ ); + } + + const helpText = ( + + ); + + let contents = null; + if (this.state.loading) { + contents = ( + + + + + ); + } else { + contents = ( + + ); + } + + return ( +
+
+
+ + {testMessage} +
+
+ {helpText} +
+
+
+ ); + } +} diff --git a/webapp/i18n/en.json b/webapp/i18n/en.json index 733c725607..5d1b710d75 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 Reload Configuration from Disk feature to load the new settings while the server is running. The administrator should then use the Database > Recycle Database Connections 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",