blob: 8b09b024832a05d32f19579009950c152e6be797 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.ignite.raft.jraft.error;
import java.util.HashMap;
import java.util.Map;
/**
* Raft error code.
*/
public enum RaftError {
/**
* Unknown error
*/
UNKNOWN(-1),
/**
* Success, no error.
*/
SUCCESS(0),
/**
* <pre>
* All Kinds of Timeout(Including Election_timeout, Timeout_now, Stepdown_timeout)
* </pre>
* * <code>ERAFTTIMEDOUT = 10001;</code>
*/
ERAFTTIMEDOUT(10001),
/**
* <pre>
* Bad User State Machine
* </pre>
* * <code>ESTATEMACHINE = 10002;</code>
*/
ESTATEMACHINE(10002),
/**
* <pre>
* Catchup Failed
* </pre>
* * <code>ECATCHUP = 10003;</code>
*/
ECATCHUP(10003),
/**
* <pre>
* Trigger step_down(Not All)
* </pre>
* * <code>ELEADERREMOVED = 10004;</code>
*/
ELEADERREMOVED(10004),
/**
* <pre>
* Leader Is Not In The New Configuration
* </pre>
* * <code>ESETPEER = 10005;</code>
*/
ESETPEER(10005),
/**
* <pre>
* Shut_down
* </pre>
* * <code>ENODESHUTDOWN = 10006;</code>
*/
ENODESHUTDOWN(10006),
/**
* <pre>
* Receive Higher Term Requests
* </pre>
* * <code>EHIGHERTERMREQUEST = 10007;</code>
*/
EHIGHERTERMREQUEST(10007),
/**
* <pre>
* Receive Higher Term Response
* </pre>
* * <code>EHIGHERTERMRESPONSE = 10008;</code>
*/
EHIGHERTERMRESPONSE(10008),
/**
* <pre>
* Node Is In Error
* </pre>
* * <code>EBADNODE = 10009;</code>
*/
EBADNODE(10009),
/**
* <pre>
* Node Votes For Some Candidate
* </pre>
* * <code>EVOTEFORCANDIDATE = 10010;</code>
*/
EVOTEFORCANDIDATE(10010),
/**
* <pre>
* Follower(without leader) or Candidate Receives
* </pre>
* * <code>ENEWLEADER = 10011;</code>
*/
ENEWLEADER(10011),
/**
* <pre>
* Append_entries/Install_snapshot Request from a new leader
* </pre>
* * <code>ELEADERCONFLICT = 10012;</code>
*/
ELEADERCONFLICT(10012),
/**
* <pre>
* Trigger on_leader_stop
* </pre>
* * <code>ETRANSFERLEADERSHIP = 10013;</code>
*/
ETRANSFERLEADERSHIP(10013),
/**
* <pre>
* The log at the given index is deleted
* </pre>
* * <code>ELOGDELETED = 10014;</code>
*/
ELOGDELETED(10014),
/**
* <pre>
* No available user log to read
* </pre>
* * <code>ENOMOREUSERLOG = 10015;</code>
*/
ENOMOREUSERLOG(10015),
/* other non-raft error codes 1000~10000 */
/**
* Invalid rpc request
*/
EREQUEST(1000),
/**
* Task is stopped
*/
ESTOP(1001),
/**
* Retry again
*/
EAGAIN(1002),
/**
* Interrupted
*/
EINTR(1003),
/**
* Internal exception
*/
EINTERNAL(1004),
/**
* Task is canceled
*/
ECANCELED(1005),
/**
* Host is down
*/
EHOSTDOWN(1006),
/**
* Service is shutdown
*/
ESHUTDOWN(1007),
/**
* Permission issue
*/
EPERM(1008),
/**
* Server is in busy state
*/
EBUSY(1009),
/**
* Timed out
*/
ETIMEDOUT(1010),
/**
* Data is stale
*/
ESTALE(1011),
/**
* Something not found
*/
ENOENT(1012),
/**
* File/folder already exists
*/
EEXISTS(1013),
/**
* IO error
*/
EIO(1014),
/**
* Invalid value.
*/
EINVAL(1015),
/**
* Permission denied
*/
EACCES(1016);
private static final Map<Integer, RaftError> RAFT_ERROR_MAP = new HashMap<>();
static {
for (final RaftError error : RaftError.values()) {
RAFT_ERROR_MAP.put(error.getNumber(), error);
}
}
public final int getNumber() {
return this.value;
}
public static RaftError forNumber(final int value) {
return RAFT_ERROR_MAP.getOrDefault(value, UNKNOWN);
}
public static String describeCode(final int code) {
RaftError e = forNumber(code);
return e != null ? e.name() : "<Unknown:" + code + ">";
}
private final int value;
RaftError(final int value) {
this.value = value;
}
}