Raft cluster keeps re-electing

System: MacOS Ventura 13.2.1
Build Version: the lastest commit bf5f6c1
I built RaftKeeper on my machine following the instruction in README. Then I modified the configuration file conf/config.xml to set up a 3 nodes Raft cluster:
<?xml version="1.0"?>
<raftkeeper>
    <!-- System timezone, default is empty, will use OS default timezone. -->
    <!-- <timezone></timezone>-->
    <logger>
        <!-- Valid values are: fatal, error, warning, information, debug, trace -->
        <!-- <level>information</level> -->
        <!-- Logger file path, default is empty string. If is empty string will not log to file -->
        <path>./log/raftkeeper.log</path>
        <!-- Error logger file path, default is empty string. If is empty string will not log to file -->
        <err_log_path>./log/raftkeeper.err.log</err_log_path>
        <!-- Log file size limit, when reached will create another file, default is 100M. -->
        <!-- <size>100M</size> -->
        <!-- How many log file to keep, default is 10. -->
        <!-- <count>10</count> -->
        <!-- Whether compress log, default is true. -->
        <!-- <compress>true</compress> -->
        <!-- Whether print log to console, default is false-->
        <!-- <log_to_console>false</log_to_console> -->
    </logger>

    <!-- <core_dump> -->
        <!-- 1 GiB by default. If more - it writes to disk too long. -->
        <!-- <size_limit>1073741824</size_limit> -->
    <!-- </core_dump> -->

    <keeper>
        <!-- My id in cluster. -->
        <my_id>1</my_id>

        <!-- Binging host, default is "<IP_ADDRESS>." -->
        <!-- <host><IP_ADDRESS></host> -->

        <!-- Port for user request and 4lw command -->
        <!-- <port>8101</port> -->

        <!-- Port for follower forward write request and session info to leader. -->
        <!-- <forwarding_port>8102</forwarding_port> -->

        <!-- Port for Raft internal usage: heartbeat, log replicate, leader selection etc. -->
        <!-- <internal_port>8103</internal_port> -->

        <!-- Raft log store directory -->
        <log_dir>./data/log</log_dir>

        <!-- Raft snapshot store directory -->
        <snapshot_dir>./data/snapshot</snapshot_dir>

        <!-- Max snapshot interval in second. -->
        <!-- <snapshot_create_interval>3600</snapshot_create_interval> -->

        <!-- Processor thread count, default is 16. -->
        <!-- <thread_count>16</thread_count> -->

        <!-- 4lwd command white list, default "conf,cons,crst,envi,ruok,srst,srvr,stat,wchs,dirs,mntr,isro,lgif,rqld" -->
        <!-- <four_letter_word_white_list></four_letter_word_white_list> -->

        <!-- Super digest for root user, default is empty string.
            See https://zookeeper.apache.org/doc/r3.5.2-alpha/zookeeperAdmin.html  -->
        <!-- <super_digest></super_digest> -->

        <!-- NuRaft related settings -->
        <raft_settings>
            <!-- User session timeout in millisecond, default is 30000. -->
            <!-- <session_timeout_ms>30000</session_timeout_ms> -->

            <!-- User operation timeout in millisecond, default is 20000. -->
            <!-- <operation_timeout_ms>20000</operation_timeout_ms> -->

            <!-- Leader will check whether session is dead in this period, default is 1000. -->
            <!-- <dead_session_check_period_ms>100</dead_session_check_period_ms> -->

            <!-- NuRaft heart beat interval in millisecond, default is 500. -->
            <!-- <heart_beat_interval_ms>500</heart_beat_interval_ms> -->

            <!-- NuRaft election timeout lower bound, default is 10s. -->
            <!-- <election_timeout_lower_bound_ms>10000</election_timeout_lower_bound_ms> -->

            <!-- NuRaft election timeout upper bound, default is 20s. -->
            <!-- <election_timeout_upper_bound_ms>20000</election_timeout_upper_bound_ms> -->

            <!-- Keeper will keep at least this log item, default 1_000_000. -->
            <!-- <reserved_log_items>1000000</reserved_log_items> -->

            <!-- Create snapshot in this log size, default is 3_000_000. -->
            <!-- <snapshot_distance>3000000</snapshot_distance> -->

            <!-- How many snapshot to keep, default is 5. -->
            <!-- <max_stored_snapshots>5</max_stored_snapshots> -->

            <!-- Startup time in millisecond, default is 6000000ms. Because will load data, should set to a big value. -->
            <!-- <startup_timeout>6000000</startup_timeout> -->

            <!-- Shutdown time in millisecond, default is 5000ms. -->
            <!-- <shutdown_timeout>5000</shutdown_timeout> -->

            <!-- NuRaft log level, default is information. -->
            <!-- <raft_logs_level>information</raft_logs_level> -->

            <!-- NuRaft thread pool size, default is 32. -->
            <!-- <nuraft_thread_size>32</nuraft_thread_size> -->

            <!-- Log gap (compared to the leader's latest log) for treating this node as fresh, default is 200. -->
            <!-- <fresh_log_gap>200</fresh_log_gap> -->

            <!-- Auto update configuration retry times, default is 30. -->
            <!-- <configuration_change_tries_count>30</configuration_change_tries_count> -->

            <!-- NuRaft append entries max batch size, default is 1000. -->
            <!-- <max_batch_size>1000</max_batch_size> -->

            <!-- Raft log fsync mode:
                    fsync_parallel : The leader can do log replication and log persisting in parallel,
                        thus it can reduce the latency of write operation path. In this mode data is safety.
                    fsync : The leader and follower do log persisting synchronously. In this mode data is safety.
                    fsync_batch : The leader and follower do log persisting asynchronously and in batch.
                        In this mode data is less safety.
            -->
            <!-- <log_fsync_mode>fsync_parallel</log_fsync_mode> -->

            <!-- If log_fsync_mode is fsync_batch, will fsync log after x appending entries, default value is 1000. -->
            <!-- <log_fsync_interval>1000</log_fsync_interval> -->
        </raft_settings>

        <!-- If you want a RaftKeeper cluster, you can uncomment this and configure it carefully -->
        <cluster>
            <server>
                <id>1</id>
                <host><IP_ADDRESS></host>
                <!-- <internal_port>8103</internal_port> -->
                <!-- <forwarding_port>8102</forwarding_port> -->
                <!-- `true` if this node is learner. Learner will not initiate or participate in leader election. -->
                <!-- <learner>false</learner> -->
                <!-- Priority of this server, default is 1 and if is 0 the server will never be leader. -->
                <!-- <priority>1</priority> -->
            </server>
            <server>
                <id>2</id>
                <host><IP_ADDRESS></host>
            </server>
            <server>
                <id>3</id>
                <host><IP_ADDRESS></host>
            </server>
        </cluster>
    </keeper>
</raftkeeper>

With that configuration and I run RaftKeeper with command ./lib/raftkeeper server --config=conf/config.xml, got the logs below:
2023.03.24 02:56:29.806859 [ 2836175 ] {} <Information> : Starting RaftKeeper v2.0.1, no build id, PID 35071
2023.03.24 02:56:29.914603 [ 2836175 ] {} <Information> LogSegmentStore: Create LogSegmentStore ./data/log.
2023.03.24 02:56:29.914748 [ 2836175 ] {} <Information> LogSegmentStore: Begin init log segment store, max log size<PHONE_NUMBER> bytes, max segment count 50.
2023.03.24 02:56:29.916808 [ 2836175 ] {} <Information> LogSegment: Created new segment ./data/log/log_1_open_20230324025629, seg_fd 7, first index 1
2023.03.24 02:56:29.917013 [ 2836175 ] {} <Information> FileLogStore: Init file log store, last log index 0, log dir ./data/log
2023.03.24 02:56:29.917144 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102
2023.03.24 02:56:29.917217 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 0, 0x10a154018
2023.03.24 02:56:29.917256 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 1, 0x10a1541d8
2023.03.24 02:56:29.917289 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 2, 0x10a154398
2023.03.24 02:56:29.917322 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 3, 0x10a154558
2023.03.24 02:56:29.917355 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 4, 0x10a154718
2023.03.24 02:56:29.917387 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 5, 0x10a1548d8
2023.03.24 02:56:29.917551 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 6, 0x10a154a98
2023.03.24 02:56:29.917640 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 7, 0x10a154c58
2023.03.24 02:56:29.917688 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 8, 0x10a154e18
2023.03.24 02:56:29.917772 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 9, 0x10a154fd8
2023.03.24 02:56:29.917815 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 10, 0x10a155198
2023.03.24 02:56:29.918262 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 11, 0x10a155358
2023.03.24 02:56:29.918348 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 12, 0x10a155518
2023.03.24 02:56:29.918385 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 13, 0x10a1556d8
2023.03.24 02:56:29.918417 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 14, 0x10a155898
2023.03.24 02:56:29.918449 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 15, 0x10a155a58
2023.03.24 02:56:29.918537 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102
2023.03.24 02:56:29.918583 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 0, 0x10a155c18
2023.03.24 02:56:29.918616 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 1, 0x10a155dd8
2023.03.24 02:56:29.918653 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 2, 0x10a155f98
2023.03.24 02:56:29.918687 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 3, 0x10a156158
2023.03.24 02:56:29.918719 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 4, 0x10a156318
2023.03.24 02:56:29.918751 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 5, 0x10a1564d8
2023.03.24 02:56:29.918852 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 6, 0x10a156698
2023.03.24 02:56:29.918880 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 7, 0x10a156858
2023.03.24 02:56:29.919076 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 8, 0x10a156a18
2023.03.24 02:56:29.919154 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 9, 0x10a156bd8
2023.03.24 02:56:29.919186 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 10, 0x10a156d98
2023.03.24 02:56:29.919237 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 11, 0x10a156f58
2023.03.24 02:56:29.919268 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 12, 0x10a157118
2023.03.24 02:56:29.919326 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 13, 0x10a1572d8
2023.03.24 02:56:29.919349 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 14, 0x10a157498
2023.03.24 02:56:29.919374 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 15, 0x10a157658
2023.03.24 02:56:29.919397 [ 2836175 ] {} <Information> NuRaftStateManager: raft cluster config :  <IP_ADDRESS>:8103 <IP_ADDRESS>:8103 <IP_ADDRESS>:8103
2023.03.24 02:56:29.919628 [ 2836175 ] {} <Information> KeeperStateMachine: begin init state machine, snapshot directory ./data/snapshot
2023.03.24 02:56:29.920045 [ 2836175 ] {} <Information> RaftTaskManager: Open task for task, fd 8, path ./data/snapshot/committed.task
2023.03.24 02:56:29.920127 [ 2836175 ] {} <Warning> RaftTaskManager: Read last committed index failed -1
2023.03.24 02:56:29.920322 [ 2836201 ] {} <Information> RaftTaskManager: try schedule, shut down false
2023.03.24 02:56:29.920464 [ 2836175 ] {} <Information> KeeperSnapshotManager: Skip no snapshot file committed.task
2023.03.24 02:56:29.920503 [ 2836175 ] {} <Information> KeeperSnapshotManager: Load snapshot metas 0 from snapshot directory ./data/snapshot
2023.03.24 02:56:29.920529 [ 2836175 ] {} <Information> KeeperSnapshotManager: Get last snapshot, snapshot size 0
2023.03.24 02:56:29.920551 [ 2836175 ] {} <Information> KeeperStateMachine: Load snapshot meta size 0, last log index 0 in snapshot
2023.03.24 02:56:29.920580 [ 2836175 ] {} <Information> KeeperStateMachine: Begin replay log, first log index 1 and last log index 0 in log file ( prev index 0, log index 0 )
2023.03.24 02:56:29.920719 [ 2836175 ] {} <Information> KeeperStateMachine: Apply log done, ephemeral sessions 0 nodes 0
2023.03.24 02:56:29.920881 [ 2836175 ] {} <Information> KeeperStateMachine: Replay last committed index 0 in log store
2023.03.24 02:56:29.920958 [ 2836175 ] {} <Information> KeeperStateMachine: Starting background creating snapshot thread.
2023.03.24 02:56:29.921993 [ 2836175 ] {} <Information> NuRaft: Raft ASIO listener initiated, UNSECURED
2023.03.24 02:56:29.922135 [ 2836175 ] {} <Warning> NuRaftStateManager: Raft srv_state file not exist, maybe this is the first startup.
2023.03.24 02:56:29.922204 [ 2836175 ] {} <Information> NuRaftStateManager: load config with initial cluster config.
2023.03.24 02:56:29.922232 [ 2836175 ] {} <Information> KeeperStateMachine: last_snapshot invoke
2023.03.24 02:56:29.922256 [ 2836175 ] {} <Information> KeeperSnapshotManager: Get last snapshot, snapshot size 0
2023.03.24 02:56:29.922292 [ 2836175 ] {} <Information> NuRaft: parameters: timeout 10000 - 20000, heartbeat 500, leadership expiry 10000, max batch 100, backoff 50, snapshot distance 3000000, enable randomized snapshot creation NO, log sync stop gap 99999, reserved logs 1000000, client timeout 20000, auto forwarding ON, API call type BLOCKING, custom commit quorum size 0, custom election quorum size 0, snapshot receiver INCLUDED, leadership transfer wait time 0, grace period of lagging state machine 0, snapshot IO: BLOCKING, parallel log appending: ON
2023.03.24 02:56:29.922349 [ 2836175 ] {} <Information> NuRaft: new timeout range: 10000 -- 20000
2023.03.24 02:56:29.922385 [ 2836175 ] {} <Information> NuRaft:    === INIT RAFT SERVER ===
commit index 0
term 0
election timer allowed
log store start 1, end 0
config log idx 0, prev log idx 0
2023.03.24 02:56:29.922453 [ 2836175 ] {} <Information> NuRaft: peer 1: DC ID 0, <IP_ADDRESS>:8103, voting member, 1
peer 2: DC ID 0, <IP_ADDRESS>:8103, voting member, 1
peer 3: DC ID 0, <IP_ADDRESS>:8103, voting member, 1
my id: 1, voting_member
num peers: 2
2023.03.24 02:56:29.922483 [ 2836175 ] {} <Information> NuRaft: global manager does not exist. will use local thread for commit and append
2023.03.24 02:56:29.922563 [ 2836175 ] {} <Information> NuRaft: wait for HB, for 50 + [10000, 20000] ms
2023.03.24 02:56:29.922924 [ 2836236 ] {} <Information> NuRaft: bg append_entries thread initiated
2023.03.24 02:56:48.868253 [ 2836203 ] {} <Warning> NuRaft: Election timeout, initiate leader election
2023.03.24 02:56:48.868621 [ 2836203 ] {} <Information> NuRaft: [PRIORITY] decay, target 1 -> 1, mine 1
2023.03.24 02:56:48.868767 [ 2836203 ] {} <Information> NuRaft: [ELECTION TIMEOUT] current role: follower, log last term 0, state term 0, target p 1, my p 1, hb dead, pre-vote NOT done
2023.03.24 02:56:48.868882 [ 2836203 ] {} <Information> NuRaft: [PRE-VOTE INIT] my id 1, my role candidate, term 0, log idx 0, log term 0, priority (target 1 / mine 1)
2023.03.24 02:56:48.872425 [ 2836205 ] {} <Information> NuRaft: 0x108ff0f18 connected to <IP_ADDRESS>:8103 (as a client)
2023.03.24 02:56:48.872691 [ 2836209 ] {} <Information> NuRaft: 0x108ff0d98 connected to <IP_ADDRESS>:8103 (as a client)
2023.03.24 02:56:48.872968 [ 2836211 ] {} <Information> NuRaft: receive a incoming rpc connection
2023.03.24 02:56:48.873312 [ 2836211 ] {} <Information> NuRaft: session 1 got connection from <IP_ADDRESS>:56195 (as a server)
2023.03.24 02:56:48.873502 [ 2836211 ] {} <Information> NuRaft: receive a incoming rpc connection
2023.03.24 02:56:48.873588 [ 2836211 ] {} <Information> NuRaft: session 2 got connection from <IP_ADDRESS>:56194 (as a server)
2023.03.24 02:56:48.873852 [ 2836214 ] {} <Information> NuRaft: [PRE-VOTE REQ] my role candidate, from peer 1, log term: req 0 / mine 0
last idx: req 0 / mine 0, term: req 0 / mine 0
HB dead
2023.03.24 02:56:48.874075 [ 2836214 ] {} <Information> NuRaft: pre-vote decision: O (grant)
2023.03.24 02:56:48.874449 [ 2836216 ] {} <Information> NuRaft: [PRE-VOTE REQ] my role candidate, from peer 1, log term: req 0 / mine 0
last idx: req 0 / mine 0, term: req 0 / mine 0
HB dead
2023.03.24 02:56:48.874617 [ 2836216 ] {} <Information> NuRaft: pre-vote decision: O (grant)
2023.03.24 02:56:48.874854 [ 2836210 ] {} <Information> NuRaft: [PRE-VOTE RESP] peer 1 (O), term 0, resp term 0, my role candidate, dead 2, live 0, abandoned 0, num voting members 3, quorum 2
2023.03.24 02:56:48.875092 [ 2836210 ] {} <Information> NuRaft: [PRE-VOTE DONE] SUCCESS, term 0
2023.03.24 02:56:48.875158 [ 2836210 ] {} <Information> NuRaft: [PRE-VOTE DONE] initiate actual vote
2023.03.24 02:56:48.875774 [ 2836210 ] {} <Information> NuRaftStateManager: save srv_state with term 1 and vote_for 1
2023.03.24 02:56:48.875842 [ 2836210 ] {} <Information> NuRaft: [VOTE INIT] my id 1, my role candidate, term 1, log idx 0, log term 0, priority (target 1 / mine 1)
2023.03.24 02:56:48.876186 [ 2836219 ] {} <Information> NuRaft: [PRE-VOTE RESP] peer 1 (O), term 0, resp term 0, my role candidate, dead 3, live 0, abandoned 0, num voting members 3, quorum 2
2023.03.24 02:56:48.876394 [ 2836219 ] {} <Information> NuRaft: [PRE-VOTE DONE] SUCCESS, term 0
2023.03.24 02:56:48.876487 [ 2836219 ] {} <Information> NuRaft: [PRE-VOTE DONE] actual vote is already initiated, do nothing
2023.03.24 02:56:48.876777 [ 2836225 ] {} <Information> NuRaft: [VOTE REQ] my role candidate, from peer 1, log term: req 0 / mine 0
last idx: req 0 / mine 0, term: req 1 / mine 1
priority: target 1 / mine 1, voted_for 1
2023.03.24 02:56:48.877009 [ 2836225 ] {} <Information> NuRaft: decision: O (grant), voted_for 1, term 1
2023.03.24 02:56:48.877643 [ 2836225 ] {} <Information> NuRaftStateManager: save srv_state with term 1 and vote_for 1
2023.03.24 02:56:48.877916 [ 2836220 ] {} <Information> NuRaft: [VOTE REQ] my role candidate, from peer 1, log term: req 0 / mine 0
last idx: req 0 / mine 0, term: req 1 / mine 1
priority: target 1 / mine 1, voted_for 1
2023.03.24 02:56:48.878016 [ 2836220 ] {} <Information> NuRaft: decision: O (grant), voted_for 1, term 1
2023.03.24 02:56:48.878363 [ 2836220 ] {} <Information> NuRaftStateManager: save srv_state with term 1 and vote_for 1
2023.03.24 02:56:48.878579 [ 2836226 ] {} <Information> NuRaft: [VOTE RESP] peer 1 (O), resp term 1, my role candidate, granted 2, responded 2, num voting members 3, quorum 2
2023.03.24 02:56:48.878686 [ 2836226 ] {} <Information> NuRaft: Server is elected as leader for term 1
2023.03.24 02:56:48.878764 [ 2836226 ] {} <Information> NuRaft: number of pending commit elements: 0
2023.03.24 02:56:48.878801 [ 2836226 ] {} <Information> NuRaft: state machine commit index 0, precommit index 0, last log index 0
2023.03.24 02:56:48.878901 [ 2836226 ] {} <Information> NuRaft: [BECOME LEADER] appended new config at 1
2023.03.24 02:56:48.879411 [ 2836226 ] {} <Information> NuRaft:   === LEADER (term 1) ===
2023.03.24 02:56:48.879552 [ 2836228 ] {} <Information> NuRaft: Election completed, will ignore the voting result from this server
2023.03.24 02:56:48.880097 [ 2836204 ] {} <Warning> NuRaft: Receive AppendEntriesRequest from another leader (1) with same term, there must be a bug. Ignore it instead of exit.
2023.03.24 02:56:48.880311 [ 2836204 ] {} <Warning> NuRaft: no response is returned from raft message handler
2023.03.24 02:56:48.880517 [ 2836229 ] {} <Warning> NuRaft: Receive AppendEntriesRequest from another leader (1) with same term, there must be a bug. Ignore it instead of exit.
2023.03.24 02:56:48.880820 [ 2836229 ] {} <Warning> NuRaft: no response is returned from raft message handler
2023.03.24 02:56:48.881062 [ 2836203 ] {} <Warning> NuRaft: peer (2) response error: failed to read response to peer 2, <IP_ADDRESS>:8103, error 2, End of file
2023.03.24 02:56:48.881765 [ 2836213 ] {} <Warning> NuRaft: peer (3) response error: failed to read response to peer 3, <IP_ADDRESS>:8103, error 2, End of file
2023.03.24 02:56:48.883992 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102
2023.03.24 02:56:48.884147 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 0, 0x10a154018
2023.03.24 02:56:48.884199 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 1, 0x10a1541d8
2023.03.24 02:56:48.884232 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 2, 0x10a154398
2023.03.24 02:56:48.884260 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 3, 0x10a154558
2023.03.24 02:56:48.884531 [ 2836565 ] {} <Information> KeeperDispatcher: start session clear task
2023.03.24 02:56:48.884681 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 4, 0x10a154718
2023.03.24 02:56:48.884737 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 5, 0x10a1548d8
2023.03.24 02:56:48.884758 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 6, 0x10a154a98
2023.03.24 02:56:48.884779 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 7, 0x10a154c58
2023.03.24 02:56:48.884799 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 8, 0x10a154e18
2023.03.24 02:56:48.884847 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 9, 0x10a154fd8
2023.03.24 02:56:48.884867 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 10, 0x10a155198
2023.03.24 02:56:48.884885 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 11, 0x10a155358
2023.03.24 02:56:48.885017 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 12, 0x10a155518
2023.03.24 02:56:48.885062 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 13, 0x10a1556d8
2023.03.24 02:56:48.885088 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 14, 0x10a155898
2023.03.24 02:56:48.885125 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 15, 0x10a155a58
2023.03.24 02:56:48.885171 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102
2023.03.24 02:56:48.885201 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 0, 0x10a155c18
2023.03.24 02:56:48.885231 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 1, 0x10a155dd8
2023.03.24 02:56:48.885261 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 2, 0x10a155f98
2023.03.24 02:56:48.885290 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 3, 0x10a156158
2023.03.24 02:56:48.885461 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 4, 0x10a156318
2023.03.24 02:56:48.885499 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 5, 0x10a1564d8
2023.03.24 02:56:48.885519 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 6, 0x10a156698
2023.03.24 02:56:48.885538 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 7, 0x10a156858
2023.03.24 02:56:48.885557 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 8, 0x10a156a18
2023.03.24 02:56:48.885646 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 9, 0x10a156bd8
2023.03.24 02:56:48.885684 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 10, 0x10a156d98
2023.03.24 02:56:48.885714 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 11, 0x10a156f58
2023.03.24 02:56:48.885735 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 12, 0x10a157118
2023.03.24 02:56:48.885824 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 13, 0x10a1572d8
2023.03.24 02:56:48.885868 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 14, 0x10a157498
2023.03.24 02:56:48.885898 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 15, 0x10a157658
2023.03.24 02:56:48.885923 [ 2836175 ] {} <Information> NuRaftStateManager: raft cluster config :  <IP_ADDRESS>:8103 <IP_ADDRESS>:8103 <IP_ADDRESS>:8103
2023.03.24 02:56:48.885971 [ 2836175 ] {} <Information> FourLetterCommandFactory: Register four letter command ruok
2023.03.24 02:56:48.886006 [ 2836175 ] {} <Information> FourLetterCommandFactory: Register four letter command mntr
2023.03.24 02:56:48.886036 [ 2836175 ] {} <Information> FourLetterCommandFactory: Register four letter command conf
2023.03.24 02:56:48.886101 [ 2836175 ] {} <Information> FourLetterCommandFactory: Register four letter command cons
2023.03.24 02:56:48.886132 [ 2836175 ] {} <Information> FourLetterCommandFactory: Register four letter command wchs
2023.03.24 02:56:48.886171 [ 2836175 ] {} <Information> FourLetterCommandFactory: Register four letter command dirs
2023.03.24 02:56:48.886201 [ 2836175 ] {} <Information> FourLetterCommandFactory: Register four letter command dump
2023.03.24 02:56:48.886230 [ 2836175 ] {} <Information> FourLetterCommandFactory: Register four letter command envi
2023.03.24 02:56:48.886257 [ 2836175 ] {} <Information> FourLetterCommandFactory: Register four letter command isro
2023.03.24 02:56:48.886284 [ 2836175 ] {} <Information> FourLetterCommandFactory: Register four letter command crst
2023.03.24 02:56:48.886372 [ 2836175 ] {} <Information> FourLetterCommandFactory: Register four letter command srvr
2023.03.24 02:56:48.886405 [ 2836175 ] {} <Information> FourLetterCommandFactory: Register four letter command stat
2023.03.24 02:56:48.886431 [ 2836175 ] {} <Information> FourLetterCommandFactory: Register four letter command srst
2023.03.24 02:56:48.886455 [ 2836175 ] {} <Information> FourLetterCommandFactory: Register four letter command wchp
2023.03.24 02:56:48.886473 [ 2836175 ] {} <Information> FourLetterCommandFactory: Register four letter command wchc
2023.03.24 02:56:48.886492 [ 2836175 ] {} <Information> FourLetterCommandFactory: Register four letter command csnp
2023.03.24 02:56:48.886510 [ 2836175 ] {} <Information> FourLetterCommandFactory: Register four letter command lgif
2023.03.24 02:56:48.886528 [ 2836175 ] {} <Information> FourLetterCommandFactory: Register four letter command rqld
2023.03.24 02:56:48.887211 [ 2836175 ] {} <Information> Application: Listening for user connections on <IP_ADDRESS>:8101
2023.03.24 02:56:48.887800 [ 2836175 ] {} <Information> Application: Listening for forwarding connections on <IP_ADDRESS>:8102
2023.03.24 02:56:48.892659 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102
2023.03.24 02:56:48.892759 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 0, 0x10a154018
2023.03.24 02:56:48.892811 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 1, 0x10a1541d8
2023.03.24 02:56:48.892830 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 2, 0x10a154398
2023.03.24 02:56:48.892847 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 3, 0x10a154558
2023.03.24 02:56:48.892863 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 4, 0x10a154718
2023.03.24 02:56:48.892944 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 5, 0x10a1548d8
2023.03.24 02:56:48.892985 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 6, 0x10a154a98
2023.03.24 02:56:48.893008 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 7, 0x10a154c58
2023.03.24 02:56:48.893026 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 8, 0x10a154e18
2023.03.24 02:56:48.893043 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 9, 0x10a154fd8
2023.03.24 02:56:48.893350 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 10, 0x10a155198
2023.03.24 02:56:48.893389 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 11, 0x10a155358
2023.03.24 02:56:48.893407 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 12, 0x10a155518
2023.03.24 02:56:48.893425 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 13, 0x10a1556d8
2023.03.24 02:56:48.893478 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 14, 0x10a155898
2023.03.24 02:56:48.893495 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8102, thread 15, 0x10a155a58
2023.03.24 02:56:48.893526 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102
2023.03.24 02:56:48.893545 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 0, 0x10a155c18
2023.03.24 02:56:48.893561 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 1, 0x10a155dd8
2023.03.24 02:56:48.893577 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 2, 0x10a155f98
2023.03.24 02:56:48.893592 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 3, 0x10a156158
2023.03.24 02:56:48.893609 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 4, 0x10a156318
2023.03.24 02:56:48.893905 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 5, 0x10a1564d8
2023.03.24 02:56:48.893958 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 6, 0x10a156698
2023.03.24 02:56:48.893990 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 7, 0x10a156858
2023.03.24 02:56:48.894015 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 8, 0x10a156a18
2023.03.24 02:56:48.894045 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 9, 0x10a156bd8
2023.03.24 02:56:48.894180 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 10, 0x10a156d98
2023.03.24 02:56:48.894234 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 11, 0x10a156f58
2023.03.24 02:56:48.894264 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 12, 0x10a157118
2023.03.24 02:56:48.894284 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 13, 0x10a1572d8
2023.03.24 02:56:48.894475 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 14, 0x10a157498
2023.03.24 02:56:48.894520 [ 2836175 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8102, thread 15, 0x10a157658
2023.03.24 02:56:48.894542 [ 2836175 ] {} <Information> NuRaftStateManager: raft cluster config :  <IP_ADDRESS>:8103 <IP_ADDRESS>:8103 <IP_ADDRESS>:8103
2023.03.24 02:56:48.895306 [ 2836175 ] {} <Information> Application: RaftKeeper started!
2023.03.24 02:56:49.380312 [ 2836205 ] {} <Error> NuRaft: 2 nodes (out of 3, 3 including learners) are not responding longer than 10000 ms, at least 2 nodes (including leader) should be alive to proceed commit
2023.03.24 02:56:49.380554 [ 2836205 ] {} <Error> NuRaft: will yield the leadership of this node
2023.03.24 02:56:49.380652 [ 2836205 ] {} <Information> NuRaft: got immediate re-elect request, resign now
2023.03.24 02:56:49.380711 [ 2836205 ] {} <Information> NuRaft: [BECOME FOLLOWER] term 1
2023.03.24 02:57:02.777243 [ 2836209 ] {} <Warning> NuRaft: Election timeout, initiate leader election
2023.03.24 02:57:02.777575 [ 2836209 ] {} <Information> NuRaft: [PRIORITY] decay, target 1 -> 1, mine 1
2023.03.24 02:57:02.777650 [ 2836209 ] {} <Information> NuRaft: [ELECTION TIMEOUT] current role: follower, log last term 1, state term 1, target p 1, my p 1, hb dead, pre-vote done
2023.03.24 02:57:02.777751 [ 2836209 ] {} <Information> NuRaft: pre-vote term (0) is different, reset it to 1
2023.03.24 02:57:02.777945 [ 2836209 ] {} <Information> NuRaft: reset RPC client for peer 3
2023.03.24 02:57:02.778021 [ 2836209 ] {} <Information> NuRaft: reset RPC client for peer 2
2023.03.24 02:57:02.778086 [ 2836209 ] {} <Information> NuRaft: [PRE-VOTE INIT] my id 1, my role candidate, term 1, log idx 1, log term 1, priority (target 1 / mine 1)
2023.03.24 02:57:02.779086 [ 2836214 ] {} <Information> NuRaft: 0x10baf1198 connected to <IP_ADDRESS>:8103 (as a client)
2023.03.24 02:57:02.779289 [ 2836216 ] {} <Information> NuRaft: receive a incoming rpc connection
2023.03.24 02:57:02.779572 [ 2836215 ] {} <Information> NuRaft: 0x10baf1018 connected to <IP_ADDRESS>:8103 (as a client)
2023.03.24 02:57:02.779808 [ 2836216 ] {} <Information> NuRaft: session 3 got connection from <IP_ADDRESS>:56231 (as a server)
2023.03.24 02:57:02.780257 [ 2836216 ] {} <Information> NuRaft: receive a incoming rpc connection
2023.03.24 02:57:02.780443 [ 2836216 ] {} <Information> NuRaft: session 4 got connection from <IP_ADDRESS>:56232 (as a server)
2023.03.24 02:57:02.780538 [ 2836221 ] {} <Information> NuRaft: [PRE-VOTE REQ] my role candidate, from peer 1, log term: req 1 / mine 1
last idx: req 1 / mine 1, term: req 1 / mine 1
HB dead
2023.03.24 02:57:02.780838 [ 2836221 ] {} <Information> NuRaft: pre-vote decision: O (grant)
2023.03.24 02:57:02.781200 [ 2836227 ] {} <Information> NuRaft: [PRE-VOTE REQ] my role candidate, from peer 1, log term: req 1 / mine 1
last idx: req 1 / mine 1, term: req 1 / mine 1
HB dead
2023.03.24 02:57:02.781514 [ 2836227 ] {} <Information> NuRaft: pre-vote decision: O (grant)
2023.03.24 02:57:02.781712 [ 2836214 ] {} <Information> NuRaft: [PRE-VOTE RESP] peer 1 (O), term 1, resp term 1, my role candidate, dead 2, live 0, abandoned 0, num voting members 3, quorum 2
2023.03.24 02:57:02.781841 [ 2836214 ] {} <Information> NuRaft: [PRE-VOTE DONE] SUCCESS, term 1
2023.03.24 02:57:02.781892 [ 2836214 ] {} <Information> NuRaft: [PRE-VOTE DONE] initiate actual vote
2023.03.24 02:57:02.782531 [ 2836214 ] {} <Information> NuRaftStateManager: save srv_state with term 2 and vote_for 1
2023.03.24 02:57:02.782598 [ 2836214 ] {} <Information> NuRaft: [VOTE INIT] my id 1, my role candidate, term 2, log idx 1, log term 1, priority (target 1 / mine 1)
2023.03.24 02:57:02.782855 [ 2836230 ] {} <Information> NuRaft: [PRE-VOTE RESP] peer 1 (O), term 1, resp term 1, my role candidate, dead 3, live 0, abandoned 0, num voting members 3, quorum 2
2023.03.24 02:57:02.783007 [ 2836230 ] {} <Information> NuRaft: [PRE-VOTE DONE] SUCCESS, term 1
2023.03.24 02:57:02.783056 [ 2836230 ] {} <Information> NuRaft: [PRE-VOTE DONE] actual vote is already initiated, do nothing
2023.03.24 02:57:02.783182 [ 2836206 ] {} <Information> NuRaft: [VOTE REQ] my role candidate, from peer 1, log term: req 1 / mine 1
last idx: req 1 / mine 1, term: req 2 / mine 2
priority: target 1 / mine 1, voted_for 1
2023.03.24 02:57:02.783352 [ 2836206 ] {} <Information> NuRaft: decision: O (grant), voted_for 1, term 2
2023.03.24 02:57:02.784033 [ 2836206 ] {} <Information> NuRaftStateManager: save srv_state with term 2 and vote_for 1
2023.03.24 02:57:02.784347 [ 2836234 ] {} <Information> NuRaft: [VOTE REQ] my role candidate, from peer 1, log term: req 1 / mine 1
last idx: req 1 / mine 1, term: req 2 / mine 2
priority: target 1 / mine 1, voted_for 1
2023.03.24 02:57:02.784493 [ 2836234 ] {} <Information> NuRaft: decision: O (grant), voted_for 1, term 2
2023.03.24 02:57:02.785071 [ 2836234 ] {} <Information> NuRaftStateManager: save srv_state with term 2 and vote_for 1
2023.03.24 02:57:02.785358 [ 2836207 ] {} <Information> NuRaft: [VOTE RESP] peer 1 (O), resp term 2, my role candidate, granted 2, responded 2, num voting members 3, quorum 2
2023.03.24 02:57:02.785504 [ 2836207 ] {} <Information> NuRaft: Server is elected as leader for term 2
2023.03.24 02:57:02.785567 [ 2836207 ] {} <Information> NuRaft: number of pending commit elements: 0
2023.03.24 02:57:02.785609 [ 2836207 ] {} <Information> NuRaft: state machine commit index 0, precommit index 1, last log index 1
2023.03.24 02:57:02.785763 [ 2836207 ] {} <Information> NuRaft: found uncommitted config at 1, size 112
2023.03.24 02:57:02.785826 [ 2836207 ] {} <Information> NuRaft: [BECOME LEADER] appended new config at 2
2023.03.24 02:57:02.786372 [ 2836207 ] {} <Information> NuRaft:   === LEADER (term 2) ===
2023.03.24 02:57:02.786486 [ 2836207 ] {} <Warning> NuRaft: Receive AppendEntriesRequest from another leader (1) with same term, there must be a bug. Ignore it instead of exit.
2023.03.24 02:57:02.786585 [ 2836207 ] {} <Warning> NuRaft: no response is returned from raft message handler
2023.03.24 02:57:02.786668 [ 2836213 ] {} <Warning> NuRaft: Receive AppendEntriesRequest from another leader (1) with same term, there must be a bug. Ignore it instead of exit.
2023.03.24 02:57:02.786824 [ 2836229 ] {} <Information> NuRaft: Election completed, will ignore the voting result from this server
2023.03.24 02:57:02.786969 [ 2836213 ] {} <Warning> NuRaft: no response is returned from raft message handler
2023.03.24 02:57:02.787115 [ 2836217 ] {} <Warning> NuRaft: peer (3) response error: failed to read response to peer 3, <IP_ADDRESS>:8103, error 2, End of file
2023.03.24 02:57:02.787410 [ 2836222 ] {} <Warning> NuRaft: peer (2) response error: failed to read response to peer 2, <IP_ADDRESS>:8103, error 2, End of file
2023.03.24 02:57:03.287074 [ 2836219 ] {} <Error> NuRaft: 2 nodes (out of 3, 3 including learners) are not responding longer than 10000 ms, at least 2 nodes (including leader) should be alive to proceed commit
2023.03.24 02:57:03.287236 [ 2836219 ] {} <Error> NuRaft: will yield the leadership of this node
2023.03.24 02:57:03.287287 [ 2836219 ] {} <Information> NuRaft: got immediate re-elect request, resign now
2023.03.24 02:57:03.287318 [ 2836219 ] {} <Information> NuRaft: [BECOME FOLLOWER] term 2
2023.03.24 02:57:18.602044 [ 2836225 ] {} <Warning> NuRaft: Election timeout, initiate leader election
2023.03.24 02:57:18.602360 [ 2836225 ] {} <Information> NuRaft: [PRIORITY] decay, target 1 -> 1, mine 1
2023.03.24 02:57:18.602388 [ 2836225 ] {} <Information> NuRaft: [ELECTION TIMEOUT] current role: follower, log last term 2, state term 2, target p 1, my p 1, hb dead, pre-vote done
2023.03.24 02:57:18.602439 [ 2836225 ] {} <Information> NuRaft: pre-vote term (1) is different, reset it to 2
2023.03.24 02:57:18.602467 [ 2836225 ] {} <Information> NuRaft: reset RPC client for peer 3
2023.03.24 02:57:18.602491 [ 2836225 ] {} <Information> NuRaft: reset RPC client for peer 2
2023.03.24 02:57:18.602514 [ 2836225 ] {} <Information> NuRaft: [PRE-VOTE INIT] my id 1, my role candidate, term 2, log idx 2, log term 2, priority (target 1 / mine 1)
2023.03.24 02:57:18.603561 [ 2836221 ] {} <Information> NuRaft: 0x10d2a2018 connected to <IP_ADDRESS>:8103 (as a client)
2023.03.24 02:57:18.603720 [ 2836214 ] {} <Information> NuRaft: receive a incoming rpc connection
2023.03.24 02:57:18.603833 [ 2836228 ] {} <Information> NuRaft: 0x10d2a2198 connected to <IP_ADDRESS>:8103 (as a client)
2023.03.24 02:57:18.604073 [ 2836214 ] {} <Information> NuRaft: session 5 got connection from <IP_ADDRESS>:56269 (as a server)
2023.03.24 02:57:18.604259 [ 2836226 ] {} <Information> NuRaft: [PRE-VOTE REQ] my role candidate, from peer 1, log term: req 2 / mine 2
last idx: req 2 / mine 2, term: req 2 / mine 2
HB dead
2023.03.24 02:57:18.604393 [ 2836226 ] {} <Information> NuRaft: pre-vote decision: O (grant)
2023.03.24 02:57:18.604460 [ 2836214 ] {} <Information> NuRaft: receive a incoming rpc connection
2023.03.24 02:57:18.604554 [ 2836214 ] {} <Information> NuRaft: session 6 got connection from <IP_ADDRESS>:56270 (as a server)
2023.03.24 02:57:18.604663 [ 2836233 ] {} <Information> NuRaft: [PRE-VOTE RESP] peer 1 (O), term 2, resp term 2, my role candidate, dead 2, live 0, abandoned 0, num voting members 3, quorum 2
2023.03.24 02:57:18.604754 [ 2836233 ] {} <Information> NuRaft: [PRE-VOTE DONE] SUCCESS, term 2
2023.03.24 02:57:18.604784 [ 2836233 ] {} <Information> NuRaft: [PRE-VOTE DONE] initiate actual vote
2023.03.24 02:57:18.605431 [ 2836233 ] {} <Information> NuRaftStateManager: save srv_state with term 3 and vote_for 1
2023.03.24 02:57:18.605560 [ 2836233 ] {} <Information> NuRaft: [VOTE INIT] my id 1, my role candidate, term 3, log idx 2, log term 2, priority (target 1 / mine 1)
2023.03.24 02:57:18.605705 [ 2836233 ] {} <Warning> NuRaft: failed to send vote request: peer 2 (<IP_ADDRESS>:8103) is busy
2023.03.24 02:57:18.605869 [ 2836214 ] {} <Information> NuRaft: [PRE-VOTE REQ] my role candidate, from peer 1, log term: req 2 / mine 2
last idx: req 2 / mine 2, term: req 2 / mine 3
HB dead
2023.03.24 02:57:18.605950 [ 2836214 ] {} <Information> NuRaft: pre-vote decision: O (grant)
2023.03.24 02:57:18.606024 [ 2836206 ] {} <Information> NuRaft: [VOTE REQ] my role candidate, from peer 1, log term: req 2 / mine 2
last idx: req 2 / mine 2, term: req 3 / mine 3
priority: target 1 / mine 1, voted_for 1
2023.03.24 02:57:18.606085 [ 2836206 ] {} <Information> NuRaft: decision: O (grant), voted_for 1, term 3
2023.03.24 02:57:18.606459 [ 2836206 ] {} <Information> NuRaftStateManager: save srv_state with term 3 and vote_for 1
2023.03.24 02:57:18.606540 [ 2836205 ] {} <Information> NuRaft: [PRE-VOTE RESP] peer 1 (O), term 2, resp term 2, my role candidate, dead 3, live 0, abandoned 0, num voting members 3, quorum 2
2023.03.24 02:57:18.606600 [ 2836205 ] {} <Information> NuRaft: [PRE-VOTE DONE] SUCCESS, term 2
2023.03.24 02:57:18.606622 [ 2836205 ] {} <Information> NuRaft: [PRE-VOTE DONE] actual vote is already initiated, do nothing
2023.03.24 02:57:18.606759 [ 2836211 ] {} <Information> NuRaft: [VOTE RESP] peer 1 (O), resp term 3, my role candidate, granted 2, responded 2, num voting members 3, quorum 2
2023.03.24 02:57:18.606809 [ 2836211 ] {} <Information> NuRaft: Server is elected as leader for term 3
2023.03.24 02:57:18.606836 [ 2836211 ] {} <Information> NuRaft: number of pending commit elements: 0
2023.03.24 02:57:18.606857 [ 2836211 ] {} <Information> NuRaft: state machine commit index 0, precommit index 2, last log index 2
2023.03.24 02:57:18.606889 [ 2836211 ] {} <Information> NuRaft: found uncommitted config at 1, size 112
2023.03.24 02:57:18.606945 [ 2836211 ] {} <Information> NuRaft: found uncommitted config at 2, size 112
2023.03.24 02:57:18.607033 [ 2836211 ] {} <Information> NuRaft: [BECOME LEADER] appended new config at 3
2023.03.24 02:57:18.607445 [ 2836211 ] {} <Information> NuRaft:   === LEADER (term 3) ===
2023.03.24 02:57:18.607616 [ 2836207 ] {} <Warning> NuRaft: Receive AppendEntriesRequest from another leader (1) with same term, there must be a bug. Ignore it instead of exit.
2023.03.24 02:57:18.607679 [ 2836207 ] {} <Warning> NuRaft: no response is returned from raft message handler
2023.03.24 02:57:18.607728 [ 2836224 ] {} <Warning> NuRaft: Receive AppendEntriesRequest from another leader (1) with same term, there must be a bug. Ignore it instead of exit.
2023.03.24 02:57:18.607863 [ 2836224 ] {} <Warning> NuRaft: no response is returned from raft message handler
2023.03.24 02:57:18.608018 [ 2836213 ] {} <Warning> NuRaft: peer (2) response error: failed to read response to peer 2, <IP_ADDRESS>:8103, error 2, End of file
2023.03.24 02:57:18.608200 [ 2836215 ] {} <Warning> NuRaft: peer (3) response error: failed to read response to peer 3, <IP_ADDRESS>:8103, error 2, End of file
2023.03.24 02:57:19.108176 [ 2836225 ] {} <Error> NuRaft: 2 nodes (out of 3, 3 including learners) are not responding longer than 10000 ms, at least 2 nodes (including leader) should be alive to proceed commit
2023.03.24 02:57:19.108486 [ 2836225 ] {} <Error> NuRaft: will yield the leadership of this node
2023.03.24 02:57:19.108568 [ 2836225 ] {} <Information> NuRaft: got immediate re-elect request, resign now
2023.03.24 02:57:19.108620 [ 2836225 ] {} <Information> NuRaft: [BECOME FOLLOWER] term 3
2023.03.24 02:57:34.068779 [ 2836227 ] {} <Warning> NuRaft: Election timeout, initiate leader election
2023.03.24 02:57:34.069064 [ 2836227 ] {} <Information> NuRaft: [PRIORITY] decay, target 1 -> 1, mine 1
2023.03.24 02:57:34.069137 [ 2836227 ] {} <Information> NuRaft: [ELECTION TIMEOUT] current role: follower, log last term 3, state term 3, target p 1, my p 1, hb dead, pre-vote done
2023.03.24 02:57:34.069300 [ 2836227 ] {} <Information> NuRaft: pre-vote term (2) is different, reset it to 3
2023.03.24 02:57:34.069357 [ 2836227 ] {} <Information> NuRaft: reset RPC client for peer 3
2023.03.24 02:57:34.069411 [ 2836227 ] {} <Information> NuRaft: reset RPC client for peer 2
2023.03.24 02:57:34.069465 [ 2836227 ] {} <Information> NuRaft: [PRE-VOTE INIT] my id 1, my role candidate, term 3, log idx 3, log term 3, priority (target 1 / mine 1)
2023.03.24 02:57:34.070591 [ 2836220 ] {} <Information> NuRaft: 0x10f209198 connected to <IP_ADDRESS>:8103 (as a client)
2023.03.24 02:57:34.070789 [ 2836228 ] {} <Information> NuRaft: 0x10f209018 connected to <IP_ADDRESS>:8103 (as a client)
2023.03.24 02:57:34.070943 [ 2836230 ] {} <Information> NuRaft: receive a incoming rpc connection
2023.03.24 02:57:34.071057 [ 2836230 ] {} <Information> NuRaft: session 7 got connection from <IP_ADDRESS>:56309 (as a server)
2023.03.24 02:57:34.071271 [ 2836234 ] {} <Information> NuRaft: [PRE-VOTE REQ] my role candidate, from peer 1, log term: req 3 / mine 3
last idx: req 3 / mine 3, term: req 3 / mine 3
HB dead
2023.03.24 02:57:34.071452 [ 2836234 ] {} <Information> NuRaft: pre-vote decision: O (grant)
2023.03.24 02:57:34.071574 [ 2836230 ] {} <Information> NuRaft: receive a incoming rpc connection
2023.03.24 02:57:34.071738 [ 2836230 ] {} <Information> NuRaft: session 8 got connection from <IP_ADDRESS>:56310 (as a server)
2023.03.24 02:57:34.071829 [ 2836226 ] {} <Information> NuRaft: [PRE-VOTE RESP] peer 1 (O), term 3, resp term 3, my role candidate, dead 2, live 0, abandoned 0, num voting members 3, quorum 2
2023.03.24 02:57:34.071968 [ 2836226 ] {} <Information> NuRaft: [PRE-VOTE DONE] SUCCESS, term 3
2023.03.24 02:57:34.072015 [ 2836226 ] {} <Information> NuRaft: [PRE-VOTE DONE] initiate actual vote
2023.03.24 02:57:34.073311 [ 2836226 ] {} <Information> NuRaftStateManager: save srv_state with term 4 and vote_for 1
2023.03.24 02:57:34.073424 [ 2836226 ] {} <Information> NuRaft: [VOTE INIT] my id 1, my role candidate, term 4, log idx 3, log term 3, priority (target 1 / mine 1)
2023.03.24 02:57:34.073463 [ 2836226 ] {} <Warning> NuRaft: failed to send vote request: peer 3 (<IP_ADDRESS>:8103) is busy
2023.03.24 02:57:34.073671 [ 2836209 ] {} <Information> NuRaft: [PRE-VOTE REQ] my role candidate, from peer 1, log term: req 3 / mine 3
last idx: req 3 / mine 3, term: req 3 / mine 4
HB dead
2023.03.24 02:57:34.073801 [ 2836209 ] {} <Information> NuRaft: pre-vote decision: O (grant)
2023.03.24 02:57:34.073890 [ 2836214 ] {} <Information> NuRaft: [VOTE REQ] my role candidate, from peer 1, log term: req 3 / mine 3
last idx: req 3 / mine 3, term: req 4 / mine 4
priority: target 1 / mine 1, voted_for 1
2023.03.24 02:57:34.073970 [ 2836214 ] {} <Information> NuRaft: decision: O (grant), voted_for 1, term 4
2023.03.24 02:57:34.074643 [ 2836214 ] {} <Information> NuRaftStateManager: save srv_state with term 4 and vote_for 1
2023.03.24 02:57:34.074800 [ 2836206 ] {} <Information> NuRaft: [PRE-VOTE RESP] peer 1 (O), term 3, resp term 3, my role candidate, dead 3, live 0, abandoned 0, num voting members 3, quorum 2
2023.03.24 02:57:34.074908 [ 2836206 ] {} <Information> NuRaft: [PRE-VOTE DONE] SUCCESS, term 3
2023.03.24 02:57:34.074956 [ 2836206 ] {} <Information> NuRaft: [PRE-VOTE DONE] actual vote is already initiated, do nothing
2023.03.24 02:57:34.075027 [ 2836229 ] {} <Information> NuRaft: [VOTE RESP] peer 1 (O), resp term 4, my role candidate, granted 2, responded 2, num voting members 3, quorum 2
2023.03.24 02:57:34.075118 [ 2836229 ] {} <Information> NuRaft: Server is elected as leader for term 4
2023.03.24 02:57:34.075182 [ 2836229 ] {} <Information> NuRaft: number of pending commit elements: 0
2023.03.24 02:57:34.075268 [ 2836229 ] {} <Information> NuRaft: state machine commit index 0, precommit index 3, last log index 3
2023.03.24 02:57:34.075344 [ 2836229 ] {} <Information> NuRaft: found uncommitted config at 1, size 112
2023.03.24 02:57:34.075395 [ 2836229 ] {} <Information> NuRaft: found uncommitted config at 2, size 112
2023.03.24 02:57:34.075498 [ 2836229 ] {} <Information> NuRaft: found uncommitted config at 3, size 112
2023.03.24 02:57:34.075545 [ 2836229 ] {} <Information> NuRaft: [BECOME LEADER] appended new config at 4
2023.03.24 02:57:34.076051 [ 2836229 ] {} <Information> NuRaft:   === LEADER (term 4) ===
2023.03.24 02:57:34.076222 [ 2836222 ] {} <Warning> NuRaft: Receive AppendEntriesRequest from another leader (1) with same term, there must be a bug. Ignore it instead of exit.
2023.03.24 02:57:34.076338 [ 2836222 ] {} <Warning> NuRaft: no response is returned from raft message handler
2023.03.24 02:57:34.076400 [ 2836215 ] {} <Warning> NuRaft: Receive AppendEntriesRequest from another leader (1) with same term, there must be a bug. Ignore it instead of exit.
2023.03.24 02:57:34.076535 [ 2836215 ] {} <Warning> NuRaft: no response is returned from raft message handler
2023.03.24 02:57:34.076692 [ 2836213 ] {} <Warning> NuRaft: peer (2) response error: failed to read response to peer 2, <IP_ADDRESS>:8103, error 2, End of file
2023.03.24 02:57:34.076884 [ 2836227 ] {} <Warning> NuRaft: peer (3) response error: failed to read response to peer 3, <IP_ADDRESS>:8103, error 2, End of file
2023.03.24 02:57:34.576686 [ 2836232 ] {} <Error> NuRaft: 2 nodes (out of 3, 3 including learners) are not responding longer than 10000 ms, at least 2 nodes (including leader) should be alive to proceed commit
2023.03.24 02:57:34.577036 [ 2836232 ] {} <Error> NuRaft: will yield the leadership of this node
2023.03.24 02:57:34.577131 [ 2836232 ] {} <Information> NuRaft: got immediate re-elect request, resign now
2023.03.24 02:57:34.577189 [ 2836232 ] {} <Information> NuRaft: [BECOME FOLLOWER] term 4
2023.03.24 02:57:52.469107 [ 2836221 ] {} <Warning> NuRaft: Election timeout, initiate leader election
2023.03.24 02:57:52.469208 [ 2836221 ] {} <Information> NuRaft: [PRIORITY] decay, target 1 -> 1, mine 1
2023.03.24 02:57:52.469235 [ 2836221 ] {} <Information> NuRaft: [ELECTION TIMEOUT] current role: follower, log last term 4, state term 4, target p 1, my p 1, hb dead, pre-vote done
2023.03.24 02:57:52.469278 [ 2836221 ] {} <Information> NuRaft: pre-vote term (3) is different, reset it to 4
2023.03.24 02:57:52.469300 [ 2836221 ] {} <Information> NuRaft: reset RPC client for peer 3
2023.03.24 02:57:52.469324 [ 2836221 ] {} <Information> NuRaft: reset RPC client for peer 2
2023.03.24 02:57:52.471454 [ 2836221 ] {} <Information> NuRaft: [PRE-VOTE INIT] my id 1, my role candidate, term 4, log idx 4, log term 4, priority (target 1 / mine 1)
2023.03.24 02:57:52.472534 [ 2836220 ] {} <Information> NuRaft: 0x10f1d8018 connected to <IP_ADDRESS>:8103 (as a client)
2023.03.24 02:57:52.472651 [ 2836234 ] {} <Information> NuRaft: receive a incoming rpc connection
2023.03.24 02:57:52.472743 [ 2836218 ] {} <Information> NuRaft: 0x10f1d8198 connected to <IP_ADDRESS>:8103 (as a client)
2023.03.24 02:57:52.472861 [ 2836234 ] {} <Information> NuRaft: session 9 got connection from <IP_ADDRESS>:56356 (as a server)
2023.03.24 02:57:52.472972 [ 2836234 ] {} <Information> NuRaft: receive a incoming rpc connection
2023.03.24 02:57:52.473016 [ 2836234 ] {} <Information> NuRaft: session 10 got connection from <IP_ADDRESS>:56357 (as a server)
2023.03.24 02:57:52.473103 [ 2836233 ] {} <Information> NuRaft: [PRE-VOTE REQ] my role candidate, from peer 1, log term: req 4 / mine 4
last idx: req 4 / mine 4, term: req 4 / mine 4
HB dead
2023.03.24 02:57:52.473183 [ 2836233 ] {} <Information> NuRaft: pre-vote decision: O (grant)
2023.03.24 02:57:52.473274 [ 2836234 ] {} <Information> NuRaft: [PRE-VOTE REQ] my role candidate, from peer 1, log term: req 4 / mine 4
last idx: req 4 / mine 4, term: req 4 / mine 4
HB dead
2023.03.24 02:57:52.473313 [ 2836234 ] {} <Information> NuRaft: pre-vote decision: O (grant)
2023.03.24 02:57:52.473386 [ 2836210 ] {} <Information> NuRaft: [PRE-VOTE RESP] peer 1 (O), term 4, resp term 4, my role candidate, dead 2, live 0, abandoned 0, num voting members 3, quorum 2
2023.03.24 02:57:52.473433 [ 2836210 ] {} <Information> NuRaft: [PRE-VOTE DONE] SUCCESS, term 4
2023.03.24 02:57:52.473478 [ 2836210 ] {} <Information> NuRaft: [PRE-VOTE DONE] initiate actual vote
2023.03.24 02:57:52.473952 [ 2836210 ] {} <Information> NuRaftStateManager: save srv_state with term 5 and vote_for 1
2023.03.24 02:57:52.474018 [ 2836210 ] {} <Information> NuRaft: [VOTE INIT] my id 1, my role candidate, term 5, log idx 4, log term 4, priority (target 1 / mine 1)
2023.03.24 02:57:52.474228 [ 2836212 ] {} <Information> NuRaft: [PRE-VOTE RESP] peer 1 (O), term 4, resp term 4, my role candidate, dead 3, live 0, abandoned 0, num voting members 3, quorum 2
2023.03.24 02:57:52.474323 [ 2836212 ] {} <Information> NuRaft: [PRE-VOTE DONE] SUCCESS, term 4
2023.03.24 02:57:52.474350 [ 2836212 ] {} <Information> NuRaft: [PRE-VOTE DONE] actual vote is already initiated, do nothing
2023.03.24 02:57:52.475191 [ 2836214 ] {} <Information> NuRaft: [VOTE REQ] my role candidate, from peer 1, log term: req 4 / mine 4
last idx: req 4 / mine 4, term: req 5 / mine 5
priority: target 1 / mine 1, voted_for 1
2023.03.24 02:57:52.475247 [ 2836214 ] {} <Information> NuRaft: decision: O (grant), voted_for 1, term 5
2023.03.24 02:57:52.475506 [ 2836214 ] {} <Information> NuRaftStateManager: save srv_state with term 5 and vote_for 1
2023.03.24 02:57:52.475615 [ 2836219 ] {} <Information> NuRaft: [VOTE REQ] my role candidate, from peer 1, log term: req 4 / mine 4
last idx: req 4 / mine 4, term: req 5 / mine 5
priority: target 1 / mine 1, voted_for 1
2023.03.24 02:57:52.475720 [ 2836219 ] {} <Information> NuRaft: decision: O (grant), voted_for 1, term 5
2023.03.24 02:57:52.476071 [ 2836219 ] {} <Information> NuRaftStateManager: save srv_state with term 5 and vote_for 1
2023.03.24 02:57:52.476170 [ 2836207 ] {} <Information> NuRaft: [VOTE RESP] peer 1 (O), resp term 5, my role candidate, granted 2, responded 2, num voting members 3, quorum 2
2023.03.24 02:57:52.476222 [ 2836207 ] {} <Information> NuRaft: Server is elected as leader for term 5
2023.03.24 02:57:52.476248 [ 2836207 ] {} <Information> NuRaft: number of pending commit elements: 0
2023.03.24 02:57:52.476265 [ 2836207 ] {} <Information> NuRaft: state machine commit index 0, precommit index 4, last log index 4
2023.03.24 02:57:52.476292 [ 2836207 ] {} <Information> NuRaft: found uncommitted config at 1, size 112
2023.03.24 02:57:52.476313 [ 2836207 ] {} <Information> NuRaft: found uncommitted config at 2, size 112
2023.03.24 02:57:52.476333 [ 2836207 ] {} <Information> NuRaft: found uncommitted config at 3, size 112
2023.03.24 02:57:52.476349 [ 2836207 ] {} <Information> NuRaft: found uncommitted config at 4, size 112
2023.03.24 02:57:52.476371 [ 2836207 ] {} <Information> NuRaft: [BECOME LEADER] appended new config at 5
2023.03.24 02:57:52.476837 [ 2836207 ] {} <Information> NuRaft:   === LEADER (term 5) ===
2023.03.24 02:57:52.476916 [ 2836225 ] {} <Information> NuRaft: Election completed, will ignore the voting result from this server
2023.03.24 02:57:52.477027 [ 2836221 ] {} <Warning> NuRaft: Receive AppendEntriesRequest from another leader (1) with same term, there must be a bug. Ignore it instead of exit.
2023.03.24 02:57:52.477091 [ 2836221 ] {} <Warning> NuRaft: no response is returned from raft message handler
2023.03.24 02:57:52.477162 [ 2836208 ] {} <Warning> NuRaft: Receive AppendEntriesRequest from another leader (1) with same term, there must be a bug. Ignore it instead of exit.
2023.03.24 02:57:52.477244 [ 2836208 ] {} <Warning> NuRaft: no response is returned from raft message handler
2023.03.24 02:57:52.477327 [ 2836207 ] {} <Warning> NuRaft: peer (3) response error: failed to read response to peer 3, <IP_ADDRESS>:8103, error 2, End of file
2023.03.24 02:57:52.477533 [ 2836204 ] {} <Warning> NuRaft: peer (2) response error: failed to read response to peer 2, <IP_ADDRESS>:8103, error 2, End of file
2023.03.24 02:57:52.977313 [ 2836230 ] {} <Error> NuRaft: 2 nodes (out of 3, 3 including learners) are not responding longer than 10000 ms, at least 2 nodes (including leader) should be alive to proceed commit
2023.03.24 02:57:52.977531 [ 2836230 ] {} <Error> NuRaft: will yield the leadership of this node
2023.03.24 02:57:52.977837 [ 2836230 ] {} <Information> NuRaft: got immediate re-elect request, resign now
2023.03.24 02:57:52.977884 [ 2836230 ] {} <Information> NuRaft: [BECOME FOLLOWER] term 5
2023.03.24 02:58:06.312654 [ 2836220 ] {} <Warning> NuRaft: Election timeout, initiate leader election
2023.03.24 02:58:06.312941 [ 2836220 ] {} <Information> NuRaft: [PRIORITY] decay, target 1 -> 1, mine 1
2023.03.24 02:58:06.313020 [ 2836220 ] {} <Information> NuRaft: [ELECTION TIMEOUT] current role: follower, log last term 5, state term 5, target p 1, my p 1, hb dead, pre-vote done
2023.03.24 02:58:06.313147 [ 2836220 ] {} <Information> NuRaft: pre-vote term (4) is different, reset it to 5
2023.03.24 02:58:06.313226 [ 2836220 ] {} <Information> NuRaft: reset RPC client for peer 3
2023.03.24 02:58:06.313320 [ 2836220 ] {} <Information> NuRaft: reset RPC client for peer 2
2023.03.24 02:58:06.313395 [ 2836220 ] {} <Information> NuRaft: [PRE-VOTE INIT] my id 1, my role candidate, term 5, log idx 5, log term 5, priority (target 1 / mine 1)
2023.03.24 02:58:06.314632 [ 2836223 ] {} <Information> NuRaft: 0x10d2e4198 connected to <IP_ADDRESS>:8103 (as a client)
2023.03.24 02:58:06.314985 [ 2836234 ] {} <Information> NuRaft: 0x10d2e4018 connected to <IP_ADDRESS>:8103 (as a client)
2023.03.24 02:58:06.315265 [ 2836217 ] {} <Information> NuRaft: receive a incoming rpc connection
2023.03.24 02:58:06.315467 [ 2836217 ] {} <Information> NuRaft: session 11 got connection from <IP_ADDRESS>:56393 (as a server)
2023.03.24 02:58:06.315673 [ 2836210 ] {} <Information> NuRaft: receive a incoming rpc connection
2023.03.24 02:58:06.315983 [ 2836217 ] {} <Information> NuRaft: [PRE-VOTE REQ] my role candidate, from peer 1, log term: req 5 / mine 5
last idx: req 5 / mine 5, term: req 5 / mine 5
HB dead
2023.03.24 02:58:06.316239 [ 2836217 ] {} <Information> NuRaft: pre-vote decision: O (grant)
2023.03.24 02:58:06.316621 [ 2836210 ] {} <Information> NuRaft: session 12 got connection from <IP_ADDRESS>:56394 (as a server)
2023.03.24 02:58:06.316810 [ 2836211 ] {} <Information> NuRaft: [PRE-VOTE RESP] peer 1 (O), term 5, resp term 5, my role candidate, dead 2, live 0, abandoned 0, num voting members 3, quorum 2
2023.03.24 02:58:06.316953 [ 2836211 ] {} <Information> NuRaft: [PRE-VOTE DONE] SUCCESS, term 5
2023.03.24 02:58:06.317018 [ 2836211 ] {} <Information> NuRaft: [PRE-VOTE DONE] initiate actual vote
2023.03.24 02:58:06.317835 [ 2836211 ] {} <Information> NuRaftStateManager: save srv_state with term 6 and vote_for 1
2023.03.24 02:58:06.317921 [ 2836211 ] {} <Information> NuRaft: [VOTE INIT] my id 1, my role candidate, term 6, log idx 5, log term 5, priority (target 1 / mine 1)
2023.03.24 02:58:06.317962 [ 2836211 ] {} <Warning> NuRaft: failed to send vote request: peer 3 (<IP_ADDRESS>:8103) is busy
2023.03.24 02:58:06.318314 [ 2836231 ] {} <Information> NuRaft: [PRE-VOTE REQ] my role candidate, from peer 1, log term: req 5 / mine 5
last idx: req 5 / mine 5, term: req 5 / mine 6
HB dead
2023.03.24 02:58:06.318465 [ 2836231 ] {} <Information> NuRaft: pre-vote decision: O (grant)
2023.03.24 02:58:06.318569 [ 2836229 ] {} <Information> NuRaft: [VOTE REQ] my role candidate, from peer 1, log term: req 5 / mine 5
last idx: req 5 / mine 5, term: req 6 / mine 6
priority: target 1 / mine 1, voted_for 1
2
...

It seems that the Raft cluster has failed to maintain heartbeats, resulting in re-elections.
Has this situation occurred before? If it is confirmed to be a reproducible situation, I am willing to participate in resolving it.

Looks like it's due to 3 nodes using the same internal_port. If you deploy three instances on one node, you need to use different port, forwarding_port, internal_port.
And use a configuration similar to the following in :
        <cluster>
            <server>
                <id>1</id>
                <host><IP_ADDRESS></host>
                <internal_port>8103</internal_port>
                <forwarding_port>8102</forwarding_port>
            </server>
            <server>
                <id>2</id>
                <host><IP_ADDRESS></host>
                <internal_port>8113</internal_port>
                <forwarding_port>8112</forwarding_port>
            </server>
            <server>
                <id>3</id>
                <host><IP_ADDRESS></host>
                <internal_port>8123</internal_port>
                <forwarding_port>8122</forwarding_port>
            </server>
        </cluster>

After modifying the configuration file and restart RaftKeeper, there is an issue of port occupation. I have tried multiple times, but this issue persists. Here's the logs:
2023.03.24 16:49:21.874536 [ 3504177 ] {} <Information> : Starting RaftKeeper v2.0.1, no build id, PID 82889
2023.03.24 16:49:21.981454 [ 3504177 ] {} <Information> LogSegmentStore: Create LogSegmentStore ./data/log.
2023.03.24 16:49:21.981580 [ 3504177 ] {} <Information> LogSegmentStore: Begin init log segment store, max log size<PHONE_NUMBER> bytes, max segment count 50.
2023.03.24 16:49:21.981848 [ 3504177 ] {} <Information> LogSegmentStore: List log dir ./data/log, file name log_1_open_20230324164356
2023.03.24 16:49:21.981911 [ 3504177 ] {} <Information> LogSegmentStore: Restore open segment, directory ./data/log, first index 1, file name log_1_open_20230324164356
2023.03.24 16:49:21.981947 [ 3504177 ] {} <Information> LogSegmentStore: Create open segment, directory ./data/log, first index 1, file name log_1_open_20230324164356
2023.03.24 16:49:21.982909 [ 3504177 ] {} <Information> LogSegmentStore: Load open segment, directory ./data/log, file name log_1_open_20230324164356
2023.03.24 16:49:21.983167 [ 3504177 ] {} <Information> LogSegment: Open segment for read/write, path ./data/log/log_1_open_20230324164356
2023.03.24 16:49:21.983825 [ 3504177 ] {} <Information> LogSegment: Magic num is<PHONE_NUMBER>139031552, version 1
2023.03.24 16:49:21.983902 [ 3504177 ] {} <Information> LogSegment: Open segment last_index 0.
2023.03.24 16:49:21.983930 [ 3504177 ] {} <Warning> LogSegmentStore: open segment need discard, file log_1_open_20230324164356, first_log_index 1, first_index 1, last_index 0
2023.03.24 16:49:21.984480 [ 3504177 ] {} <Information> LogSegment: Created new segment ./data/log/log_1_open_20230324164921, seg_fd 8, first index 1
2023.03.24 16:49:21.984605 [ 3504177 ] {} <Information> FileLogStore: Init file log store, last log index 0, log dir ./data/log
2023.03.24 16:49:21.984722 [ 3504177 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 2, <IP_ADDRESS>:8112
...
...
2023.03.24 16:49:21.985412 [ 3504177 ] {} <Information> NuRaftStateManager: Create ForwardingConnection for 3, <IP_ADDRESS>:8122, thread 15, 0x101b9d658
2023.03.24 16:49:21.985429 [ 3504177 ] {} <Information> NuRaftStateManager: raft cluster config :  <IP_ADDRESS>:8103 <IP_ADDRESS>:8113 <IP_ADDRESS>:8123
2023.03.24 16:49:21.985518 [ 3504177 ] {} <Information> KeeperStateMachine: begin init state machine, snapshot directory ./data/snapshot
2023.03.24 16:49:21.985654 [ 3504177 ] {} <Information> RaftTaskManager: Open task for task, fd 9, path ./data/snapshot/committed.task
2023.03.24 16:49:21.985702 [ 3504177 ] {} <Warning> RaftTaskManager: Read last committed index failed -1
2023.03.24 16:49:21.985834 [ 3504197 ] {} <Information> RaftTaskManager: try schedule, shut down false
2023.03.24 16:49:21.985947 [ 3504177 ] {} <Information> KeeperSnapshotManager: Skip no snapshot file committed.task
2023.03.24 16:49:21.986006 [ 3504177 ] {} <Information> KeeperSnapshotManager: Load snapshot metas 0 from snapshot directory ./data/snapshot
2023.03.24 16:49:21.986026 [ 3504177 ] {} <Information> KeeperSnapshotManager: Get last snapshot, snapshot size 0
2023.03.24 16:49:21.986043 [ 3504177 ] {} <Information> KeeperStateMachine: Load snapshot meta size 0, last log index 0 in snapshot
2023.03.24 16:49:21.986065 [ 3504177 ] {} <Information> KeeperStateMachine: Begin replay log, first log index 1 and last log index 0 in log file ( prev index 0, log index 0 )
2023.03.24 16:49:21.986169 [ 3504177 ] {} <Information> KeeperStateMachine: Apply log done, ephemeral sessions 0 nodes 0
2023.03.24 16:49:21.986284 [ 3504177 ] {} <Information> KeeperStateMachine: Replay last committed index 0 in log store
2023.03.24 16:49:21.986305 [ 3504177 ] {} <Information> KeeperStateMachine: Starting background creating snapshot thread.
2023.03.24 16:49:21.987930 [ 3504177 ] {} <Error> NuRaft: got exception: bind: Address already in use
2023.03.24 16:49:21.988127 [ 3504177 ] {} <Error> void RK::KeeperDispatcher::initialize(const Poco::Util::AbstractConfiguration &): Code: 37, e.displayText() = RK::Exception: Cannot allocate RAFT instance, Stack trace (when copying this message, always include the lines below):

<Empty trace>
 (version v2.0.1)
2023.03.24 16:49:21.988229 [ 3504177 ] {} <Error> Application: RK::Exception: Cannot allocate RAFT instance
2023.03.24 16:49:21.988262 [ 3504177 ] {} <Information> Application: Shutting down RaftKeeper.
2023.03.24 16:49:21.988358 [ 3504186 ] {} <Information> BaseDaemon: Stop SignalListener thread

I have also tried modifying the port numbers for each node, but the same error still occurs. What might be the possible reasons for this issue?

How can I deploy a 3-node RaftKeeper cluster on a single machine? After setting different ports for the nodes, I tried to modify the my_id field in config.xml and start 3 instances of RaftKeeper in 3 different folders, but encountered port conflict issues. Before starting the three instances, I used pgrep and kill to terminate all the previous RaftKeeper instances, making sure the availability of the ports to be used in the 3 instance.

You can use:
./raftkeeper server --config-file ./config1.xml
./raftkeeper server --config-file ./config2.xml
./raftkeeper server --config-file ./config3.xml

Different port internal_port forwarding_port and my_id are specified in config1.xml, config2.xml, and config3.xml.

After configuring three different config.xml files, I successfully started the service in cluster mode. There are two issues keeps me from successfully starting the RaftKeeper service.

I did not modify the parameters for keeper in the config.xml file to correspond with the cluster configuration, causing RaftKeeper to start all services on default ports, resulting in port conflicts.

Starting the service in the RaftKeeper/ directory with ./lib/raftkeeper server --config=conf/config.xml caused a null pointer exception in BaseDeamon. I was unable to generate a coredump file on my Mac to accurately locate the issue or provide relevant logs. However, starting the service with ./raftkeeper server --config=conf/config.xml in the RaftKeeper/lib/ directory allows the service to start successfully.

My three config.xml files are as follows (For those who may run into the same problems):
config1.xml:

<?xml version="1.0"?>
<raftkeeper>
    <logger>
        <!-- Logger file path, default is empty string. If is empty string will not log to file -->
        <path>./log/raftkeeper.log</path>
        <!-- Error logger file path, default is empty string. If is empty string will not log to file -->
        <err_log_path>./log/raftkeeper.err.log</err_log_path>
    </logger>

    <keeper>
        <!-- My id in cluster. -->
        <my_id>𝟏</my_id>

        <!-- Bing(d, maybe it's a typo)ing host, default is "<IP_ADDRESS>." -->
        <host><IP_ADDRESS></host>

        <!-- Port for user request and 4lw command -->
        <port>**8101**</port>

        <!-- Port for follower forward write request and session info to leader. -->
        <forwarding_port>**8102**</forwarding_port>

        <!-- Port for Raft internal usage: heartbeat, log replicate, leader selection etc. -->
         <internal_port>**8103**</internal_port>

        <!-- Raft log store directory -->
        <log_dir>./data/log</log_dir>

        <!-- Raft snapshot store directory -->
        <snapshot_dir>./data/snapshot</snapshot_dir>

        <!-- If you want a RaftKeeper cluster, you can uncomment this and configure it carefully -->
        <cluster>
            <server>
                <id>1</id>
                <host><IP_ADDRESS></host>
                <forwarding_port>8102</forwarding_port>
                <internal_port>8103</internal_port>
                <!-- `true` if this node is learner. Learner will not initiate or participate in leader election. -->
                <!-- <learner>false</learner> -->
                <!-- Priority of this server, default is 1 and if is 0 the server will never be leader. -->
                <!-- <priority>1</priority> -->
            </server>
            <server>
                <id>2</id>
                <host><IP_ADDRESS></host>
                <forwarding_port>8112</forwarding_port>
                <internal_port>8113</internal_port>
            </server>
            <server>
                <id>3</id>
                <host><IP_ADDRESS></host>
                <forwarding_port>8122</forwarding_port>
                <internal_port>8123</internal_port>
            </server>
        </cluster>
    </keeper>
</raftkeeper>

----------------------------------------------------------
config2.xml

<?xml version="1.0"?>
<raftkeeper>
    <logger>
        <!-- Logger file path, default is empty string. If is empty string will not log to file -->
        <path>./log/raftkeeper.log</path>
        <!-- Error logger file path, default is empty string. If is empty string will not log to file -->
        <err_log_path>./log/raftkeeper.err.log</err_log_path>
    </logger>

    <keeper>
        <!-- My id in cluster. -->
        <my_id>2</my_id>

        <!-- Bing**(d)**ing host, default is "<IP_ADDRESS>." -->
        <host><IP_ADDRESS></host>

        <!-- Port for user request and 4lw command -->
        <port>**8111**</port>

        <!-- Port for follower forward write request and session info to leader. -->
        <forwarding_port>**8112**</forwarding_port>

        <!-- Port for Raft internal usage: heartbeat, log replicate, leader selection etc. -->
         <internal_port>8113</internal_port>

        <!-- Raft log store directory -->
        <log_dir>./data/log</log_dir>

        <!-- Raft snapshot store directory -->
        <snapshot_dir>./data/snapshot</snapshot_dir>

        <!-- If you want a RaftKeeper cluster, you can uncomment this and configure it carefully -->
        <cluster>
           same as cluster in config1.xml
        </cluster>
    </keeper>
</raftkeeper>

----------------------------------------------------------
config3.xml

<?xml version="1.0"?>
<raftkeeper>
    <logger>
        <!-- Logger file path, default is empty string. If is empty string will not log to file -->
        <path>./log/raftkeeper.log</path>
        <!-- Error logger file path, default is empty string. If is empty string will not log to file -->
        <err_log_path>./log/raftkeeper.err.log</err_log_path>
    </logger>

    <keeper>
        <!-- My id in cluster. -->
        <my_id>3</my_id>

        <!-- Binging host, default is "<IP_ADDRESS>." -->
        <host><IP_ADDRESS></host>

        <!-- Port for user request and 4lw command -->
        <port>8121</port>

        <!-- Port for follower forward write request and session info to leader. -->
        <forwarding_port>8122</forwarding_port>

        <!-- Port for Raft internal usage: heartbeat, log replicate, leader selection etc. -->
         <internal_port>8123</internal_port>

        <!-- Raft log store directory -->
        <log_dir>./data/log</log_dir>

        <!-- Raft snapshot store directory -->
        <snapshot_dir>./data/snapshot</snapshot_dir>

        <!-- If you want a RaftKeeper cluster, you can uncomment this and configure it carefully -->
        <cluster>
           same as cluster in config1.xml
        </cluster>
    </keeper>
</raftkeeper>

@Hooollin Thanks for your recording.

You run 3 nodes in one server, you should use separated log dir and data dir. I edit the config.xml in your last post.
If you run intto NPE too with the correct configuration, please create a new issue for the bug.

It works fine now. I believe the NPE is due to the same data/ directory I used in these 3 nodes.
Thanks a lot!

RaftKeeper is new in github. We appreciate any contributions for docs and code and we have some easy tasks for beginners, if you are interesting see #22 .


GitHub Themes

Describe the solution you'd like
Would it be possible to add GitHub themes to selection. One of the example of color schemes can be found here https://github.com/projekt0n/github-nvim-theme/tree/main/extras/alacritty.

hey @puppeteer701, yes we are open to accepting new themes, I thought we already have the GitHub themes but not.
your Pull Request is always welcome, thanks!

Hello @puppeteer701 we added GitHub color schemes here #78

:tada: This issue has been resolved in version 4.2.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Update overview.mdx for CLI overview

For now, mostly just fixing a capitalization issue (first letter of a sentence not capitalized) and a broken link to the generators page.
Seems like this page could use further revision though. The section on generator schema seems out of place here and I would think it makes more sense on the generators page, or the fern generate page. The section on compilers could maybe go, too. The information on fern login seems germane (and could be expanded upon), and perhaps a link to the fern help page could be added along with note about ability to use --help flag for each command; also perhaps a section on logging.

Forgot to mention that I changed:

Here are some examples of what the Fern compiler can output:
. . .
An OpenAPI Specification

to

An OpenAPI Description

Reason: According to The OpenAPI Initiative, the OpenAPI Specification (OAS) is the actual specification itself, whereas documents using specification to describe APIs are called OpenAPI Descriptions (OAD).
Source: https://learn.openapis.org/introduction.html and https://learn.openapis.org/specification/structure.html

Sounds like OpenAPI Description is the term deemed by the OpenAPI Initiative to be accurate. However Stripe https://github.com/stripe/openapi calls it their Description an OpenAPI Spec and so does Twilio https://github.com/twilio/twilio-oai

I looked into this further. First, I looked at what other major companies use. There's a wide range of terms in use including "OpenAPI document", "OpenAPI spec", "OAS document", "OAS file", "OpenAPI file", "API defined in OAS 3", "OAS definition", "OpenAPI definition", and so on.
I noticed that even the official spec at openapis.org uses the term "OpenAPI Document" instead of the "OpenAPI Description" term used in learn.openapis.org. I descended a rabbit hole that led me to a PR and a long Oct '23 discussion in the open-api Slack. That discussion ended with the OAI Technical Steering Committee agreeing on "OpenAPI Description (OAD)".
Other contenders in the discussion were "OpenAPI Document" and "OpenAPI Definition", but using "OpenAPI Specification" or "OpenAPI spec" to refer to a file that conforms to the spec seems to be universally considered incorrect by the OAI. GitHub is an example of an org that uses the OAI-preferred terminology. I would recommend regarding the OAI as the source of truth and going forward with "OpenAPI Description" and "OAD", or "OpenAPI Document" (which is conveniently also OAD) as a secondary choice.

Thanks for diving into this.  Given this ambiguity, my instinct is to go with what's most commonly used by devs. Pick the colloquially term, not necessarily the steering-committee-defined "right" term.
Github search results
openapi spec -> 4m
openapi description -> 2.5m
openapi definition -> 1.2m
openapi specification ->  0.9m
As a result, I think we should use openapi spec. Maybe we have a two or three sentence blurb in the docs explaining that all these things are referring to the same thing within Fern's documentation.
Curious for your thoughts!

It's hard to gauge how many of the results from the github search for openapi spec refer to a file based on the specs vs the actual spec.
That said, I agree it seems to be in more common usage, and I can see the value in a descriptive approach vs prescriptive, and using a term more people may be familiar with/might search for.  I like the idea of including an explanatory blurb somewhere.
Do you want to use "OpenAPI spec" or "OpenAPI Spec" across the board instead of "OpenAPI Specification"? This PR affected a line that said "An OpenAPI Specification" - did you want to use "An OpenAPI Spec" here, or perhaps "A file conforming to the OpenAPI spec"?

I would do the same for Postman collection even though they officially call it a Postman Collection


Update CodeClimate syntax for 1.0.0 compatibility

Unbreak the tests due to changes in Code Climate's service.  A separate change will be necessary to fix submitting results.

This is a duplicate of #85.


Update README.md

Hey ellisonleao, I'm new to contributing to open source. May I know why was this not merged. Thanks

Hey @sanchay9 i am okay with the current README file, sorry if that wasn't clear


Vulnerable version (0.4.4) of grunt is used

Refer https://nvd.nist.gov/vuln/detail/CVE-2020-7729
Requires version >=1.3.0

hm.... what can we do to avoid such issues?

In-order to use this library, our organization security compliance requires this library dependencies to be upgraded to latest version. Could you please upgrade this library dependency to latest version.

@bkum , it is a problem, I don't know how to update the grunt, the new version does not support old options and I cannot find how to tell it to keep the license comment in minified file

Wouldn't you be able to just update the grunt minor version?

I have updated grunt version, please check.


Documentation for GPG signing and DCO signature

🆕🐥 First Timers Only
This issue is reserved for people who have never contributed to Hiero or any open source project in general.
We know that creating a pull request (PR) is a major barrier for new contributors.
The goal of this issue and all other issues labeled by 'Good First Issue' is to help you make your first contribution to Hiero.
👾 Description of the issue
There are two technical constraints that every commit needs to fit to be merged in a project within Hiero:

Each commit must be GPG signed
The author of each commit must sign the DCO

We need documentation of those two constraints to make it more accessible for newcomers to contribute to Hiero. Here, the documentation does not need to contain complete technical documentation. It is OK to link to other documentation like the one from GitHub. It would be great to have documentation for solving all that on the command line and samples of how it can be done in IDEs like IntelliJ or VSCode.
Some good links for the topics:

https://wiki.linuxfoundation.org/dco
https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits
https://github.com/hashgraph/hedera-json-rpc-relay/pull/3107#issuecomment-2417123980

📋 Step by step guide to do a contribution
If you have never contributed to an open source project at GitHub, the following step-by-step guide will introduce you to the workflow. More information and concrete samples for shell commands for each step can be found in our CONTRIBUTING.md file.
A more detailed general documentation of the GitHub PR workflow can be found here.

[ ] Claim this issue: Comment below that you are interested in working on the issue
[ ] Wait for assignment: A community member with the given rights will add you as an assignee of the issue
[ ] Fork the repository: You can do that in GitHub (by simply clicking the 'fork' button).
[ ] Check out the forked repository
[ ] Create a feature branch for the issue. We do not have a hard naming definition for branches but it is best practice to prefix the branch name with the issue id.
[ ] Solve the issue in your branch.
[ ] Commit your changes: Here, it is needed to add sign-off information to the commit to accept the "Developer Certificate of Origin" (https://developercertificate.org). More details can be found in our CONTRIBUTING.md
[ ] Start a Pull Request (PR): We have a pattern for naming pull requests that a GitHub Action checks. We use that pattern to support the creation of automatic release notes.
[ ] Check GitHub Actions: Several GitHub Actions will be triggered automatically for each PR. If a GitHub Action fails and you do not understand the cause of that error do not hesitate to add a comment to the PR and ask the Hiero developer community for support.
[ ] Wait for reviews: Members of the Hiero developer community will review your PR. If a reviewer finds any missing pieces or a problem, he or she will start a discussion with you and describe the next steps for solving the problem.
[ ] You did it 🎉: We will merge the fix in the develop branch. Thanks for being part of the Hiero community as an open-source contributor ❤

🎉 Contribute to Hacktoberfest
Solve this issue as part of the Hacktoberfest event and get a chance to receive cool goodies like a T-Shirt. 🎽
🤔 Additional Information
If you have any questions, just ask us directly in this issue by adding a comment. You can join ask any question at our GitHub discussions. A general manual about open-source contributions can be found here.

Hi, ich würde ihn gerne bearbeiten


68 create a widget for vesicle pool assignments

@constantinpape
I detected following issue with the current logic: after querying a vesicle pool and then querying a new vesicle pool, you cannot go back to the first one and edit it, as it will be overridden.

I have simplified the implementation of the vesicle pool widget. It does not work 100% yet, but it should be easy to finish now. I will merge it despite the widget not 100% working, as I have fixed many other issues in the plugins and did quite some refactoring.


[V4] Bug: fragments with JSX transform

React version: 17.0.1
Steps To Reproduce

yarn create react-app my-app (make sure react-scripts is 4.0.0 and react and react-dom are 17.0.1)
remove the React import in src/App.tsx (everything should still work)
add in a random <> (e.g., src/App.tsx should look like the following)

import logo from './logo.svg';
import './App.css';

function App() {
  return (
    <>

            Edit src/App.tsx and save to reload.

            Learn React

    physics test was bad
    </>
  );
}

export default App;

code example: (see code block above)
The current behavior
with the shorthand syntax, I get this error:
Failed to compile.

/tmp/my-app/src/App.tsx
TypeScript error in /tmp/my-app/src/App.tsx(6,5):
'React' refers to a UMD global, but the current file is a module. Consider adding an import instead.  TS2686

    4 | function App() {
    5 |   return (
  > 6 |     <>
      |     ^
    7 |

    8 |
    9 |

If I change the <> to React.Fragment, I get this error:
Failed to compile.

/tmp/my-app/src/App.tsx
  Line 13:3:  Prefer fragment shorthand over React.Fragment  react/jsx-fragments

Search for the keywords to learn more about each error.

If I change the <> to React.Fragment and add an eslint disable rule:
Failed to compile.

/tmp/my-app/src/App.tsx
TypeScript error in /tmp/my-app/src/App.tsx(6,5):
'React' refers to a UMD global, but the current file is a module. Consider adding an import instead.  TS2686

    4 | function App() {
    5 |   return (
  > 6 |     <Fragment>
      |     ^
    7 |

    8 |
    9 |

The expected behavior
react should display the spinning logo, and under the "Learn React" header, there should be text. In other words, no errors should occur when upgrading from react 16 to react 17.

Thanks for the reply @gaearon!

make sure react-scripts is 4.0.0
It is a beta.

I think I'm misunderstanding something: Hasn't CRA v4.0.0 been officially released? (I believe the last CRA beta was 4.0.0-next.117)

Hmm. I assumed not but I haven’t checked. :D Let’s wait to hear from the maintainers.

strange: I get the error about React being a UMD global even in files where I don't use fragments. e.g.:

I added import React from "react"; // eslint-disable-line @typescript-eslint/no-unused-vars to the top of my files that use fragments
I get no errors or warnings from the files with fragments in them
I get an error like this:

Failed to compile.

.../hacktj/website/2021/src/Footer/MLHTrustBadge/index.tsx
TypeScript error in .../hacktj/website/2021/src/Footer/MLHTrustBadge/index.tsx(2,4):
'React' refers to a UMD global, but the current file is a module. Consider adding an import instead.  TS2686

    1 | const MLHTrustBadge = (): JSX.Element => (
  > 2 |   <a
      |    ^
    3 |     id="mlh-trust-badge"
    4 |     href="https://mlh.io/seasons/na-2021/events?utm_source=na-hacktahon&utm_medium=TrustBadge&utm_campaign=2021-season&utm_content=white"
    5 |     target="_blank"

@sumanthratna I am in the same boat. It is definitely not isolated to Fragment. I've update my tsconfig to use the version from a new cra project bootstrapped with the new jsx compiler setup but getting this issue still

linking #9901 and https://github.com/microsoft/TypeScript/pull/39199. strangely enough, in my current project that uses TypeScript 4.0, I'm getting this error. I can't update to the TS 4.1 beta because CRA 4 complains when I do.
I've seen this with:

typescript projects
non-TS projects with react fragment

but I haven't seen this with NextJS 10, which uses React 17.

It seems also reproducible with CRA only without TS that the React Fragment short form does not work. We experience that issue on the react-bootstrap repo: https://github.com/react-bootstrap/code-sandbox-examples/issues/135

It seems also reproducible with CRA only without TS that the React Fragment short form does not work. We experience that issue on the react-bootstrap repo: https://github.com/react-bootstrap/code-sandbox-examples/issues/135
Sounds for me like a bug, @gaearon

Yeah I totally believe it’s a bug. I’m currently swamped by the React work so I can’t look it into it soon but I’m hoping that the maintainers or the open source users like you can dig into it.

Yeah I totally believe it’s a bug. I’m currently swamped by the React work so I can’t look it into it soon but I’m hoping that the maintainers or the open source users like you can dig into it.

Will try to take a look later and dig into it.

Yeah I totally believe it’s a bug. I’m currently swamped by the React work so I can’t look it into it soon but I’m hoping that the maintainers or the open source users like you can dig into it.

Will try to take a look later and dig into it.

Small update, it seems like the issue which we experienced is a different one, which is caused by CodeSandbox: https://codesandbox.io/s/github/react-bootstrap/code-sandbox-examples/tree/master/basic
Would be great if someone with more deeper knowledge could take a look too, feel myself not experienced enough with that topic.

I don't quite understand. The original report appeared to be about CRA. How can it be specific to CodeSandbox?

I don't quite understand. The original report appeared to be about CRA. How can it be specific to CodeSandbox?

I think its a different error (at least mine) to the error which was reported, since if I run npm run / npm build locally it works.

I just tested using the same reproduction steps in the original post and it looks like this was fixed in 4.0.1. Closing; will reopen if anyone else still has this issue in 4.0.1


facing issues using it for text

I want to use for text only not textfield but I get this error
../../Developer/flutter/.pub-cache/hosted/pub.dartlang.org/formatted_text-1.0.0/lib/src/controllers/selection_controls.dart:147:29: Error: Getter not found: 'toolBar'.
SelectionChangedCause.toolBar,
^^^^^^^
../../Developer/flutter/.pub-cache/hosted/pub.dartlang.org/formatted_text-1.0.0/lib/src/controllers/selection_controls.dart:138:21: Error: The method 'userUpdateTextEditingValue' isn't defined for the class 'TextSelectionDelegate'.

'TextSelectionDelegate' is from 'package:flutter/src/services/text_input.dart' ('../../Developer/flutter/packages/flutter/lib/src/services/text_input.dart').
Try correcting the name to the name of an existing method, or defining a method named 'userUpdateTextEditingValue'.
widget.delegate.userUpdateTextEditingValue(
^^^^^^^^^^^^^^^^^^^^^^^^^^

Please provide the necessary code usage, so I can recreate the issue.


libxx: Make __dso_handle weak

Summary
since sim arch has to use other instance provided by host glibc
also initialize __dso_handle to self as glibc:
https://github.com/bminor/glibc/blob/master/csu/dso_handle.c#L21
Impact
Testing

LGTM


Move most IDR config to this repo

Moves most of the IDR configuration into this public repo.
Adds placeholders for variables which should remain secret, where possible a public default is given:
$ git grep idr_secret
idr-playbooks/files/IDR-OMERO-52-omero.j2:config set omero.web.public.password {{ idr_secret_omero_web_public_password | default("") }}
idr-playbooks/group_vars/omero-hosts.yml:omero_system_uid: "{{ idr_secret_omero_system_uid | default(546) }}"
idr-playbooks/group_vars/omero-hosts.yml:omero_logmonitor_slack_token: "{{ idr_secret_omero_logmonitor_slack_token | default(None) }}"

Most of these playbooks should therefore run without any private configuration.
Note: work on changing omero_system_uid in the IDR is ongoing.
Testing
Ansible group_vars can be in two locations, the playbook directory and the inventory directory, with the former taking precedence. This means when you run a playbook in idr-playbooks idr-playbooks/group_vars is automatically included, and if you also specify an inventory (ansible-playbook -i INVENTORY/PATH) INVENTORY/PATH/group_vars will be included.
I've only tested this on top of https://github.com/openmicroscopy/infrastructure/pull/124

What would be ideal is if we could automatically create a public user if it doesn't already exist, but that probably requires a custom omero ansible module.

Merging for the upcoming testing via demo3 deployment.


XAML is Misspelled

Just above this section, XAML is misspelled as XAMl. Just CTRL-F XAMl with match case on.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 07f69aa0-1dbc-0506-638e-96e3fae70969
Version Independent ID: 0e55a6a7-d379-868e-4858-20a779524b46
Content: Reveal highlight - UWP app developer
Content Source: windows-apps-src/design/style/reveal.md
Service: unspecified
GitHub Login: @mijacobs
Microsoft Alias: mijacobs

Thank you! I checked in a fix; it'll go live with our RS4 docs.

It all works great on desktop, but not quite for mobile... Testing with emulator "Mobile Emulator 10.0.15063.0 WVGA 4 inch 512MB", my app crashes with error:
"Exception	{Windows.UI.Xaml.Markup.XamlParseException: The text associated with this error code could not be found.
Cannot find a Resource with the Name/Key ButtonRevealBackground [Line: 18 Position: 37]}	System.Exception {Windows.UI.Xaml.Markup.XamlParseException}"
Any pointers on how to address this?  If reveal requires a higher target version, how do you handle styles with different versions?  Thx

Thanks for reaching out! Please check out our article on Conditional XAML: https://docs.microsoft.com/en-us/windows/uwp/debug-test-perf/conditional-XAML

Thanks for the quick response Mike.  I am sure this would work, but I have opted to drop Mobile support for the time being.  Reason being there is apparently no mobile emulator for Windows 10 build 16299 or later.  I hope Microsoft will either come back to mobile, or make x86 or x64 work on the new devices (like Andromeda?)


The AUC is so low in the evaluation for stage two

I run training_stage_two.py with  5 epochs   learning_rate 1e-4  batch_size 32,   the train acc is nearly 0.875 and eva acc is nearly 0.8
then I run :
match_cluster.py
test_stage_two.py(use the pretrained weight aquired in training_stage_two.py)
after this,I run eval.py, but the AUC is quite lower than you, which is about 0.05, and the visualize result is very inaccurate. I have trained so many times but the AUC is always so low,I cannot find out the reason, I am so sorry to bother you ,but can you give me some advice for this ?
I will appreciate it if you can contact me in my wechat(L18355043548) or my<EMAIL_ADDRESS>

Sorry to bother you. Did you fix this problem? In my part, AUC and cIOU are quite close. I wonder the AUC has the right definition.

Have contacted you, thx


Missing character in words

Why are there missing character in words???
e.g
Cluster infras ruct re i prov ments

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 4150f10d-0ac3-0a70-8bcb-c7c2fa630f66
Version Independent ID: 41670466-1fa8-d27c-965d-59e3ac362676
Content: What's new in Failover Clustering in Windows Server
Content Source: WindowsServerDocs/failover-clustering/whats-new-in-failover-clustering.md
Product: windows-server
Technology: storage-failover-clustering
GitHub Login: @JasonGerend
Microsoft Alias: jgerend

Could you provide a screenshot of the issue you are seeing? I have tried searching for parts of the text you provided as an example, but I cannot find any of those issues.
The only line I could find resembling your example, is the following:

Cluster infrastructure improvements

(below the first sub-heading)
(https://docs.microsoft.com/en-us/windows-server/failover-clustering/whats-new-in-failover-clustering#whats-new-in-windows-server-2019)
To me, it seems like you could have had a temporary browser refresh issue, showing local artifacts on your screen.

I just checked, it's fine now. Probably something to do with my browser.


Notification bell in the nav bar should be a cursor pointer with hand

@divanov11 might already be working on this

ok. Shall i close this issue