When you perform an action in the Marketplace (install, update, or uninstall a plugin), a yellow banner appears at the top of the page showing pending operations that will be executed once SonarQube is restarted. Pending operations can be canceled until the server is restarted.
## Restart SonarQube
-Restarting SonarQube can be done manually from the command line by running `sonar.sh restart` or directly from the UI:
-
-* in the Update Center when you have Pending Changes, the restart button will be displayed in the yellow banner (see Pending Operations)
-* in the System Info page at any time
+Restarting SonarQube can be done manually from the command line by running `sonar.sh restart`.
+In SonarQube Community Edition, you can also restart from the UI, in the Update Center. When you have Pending Changes, the restart button will be displayed in the yellow banner (see Pending Operations). Please note that restarting the server won't reload the changes applied to the **sonar.properties**.
## Manual Updates
If you're using a commercial edition or your server doesn't have internet access, you won't be able to rely on the Marketplace for plugins, and you will have to handle plugin installations and upgrades manually.
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
import * as React from 'react';
-import AdminContext from '../../../app/components/AdminContext';
-import RestartButton from '../../../components/common/RestartButton';
import { Button, EditButton } from '../../../components/controls/buttons';
import Dropdown from '../../../components/controls/Dropdown';
import DropdownIcon from '../../../components/icons/DropdownIcon';
interface Props {
canDownloadLogs: boolean;
- canRestart: boolean;
cluster: boolean;
logLevel: string;
onLogLevelChange: () => void;
target="_blank">
{translate('system.download_system_info')}
</a>
- {this.props.canRestart && (
- <AdminContext.Consumer>
- {({ fetchSystemStatus, systemStatus }) => (
- <RestartButton
- className="spacer-left"
- fetchSystemStatus={fetchSystemStatus}
- systemStatus={systemStatus}
- />
- )}
- </AdminContext.Consumer>
- )}
{this.state.openLogsLevelForm && (
<ChangeLogLevelForm
infoMsg={translate(
{showActions && (
<PageActions
canDownloadLogs={!isCluster}
- canRestart={!isCluster}
cluster={isCluster}
logLevel={logLevel}
onLogLevelChange={props.onLogLevelChange}
expect(wrapper.find('Dropdown')).toMatchSnapshot();
});
-it('should render without restart and log download', () => {
- expect(
- getWrapper({ canDownloadLogs: false, canRestart: false, cluster: true })
- ).toMatchSnapshot();
+it('should render without log download', () => {
+ expect(getWrapper({ canDownloadLogs: false, cluster: true })).toMatchSnapshot();
});
it('should open change log level modal', () => {
return shallow(
<PageActions
canDownloadLogs={true}
- canRestart={true}
cluster={false}
logLevel="INFO"
onLogLevelChange={() => {}}
>
system.download_system_info
</a>
- <ContextConsumer>
- <Component />
- </ContextConsumer>
</div>
`;
</Dropdown>
`;
-exports[`should render without restart and log download 1`] = `
+exports[`should render without log download 1`] = `
<div
className="page-actions"
>
</h1>
<PageActions
canDownloadLogs={false}
- canRestart={false}
cluster={true}
logLevel="INFO"
onLogLevelChange={[MockFunction]}
</h1>
<PageActions
canDownloadLogs={false}
- canRestart={false}
cluster={true}
logLevel="INFO"
onLogLevelChange={[MockFunction]}
</h1>
<PageActions
canDownloadLogs={false}
- canRestart={false}
cluster={true}
logLevel="INFO"
onLogLevelChange={[MockFunction]}