public static String opName(byte op) {
        switch (op) {
            case PUT:
                return "PUT";
            case PUT_IF_ABSENT:
                return "PUT_IF_ABSENT";
            case DELETE:
                return "DELETE";
            case PUT_LIST:
                return "PUT_LIST";
            case DELETE_RANGE:
                return "DELETE_RANGE";
            case GET_SEQUENCE:
                return "GET_SEQUENCE";
            case NODE_EXECUTE:
                return "NODE_EXECUTE";
            case KEY_LOCK:
                return "KEY_LOCK";
            case KEY_LOCK_RELEASE:
                return "KEY_LOCK_RELEASE";
            case GET:
                return "GET";
            case MULTI_GET:
                return "MULTI_GET";
            case SCAN:
                return "SCAN";
            case GET_PUT:
                return "GET_PUT";
            case COMPARE_PUT:
                return "COMPARE_PUT";
            case MERGE:
                return "MERGE";
            case RESET_SEQUENCE:
                return "RESET_SEQUENCE";
            case RANGE_SPLIT:
                return "RANGE_SPLIT";
            case DELETE_LIST:
                return "DELETE_LIST";
            case CONTAINS_KEY:
                return "CONTAINS_KEY";
            case REVERSE_SCAN:
                return "REVERSE_SCAN";
            case COMPARE_PUT_ALL:
                return "COMPARE_PUT_ALL";
            default:
                return "UNKNOWN" + op;
        }
    }
The best practice is to call this method only once
and keep a copy of it yourself.
jraft-rheakv/rheakv-core/src/main/java/com/alipay/sofa/jraft/rhea/storage/KVOperation.java