Skip to content
This repository has been archived by the owner on Mar 13, 2024. It is now read-only.

Commit

Permalink
PLT-4853 adding purge cache button to the UI. (#4811)
Browse files Browse the repository at this point in the history
* PLT_4853 adding purge cache button to the UI.

* Fixing loc stuff
  • Loading branch information
coreyhulen authored and enahum committed Dec 21, 2016
1 parent aa8d590 commit dc5f25f
Show file tree
Hide file tree
Showing 4 changed files with 127 additions and 0 deletions.
9 changes: 9 additions & 0 deletions client/client.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -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`).
Expand Down
2 changes: 2 additions & 0 deletions components/admin_console/configuration_settings.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand Down Expand Up @@ -252,6 +253,7 @@ export default class ConfigurationSettings extends AdminSettings {
disabled={false}
/>
<ReloadConfigButton/>
<PurgeCachesButton/>
</SettingsGroup>
);
}
Expand Down
112 changes: 112 additions & 0 deletions components/admin_console/purge_caches.jsx
Original file line number Diff line number Diff line change
@@ -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>
);
}
}
4 changes: 4 additions & 0 deletions i18n/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down

0 comments on commit dc5f25f

Please sign in to comment.