Source:
<code>@Override public IgniteFuture<Void> changeMasterKey(String masterKeyName) { if (ctx.clientNode()) throw new UnsupportedOperationException("Client and daemon nodes can not perform this operation."); if (!ctx.state().clusterState().active()) throw new IgniteException("Master key change was rejected. The cluster is inactive."); checkMasterKeyChangeSupported(); <START> if (masterKeyName.equals(getMasterKeyName())) <END> return new IgniteFutureImpl<>(new GridFinishedFuture<>()); byte[] digest = masterKeyDigest(masterKeyName); PendingMasterKey request = new PendingMasterKey(UUID.randomUUID(), encryptKeyName(masterKeyName), digest); synchronized (opsMux) { if (disconnected) { throw new IgniteClientDisconnectedException(ctx.cluster().clientReconnectFuture(), "Master key change was rejected. Client node disconnected."); } if (stopped) throw new IgniteException("Master key change was rejected. Node is stopping."); if (masterKeyChangeFut != null && !masterKeyChangeFut.isDone()) throw new IgniteException("Master key change was rejected. Previous change was not completed."); masterKeyChangeFut = new MasterKeyChangeFuture(request.requestId()); } prepareProc.start(request.requestId(), request); return new IgniteFutureImpl<>(masterKeyChangeFut); }</code><technical_language>I complete future error here. Change master key is maintenance procedure executes timeout of key compromise. If change done user it</technical_language>

Target:
@Override public IgniteFuture<Void> changeMasterKey(String masterKeyName) { if (ctx.clientNode()) { return new IgniteFinishedFutureImpl<>(new UnsupportedOperationException("Client and daemon nodes can not " + "perform this operation.")); } if (!IgniteFeatures.allNodesSupports(ctx.grid().cluster().nodes(), MASTER_KEY_CHANGE)) { return new IgniteFinishedFutureImpl<>(new IllegalStateException("Not all nodes in the cluster support " + "the master key change process.")); } if (!ctx.state().clusterState().active()) { return new IgniteFinishedFutureImpl<>(new IgniteException("Master key change was rejected. " + "The cluster is inactive.")); } if (masterKeyName.equals(getMasterKeyName())) { return new IgniteFinishedFutureImpl<>(new IgniteException("Master key change was rejected. " + "New name equal to the current.")); } byte[] digest; try { digest = masterKeyDigest(masterKeyName); } catch (Exception e) { return new IgniteFinishedFutureImpl<>(new IgniteException("Master key change was rejected. " + "Unable to get the master key digest.")); } MasterKeyChangeRequest request = new MasterKeyChangeRequest(UUID.randomUUID(), encryptKeyName(masterKeyName), digest); synchronized (opsMux) { if (disconnected) { return new IgniteFinishedFutureImpl<>(new IgniteClientDisconnectedException( ctx.cluster().clientReconnectFuture(), "Master key change was rejected. Client node disconnected.")); } if (stopped) { return new IgniteFinishedFutureImpl<>(new IgniteException("Master key change was rejected. " + "Node is stopping.")); } if (masterKeyChangeFut != null && !masterKeyChangeFut.isDone()) { return new IgniteFinishedFutureImpl<>(new IgniteException("Master key change was rejected. " + "The previous change was not completed.")); } masterKeyChangeFut = new MasterKeyChangeFuture(request.requestId()); prepareMKChangeProc.start(request.requestId(), request); return new IgniteFutureImpl<>(masterKeyChangeFut); } }