Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -1029,9 +1029,15 @@ public void start(

if (mntcProc.isMaintenanceMode()) {
if (log.isInfoEnabled()) {
log.info(
"Node is being started in maintenance mode. " +
"Starting IsolatedDiscoverySpi instead of configured discovery SPI."
log.info(NL +
">>> __ _____ _____ _____________ ____ _ ___________ __ ______ ___ ____" + NL +
">>> / |/ / | / _/ |/ /_ __/ __/ |/ / | / |/ / ___/ __/ / |/ / _ \\/ _ \\/ __/" + NL +
">>> / /|_/ / Δ |_/ // / / / / _// / Δ |/ / /__/ _/ / /|_/ / // / // / _/" + NL +
">>> /_/ /_/_/|_/___/_/|_/ /_/ /___/_/|_/_/|_/_/|_/\\___/___/ /_/ /_/\\___/____/___/" + NL +
">>> " + NL +
">>> Node is being started in maintenance mode." + NL +
">>> Starting IsolatedDiscoverySpi instead of configured discovery SPI." + NL +
">>> "
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
package org.apache.ignite.internal.maintenance;

import java.io.IOException;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Optional;
Expand Down Expand Up @@ -260,6 +261,11 @@ private void proceedWithMaintenance() {
return activeTasks.get(maitenanceTaskName);
}

/** {@inheritDoc} */
@Override public @Nullable Map<String, MaintenanceTask> activeMaintenanceTasks() {
return activeTasks.isEmpty() ? null : Collections.unmodifiableMap(activeTasks);
}

/** {@inheritDoc} */
@Override public boolean isMaintenanceMode() {
return maintenanceMode;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,8 @@
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.util.typedef.internal.SB;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.maintenance.MaintenanceRegistry;
import org.apache.ignite.maintenance.MaintenanceTask;
import org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi;
import org.apache.ignite.spi.discovery.tcp.internal.TcpDiscoveryNode;

Expand Down Expand Up @@ -677,6 +679,7 @@ void ackNodeBasicMetrics(IgniteLogger log, IgniteEx ignite, DecimalFormat dblFmt

GridKernalContext ctx = ignite.context();
IgniteConfiguration cfg = ignite.configuration();
MaintenanceRegistry mntcProc = ctx.maintenanceRegistry();

ExecutorService execSvc = ctx.pools().getExecutorService();
ExecutorService sysExecSvc = ctx.pools().getSystemExecutorService();
Expand Down Expand Up @@ -736,6 +739,28 @@ void ackNodeBasicMetrics(IgniteLogger log, IgniteEx ignite, DecimalFormat dblFmt
if (cfg.getCommunicationSpi() instanceof TcpCommunicationSpi)
netDetails += ", commPort=" + ((TcpCommunicationSpi)cfg.getCommunicationSpi()).boundPort();

SB maintModeInfo = new SB("");

if (mntcProc.isMaintenanceMode()) {
Map<String, MaintenanceTask> activeTasks = mntcProc.activeMaintenanceTasks();

maintModeInfo.a("ATTENTION! Node is in Maintenance Mode").nl();

if (activeTasks != null) {
int i = 1;
maintModeInfo.a("Active tasks:").nl();
for (MaintenanceTask task : activeTasks.values()) {
maintModeInfo.a(i == 1 ? " - - - - - - - - - - - - - - -\n" : "");
maintModeInfo.a(" ").a(i++).a(" Task name: ").a(task.name()).nl();
maintModeInfo.a(" Description: ").a(task.description()).nl();
maintModeInfo.a(" Task params: ").a(task.parameters()).nl();
maintModeInfo.a(" - - - - - - - - - - - - - - -").nl();
}
}

log.info(maintModeInfo.toString());
}

SB msg = new SB();

msg.nl()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
package org.apache.ignite.maintenance;

import java.util.List;
import java.util.Map;
import java.util.function.UnaryOperator;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteException;
Expand Down Expand Up @@ -139,6 +140,17 @@ public void registerMaintenanceTask(
*/
@Nullable public MaintenanceTask activeMaintenanceTask(String maintenanceTaskName);

/**
* Returns all active {@link MaintenanceTask}s.
* Active tasks exist only when the node has entered Maintenance Mode.
* <p>
* A {@link MaintenanceTask} becomes active when node enters Maintenance Mode but doesn't complete its preparation
* phase within the maintenance window.
*
* @return a Map containing all {@link MaintenanceTask}s objects or null if no maintenance tasks were present.
*/
@Nullable public Map<String, MaintenanceTask> activeMaintenanceTasks();

/**
* Registers {@link MaintenanceWorkflowCallback} for a {@link MaintenanceTask} with a given name.
*
Expand Down