crimson ProtocolV2 class is following a state-machine design style:
* states are defined in ProtocolV2::state_t;
* call `execute_<state_name>()` methods to trigger different states;
* V2 logics are implemented in each execute_<state_name>() methods, and
with explicit transitions to other states at the end of the execute_*;
* each state is associated with a write state defined in Protocol.h:
- none: not allowed to send;
- delay: messages can be queued, but will be delayed to send;
- open: dispatch queued message/keepalive/ack;
- drop: not send any messages, drop them all.
crimson ProtocolV2 is alike async ProtocolV2, with some considerations:
* explicit and encapsulated client/server handshake workflow.
* futurized-exception-based fault handling, which can interrupt protocol
workflow at any time in each state.
* introduced SERVER_WAIT state, meaning to wait for peer-client's socket
to reset or be replaced, and expect no further reads.
* introduced an explicit REPLACING state, async-msgr would be at the
NONE state during replacing.
Signed-off-by: Yingxin Cheng <yingxincheng@gmail.com>
The simplest async-msgr server which will have the same behavior with
crimson-msgr server for apple-to-apple performance test.
Signed-off-by: Yingxin Cheng <yingxincheng@gmail.com>
New features:
* --jobs: start multiple client messengers from core #1 ~ #jobs;
* --core: can assign server core to get away from busy client cores;
* --rounds: a client will send <rounds>/<jobs> messages;
Improved:
* Better configuration report;
* Report individual client results plus a summary;
* Validate if CPU number is sufficient before running;
* Sleep 1 second while connecting, so it won't hurt performance;
* Simplify client logic and bug fixes;
Removed unecessary features:
* finish_decode() for MOSDOp;
* keepalive ratio;
Signed-off-by: Yingxin Cheng <yingxincheng@gmail.com>
sharded data structures should only be allocated in core#0, or the
program will hang during exit.
Signed-off-by: Yingxin Cheng <yingxincheng@gmail.com>
We can only check for MAJOR.MINOR version of python3 since
FindPython3Libs does not support checking for MAJOR.MINOR.PATCH version
of python3. We also need to make sure we use the PYTHON3 versions of
these variables.
This should fix a regression introduced by c961e00.
Signed-off-by: Boris Ranto <branto@redhat.com>
* refs/pull/27198/head:
vstart: generate environment script suitable for sourcing
cephfs-shell: fix mode of script in tree
Reviewed-by: Patrick Donnelly <pdonnell@redhat.com>
cdIsInGroup should not be included in the request
and username/password should be an empty string
(instead of null)
Fixes: https://tracker.ceph.com/issues/39110
Signed-off-by: Ricardo Marques <rimarques@suse.com>
* refs/pull/27303/head:
mds: add Octopus cephfs feature bit
mds: verify current release has a cephfs feature bit
mds: add cephfs feature bit for Nautilus
mon: generalize and refactor lambda use
qa: test featureful client with mimic base
qa: remove obsolete snap upgrade tests
Reviewed-by: Zheng Yan <zyan@redhat.com>