gitextract_dhrjhetk/ ├── .devcontainer/ │ └── devcontainer.json ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug-report.yml │ │ ├── config.yml │ │ ├── feature-request.yml │ │ └── test-flake.yml │ ├── OWNERS │ ├── PULL_REQUEST_TEMPLATE.md │ ├── SECURITY.md │ ├── dependabot.yml │ └── workflows/ │ ├── OWNERS │ ├── antithesis-test.yml │ ├── antithesis-verify.yml │ ├── antithesis.debugger.yml │ ├── cherrypick-bot-ok-to-test.yaml │ ├── codeql-analysis.yml │ ├── gh-workflow-approve.yaml │ ├── measure-testgrid-flakiness.yaml │ ├── scorecards.yml │ ├── stale.yaml │ └── verify-released-assets.yaml ├── .gitignore ├── .go-version ├── .header ├── ADOPTERS.md ├── CHANGELOG/ │ ├── CHANGELOG-2.3.md │ ├── CHANGELOG-3.0.md │ ├── CHANGELOG-3.1.md │ ├── CHANGELOG-3.2.md │ ├── CHANGELOG-3.3.md │ ├── CHANGELOG-3.4.md │ ├── CHANGELOG-3.5.md │ ├── CHANGELOG-3.6.md │ ├── CHANGELOG-3.7.md │ ├── CHANGELOG-4.0.md │ └── README.md ├── CONTRIBUTING.md ├── DCO ├── Dockerfile ├── Documentation/ │ ├── OWNERS │ ├── README.md │ ├── contributor-guide/ │ │ ├── branch_management.md │ │ ├── bump_etcd_version_k8s.md │ │ ├── community-membership.md │ │ ├── dependency_management.md │ │ ├── exit_codes.md │ │ ├── features.md │ │ ├── local_cluster.md │ │ ├── logging.md │ │ ├── modules.md │ │ ├── prow_jobs.md │ │ ├── release.md │ │ ├── reporting_bugs.md │ │ ├── roadmap.md │ │ ├── triage_issues.md │ │ └── triage_prs.md │ ├── dev-guide/ │ │ └── apispec/ │ │ └── swagger/ │ │ ├── rpc.swagger.json │ │ ├── v3election.swagger.json │ │ └── v3lock.swagger.json │ ├── etcd-internals/ │ │ └── diagrams/ │ │ ├── consistent_read_workflow.drawio │ │ ├── etcd_internal_parts.drawio │ │ ├── write_workflow_follower.drawio │ │ └── write_workflow_leader.drawio │ └── postmortems/ │ └── v3.5-data-inconsistency.md ├── GOVERNANCE.md ├── LICENSE ├── Makefile ├── OWNERS ├── OWNERS_ALIASES ├── Procfile ├── README.md ├── api/ │ ├── .gomodguard.yaml │ ├── LICENSE │ ├── authpb/ │ │ ├── auth.pb.go │ │ ├── auth.proto │ │ └── deprecated.go │ ├── etcdserverpb/ │ │ ├── etcdserver.pb.go │ │ ├── etcdserver.proto │ │ ├── gw/ │ │ │ └── rpc.pb.gw.go │ │ ├── raft_internal.pb.go │ │ ├── raft_internal.proto │ │ ├── raft_internal_stringer.go │ │ ├── raft_internal_stringer_test.go │ │ ├── rpc.pb.go │ │ ├── rpc.proto │ │ └── rpc_grpc.pb.go │ ├── go.mod │ ├── go.sum │ ├── membershippb/ │ │ ├── membership.pb.go │ │ └── membership.proto │ ├── mvccpb/ │ │ ├── deprecated.go │ │ ├── kv.pb.go │ │ └── kv.proto │ ├── v3rpc/ │ │ └── rpctypes/ │ │ ├── doc.go │ │ ├── error.go │ │ ├── error_test.go │ │ ├── md.go │ │ └── metadatafields.go │ ├── version/ │ │ ├── version.go │ │ └── version_test.go │ └── versionpb/ │ ├── version.pb.go │ └── version.proto ├── bill-of-materials.json ├── bill-of-materials.override.json ├── cache/ │ ├── LICENSE │ ├── OWNERS │ ├── README.md │ ├── cache.go │ ├── cache_test.go │ ├── config.go │ ├── demux.go │ ├── demux_test.go │ ├── go.mod │ ├── go.sum │ ├── predicate.go │ ├── ready.go │ ├── ready_test.go │ ├── ringbuffer.go │ ├── ringbuffer_test.go │ ├── snapshot.go │ ├── store.go │ ├── store_test.go │ └── watcher.go ├── client/ │ ├── pkg/ │ │ ├── .gomodguard.yaml │ │ ├── LICENSE │ │ ├── fileutil/ │ │ │ ├── dir_unix.go │ │ │ ├── dir_windows.go │ │ │ ├── doc.go │ │ │ ├── filereader.go │ │ │ ├── filereader_test.go │ │ │ ├── fileutil.go │ │ │ ├── fileutil_test.go │ │ │ ├── lock.go │ │ │ ├── lock_flock.go │ │ │ ├── lock_linux.go │ │ │ ├── lock_linux_test.go │ │ │ ├── lock_plan9.go │ │ │ ├── lock_solaris.go │ │ │ ├── lock_test.go │ │ │ ├── lock_unix.go │ │ │ ├── lock_windows.go │ │ │ ├── preallocate.go │ │ │ ├── preallocate_darwin.go │ │ │ ├── preallocate_test.go │ │ │ ├── preallocate_unix.go │ │ │ ├── preallocate_unsupported.go │ │ │ ├── purge.go │ │ │ ├── purge_test.go │ │ │ ├── read_dir.go │ │ │ ├── read_dir_test.go │ │ │ ├── sync.go │ │ │ ├── sync_darwin.go │ │ │ └── sync_linux.go │ │ ├── go.mod │ │ ├── go.sum │ │ ├── logutil/ │ │ │ ├── doc.go │ │ │ ├── log_format.go │ │ │ ├── log_format_test.go │ │ │ ├── log_level.go │ │ │ ├── zap.go │ │ │ ├── zap_journal.go │ │ │ ├── zap_journal_test.go │ │ │ └── zap_test.go │ │ ├── pathutil/ │ │ │ ├── path.go │ │ │ └── path_test.go │ │ ├── srv/ │ │ │ ├── srv.go │ │ │ └── srv_test.go │ │ ├── systemd/ │ │ │ ├── doc.go │ │ │ └── journal.go │ │ ├── testutil/ │ │ │ ├── assert.go │ │ │ ├── before.go │ │ │ ├── leak.go │ │ │ ├── leak_test.go │ │ │ ├── pauseable_handler.go │ │ │ ├── recorder.go │ │ │ ├── testingtb.go │ │ │ ├── testutil.go │ │ │ └── var.go │ │ ├── tlsutil/ │ │ │ ├── cipher_suites.go │ │ │ ├── cipher_suites_test.go │ │ │ ├── doc.go │ │ │ ├── tlsutil.go │ │ │ ├── versions.go │ │ │ └── versions_test.go │ │ ├── transport/ │ │ │ ├── doc.go │ │ │ ├── keepalive_listener.go │ │ │ ├── keepalive_listener_openbsd.go │ │ │ ├── keepalive_listener_test.go │ │ │ ├── keepalive_listener_unix.go │ │ │ ├── limit_listen.go │ │ │ ├── listener.go │ │ │ ├── listener_opts.go │ │ │ ├── listener_test.go │ │ │ ├── listener_tls.go │ │ │ ├── sockopt.go │ │ │ ├── sockopt_solaris.go │ │ │ ├── sockopt_unix.go │ │ │ ├── sockopt_wasm.go │ │ │ ├── sockopt_windows.go │ │ │ ├── timeout_conn.go │ │ │ ├── timeout_dialer.go │ │ │ ├── timeout_dialer_test.go │ │ │ ├── timeout_listener.go │ │ │ ├── timeout_listener_test.go │ │ │ ├── timeout_transport.go │ │ │ ├── timeout_transport_test.go │ │ │ ├── tls.go │ │ │ ├── tls_test.go │ │ │ ├── transport.go │ │ │ ├── transport_test.go │ │ │ └── unix_listener.go │ │ ├── types/ │ │ │ ├── doc.go │ │ │ ├── id.go │ │ │ ├── id_test.go │ │ │ ├── set.go │ │ │ ├── set_test.go │ │ │ ├── slice.go │ │ │ ├── slice_test.go │ │ │ ├── urls.go │ │ │ ├── urls_test.go │ │ │ ├── urlsmap.go │ │ │ └── urlsmap_test.go │ │ └── verify/ │ │ └── verify.go │ └── v3/ │ ├── .gomodguard.yaml │ ├── LICENSE │ ├── OWNERS │ ├── README.md │ ├── auth.go │ ├── client.go │ ├── client_test.go │ ├── clientv3util/ │ │ ├── example_key_test.go │ │ └── util.go │ ├── cluster.go │ ├── compact_op.go │ ├── compact_op_test.go │ ├── compare.go │ ├── concurrency/ │ │ ├── doc.go │ │ ├── election.go │ │ ├── key.go │ │ ├── main_test.go │ │ ├── mutex.go │ │ ├── session.go │ │ ├── stm.go │ │ └── stm_test.go │ ├── config.go │ ├── config_test.go │ ├── credentials/ │ │ ├── credentials.go │ │ └── credentials_test.go │ ├── ctx.go │ ├── ctx_test.go │ ├── doc.go │ ├── experimental/ │ │ └── recipes/ │ │ ├── barrier.go │ │ ├── client.go │ │ ├── doc.go │ │ ├── double_barrier.go │ │ ├── grpc_gateway/ │ │ │ └── user_add.sh │ │ ├── key.go │ │ ├── priority_queue.go │ │ ├── queue.go │ │ ├── rwmutex.go │ │ └── watch.go │ ├── go.mod │ ├── go.sum │ ├── internal/ │ │ ├── endpoint/ │ │ │ ├── endpoint.go │ │ │ └── endpoint_test.go │ │ └── resolver/ │ │ └── resolver.go │ ├── kubernetes/ │ │ ├── client.go │ │ └── interface.go │ ├── kv.go │ ├── lease.go │ ├── leasing/ │ │ ├── cache.go │ │ ├── doc.go │ │ ├── kv.go │ │ ├── txn.go │ │ └── util.go │ ├── logger.go │ ├── main_test.go │ ├── maintenance.go │ ├── mirror/ │ │ └── syncer.go │ ├── mock/ │ │ └── mockserver/ │ │ ├── doc.go │ │ └── mockserver.go │ ├── namespace/ │ │ ├── doc.go │ │ ├── kv.go │ │ ├── lease.go │ │ ├── util.go │ │ ├── util_test.go │ │ └── watch.go │ ├── naming/ │ │ ├── doc.go │ │ ├── endpoints/ │ │ │ ├── endpoints.go │ │ │ ├── endpoints_impl.go │ │ │ └── internal/ │ │ │ └── update.go │ │ └── resolver/ │ │ └── resolver.go │ ├── op.go │ ├── op_test.go │ ├── options.go │ ├── ordering/ │ │ ├── doc.go │ │ ├── kv.go │ │ ├── kv_test.go │ │ └── util.go │ ├── retry.go │ ├── retry_interceptor.go │ ├── retry_interceptor_test.go │ ├── snapshot/ │ │ ├── doc.go │ │ └── v3_snapshot.go │ ├── sort.go │ ├── txn.go │ ├── txn_test.go │ ├── utils.go │ ├── watch.go │ ├── watch_test.go │ └── yaml/ │ ├── config.go │ └── config_test.go ├── code-of-conduct.md ├── codecov.yml ├── contrib/ │ ├── OWNERS │ ├── README.md │ ├── lock/ │ │ └── README.md │ ├── mixin/ │ │ ├── .gitignore │ │ ├── .lint │ │ ├── Makefile │ │ ├── OWNERS │ │ ├── README.md │ │ ├── alerts/ │ │ │ └── alerts.libsonnet │ │ ├── config.libsonnet │ │ ├── dashboards/ │ │ │ ├── dashboards.libsonnet │ │ │ ├── etcd-grafana7x.libsonnet │ │ │ ├── etcd.libsonnet │ │ │ ├── g.libsonnet │ │ │ ├── panels.libsonnet │ │ │ ├── targets.libsonnet │ │ │ └── variables.libsonnet │ │ ├── jsonnetfile.json │ │ ├── jsonnetfile.lock.json │ │ ├── mixin.libsonnet │ │ └── test.yaml │ ├── raftexample/ │ │ ├── Procfile │ │ ├── README.md │ │ ├── doc.go │ │ ├── httpapi.go │ │ ├── kvstore.go │ │ ├── kvstore_test.go │ │ ├── listener.go │ │ ├── main.go │ │ ├── raft.go │ │ ├── raft_test.go │ │ └── raftexample_test.go │ └── systemd/ │ ├── etcd.service │ ├── etcd3-multinode/ │ │ └── README.md │ └── sysusers.d/ │ └── 20-etcd.conf ├── dummy.go ├── etcd.conf.yml.sample ├── etcdctl/ │ ├── .gomodguard.yaml │ ├── LICENSE │ ├── OWNERS │ ├── README.md │ ├── READMEv2.md │ ├── ctlv3/ │ │ ├── command/ │ │ │ ├── alarm_command.go │ │ │ ├── auth_command.go │ │ │ ├── check.go │ │ │ ├── compaction_command.go │ │ │ ├── completion_command.go │ │ │ ├── defrag_command.go │ │ │ ├── del_command.go │ │ │ ├── diagnosis/ │ │ │ │ ├── engine/ │ │ │ │ │ ├── diagnosis.go │ │ │ │ │ └── intf/ │ │ │ │ │ └── plugin.go │ │ │ │ ├── examples/ │ │ │ │ │ └── etcd_diagnosis_report.json │ │ │ │ └── plugins/ │ │ │ │ ├── common/ │ │ │ │ │ ├── checker.go │ │ │ │ │ └── client.go │ │ │ │ ├── epstatus/ │ │ │ │ │ └── plugin.go │ │ │ │ ├── membership/ │ │ │ │ │ └── plugin.go │ │ │ │ ├── metrics/ │ │ │ │ │ └── plugin.go │ │ │ │ └── read/ │ │ │ │ └── plugin.go │ │ │ ├── diagnosis_command.go │ │ │ ├── doc.go │ │ │ ├── downgrade_command.go │ │ │ ├── elect_command.go │ │ │ ├── ep_command.go │ │ │ ├── get_command.go │ │ │ ├── global.go │ │ │ ├── groups.go │ │ │ ├── help_command.go │ │ │ ├── lease_command.go │ │ │ ├── lock_command.go │ │ │ ├── make_mirror_command.go │ │ │ ├── member_command.go │ │ │ ├── move_leader_command.go │ │ │ ├── options_command.go │ │ │ ├── printer.go │ │ │ ├── printer_fields.go │ │ │ ├── printer_json.go │ │ │ ├── printer_json_test.go │ │ │ ├── printer_protobuf.go │ │ │ ├── printer_simple.go │ │ │ ├── printer_table.go │ │ │ ├── put_command.go │ │ │ ├── role_command.go │ │ │ ├── snapshot_command.go │ │ │ ├── txn_command.go │ │ │ ├── user_command.go │ │ │ ├── util.go │ │ │ ├── util_test.go │ │ │ ├── version_command.go │ │ │ ├── watch_command.go │ │ │ └── watch_command_test.go │ │ └── ctl.go │ ├── doc/ │ │ └── mirror_maker.md │ ├── go.mod │ ├── go.sum │ ├── main.go │ └── util/ │ └── normalizer.go ├── etcdutl/ │ ├── .gomodguard.yaml │ ├── LICENSE │ ├── OWNERS │ ├── README.md │ ├── ctl.go │ ├── etcdutl/ │ │ ├── bucket_command.go │ │ ├── common.go │ │ ├── common_test.go │ │ ├── completion_commmand.go │ │ ├── defrag_command.go │ │ ├── hashkv_command.go │ │ ├── hashkv_command_test.go │ │ ├── migrate_command.go │ │ ├── printer.go │ │ ├── printer_fields.go │ │ ├── printer_json.go │ │ ├── printer_protobuf.go │ │ ├── printer_simple.go │ │ ├── printer_table.go │ │ ├── snapshot_command.go │ │ └── version_command.go │ ├── go.mod │ ├── go.sum │ ├── main.go │ └── snapshot/ │ ├── doc.go │ ├── v3_snapshot.go │ └── v3_snapshot_test.go ├── go.mod ├── go.sum ├── go.work ├── go.work.sum ├── hack/ │ ├── README.md │ ├── benchmark/ │ │ ├── README.md │ │ └── bench.sh │ ├── insta-discovery/ │ │ ├── Procfile │ │ ├── README.md │ │ └── discovery │ ├── kubernetes-deploy/ │ │ ├── README.md │ │ ├── etcd.yml │ │ └── vulcand.yml │ ├── patch/ │ │ ├── README.md │ │ └── cherrypick.sh │ └── tls-setup/ │ ├── Makefile │ ├── Procfile │ ├── README.md │ └── config/ │ ├── ca-config.json │ ├── ca-csr.json │ └── req-csr.json ├── pkg/ │ ├── .gomodguard.yaml │ ├── LICENSE │ ├── README.md │ ├── adt/ │ │ ├── README.md │ │ ├── adt.go │ │ ├── example_test.go │ │ ├── interval_tree.go │ │ └── interval_tree_test.go │ ├── cobrautl/ │ │ ├── error.go │ │ └── help.go │ ├── contention/ │ │ ├── contention.go │ │ └── doc.go │ ├── cpuutil/ │ │ ├── doc.go │ │ └── endian.go │ ├── crc/ │ │ ├── crc.go │ │ └── crc_test.go │ ├── debugutil/ │ │ ├── doc.go │ │ └── pprof.go │ ├── expect/ │ │ ├── expect.go │ │ └── expect_test.go │ ├── featuregate/ │ │ ├── feature_gate.go │ │ └── feature_gate_test.go │ ├── flags/ │ │ ├── flag.go │ │ ├── flag_test.go │ │ ├── ignored.go │ │ ├── selective_string.go │ │ ├── selective_string_test.go │ │ ├── strings.go │ │ ├── strings_test.go │ │ ├── uint32.go │ │ ├── uint32_test.go │ │ ├── unique_strings.go │ │ ├── unique_strings_test.go │ │ ├── unique_urls.go │ │ ├── unique_urls_test.go │ │ ├── urls.go │ │ └── urls_test.go │ ├── go.mod │ ├── go.sum │ ├── grpctesting/ │ │ ├── recorder.go │ │ └── stub_server.go │ ├── httputil/ │ │ ├── httputil.go │ │ └── httputil_test.go │ ├── idutil/ │ │ ├── id.go │ │ └── id_test.go │ ├── ioutil/ │ │ ├── pagewriter.go │ │ ├── pagewriter_test.go │ │ ├── readcloser.go │ │ ├── readcloser_test.go │ │ ├── reader.go │ │ ├── reader_test.go │ │ └── util.go │ ├── netutil/ │ │ ├── doc.go │ │ ├── host_normalize.go │ │ ├── host_normalize_test.go │ │ ├── netutil.go │ │ ├── netutil_test.go │ │ ├── routes.go │ │ ├── routes_linux.go │ │ └── routes_linux_test.go │ ├── notify/ │ │ └── notify.go │ ├── osutil/ │ │ ├── interrupt_unix.go │ │ ├── interrupt_windows.go │ │ ├── osutil.go │ │ ├── osutil_test.go │ │ ├── signal.go │ │ └── signal_linux.go │ ├── pbutil/ │ │ ├── pbutil.go │ │ └── pbutil_test.go │ ├── proxy/ │ │ ├── doc.go │ │ ├── fixtures/ │ │ │ ├── ca-csr.json │ │ │ ├── ca.crt │ │ │ ├── gencert.json │ │ │ ├── gencerts.sh │ │ │ ├── server-ca-csr.json │ │ │ ├── server.crt │ │ │ └── server.key.insecure │ │ ├── server.go │ │ └── server_test.go │ ├── report/ │ │ ├── doc.go │ │ ├── perfdash.go │ │ ├── report.go │ │ ├── report_test.go │ │ ├── timeseries.go │ │ ├── timeseries_test.go │ │ └── weighted.go │ ├── runtime/ │ │ ├── fds_linux.go │ │ └── fds_other.go │ ├── schedule/ │ │ ├── doc.go │ │ ├── schedule.go │ │ └── schedule_test.go │ ├── stringutil/ │ │ ├── doc.go │ │ ├── rand.go │ │ └── rand_test.go │ ├── traceutil/ │ │ ├── trace.go │ │ └── trace_test.go │ └── wait/ │ ├── wait.go │ ├── wait_test.go │ ├── wait_time.go │ └── wait_time_test.go ├── scripts/ │ ├── OWNERS │ ├── README │ ├── benchmark_test.sh │ ├── build-binary.sh │ ├── build-docker.sh │ ├── build-release.sh │ ├── build.sh │ ├── build_lib.sh │ ├── build_tools.sh │ ├── codecov_upload.sh │ ├── etcd_version_annotations.txt │ ├── fix/ │ │ ├── bom.sh │ │ ├── mod-tidy.sh │ │ ├── shell_ws.sh │ │ └── yamllint.sh │ ├── fuzzing.sh │ ├── genproto.sh │ ├── markdown_diff_lint.sh │ ├── measure-testgrid-flakiness.sh │ ├── release.sh │ ├── release_mod.sh │ ├── release_notes.tpl.txt │ ├── sync_go_toolchain_directive.sh │ ├── test.sh │ ├── test_images.sh │ ├── test_lib.sh │ ├── test_utils.sh │ ├── update_dep.sh │ ├── update_go_workspace.sh │ ├── update_proto_annotations.sh │ ├── verify_genproto.sh │ ├── verify_go_versions.sh │ ├── verify_golangci-lint_version.sh │ ├── verify_grpc_experimental.sh │ └── verify_proto_annotations.sh ├── security/ │ ├── OWNERS │ ├── README.md │ ├── email-templates.md │ └── security-release-process.md ├── server/ │ ├── .gomodguard.yaml │ ├── LICENSE │ ├── auth/ │ │ ├── doc.go │ │ ├── jwt.go │ │ ├── jwt_test.go │ │ ├── main_test.go │ │ ├── metrics.go │ │ ├── nop.go │ │ ├── options.go │ │ ├── range_perm_cache.go │ │ ├── range_perm_cache_test.go │ │ ├── simple_token.go │ │ ├── simple_token_test.go │ │ ├── store.go │ │ ├── store_mock_test.go │ │ └── store_test.go │ ├── config/ │ │ ├── config.go │ │ ├── config_test.go │ │ ├── v2_deprecation.go │ │ └── v2_deprecation_test.go │ ├── embed/ │ │ ├── auth_test.go │ │ ├── config.go │ │ ├── config_logging.go │ │ ├── config_logging_journal_unix.go │ │ ├── config_logging_journal_windows.go │ │ ├── config_test.go │ │ ├── config_tracing.go │ │ ├── config_tracing_test.go │ │ ├── doc.go │ │ ├── etcd.go │ │ ├── etcd_test.go │ │ ├── serve.go │ │ ├── serve_test.go │ │ └── util.go │ ├── etcdmain/ │ │ ├── config.go │ │ ├── config_test.go │ │ ├── doc.go │ │ ├── etcd.go │ │ ├── gateway.go │ │ ├── grpc_proxy.go │ │ ├── grpc_proxy_logger.go │ │ ├── grpc_proxy_logger_test.go │ │ ├── help.go │ │ ├── main.go │ │ └── util.go │ ├── etcdserver/ │ │ ├── adapters.go │ │ ├── api/ │ │ │ ├── capability.go │ │ │ ├── cluster.go │ │ │ ├── doc.go │ │ │ ├── etcdhttp/ │ │ │ │ ├── debug.go │ │ │ │ ├── doc.go │ │ │ │ ├── health.go │ │ │ │ ├── health_test.go │ │ │ │ ├── metrics.go │ │ │ │ ├── peer.go │ │ │ │ ├── peer_test.go │ │ │ │ ├── types/ │ │ │ │ │ ├── errors.go │ │ │ │ │ └── errors_test.go │ │ │ │ ├── utils.go │ │ │ │ ├── version.go │ │ │ │ └── version_test.go │ │ │ ├── membership/ │ │ │ │ ├── cluster.go │ │ │ │ ├── cluster_opts.go │ │ │ │ ├── cluster_test.go │ │ │ │ ├── doc.go │ │ │ │ ├── errors.go │ │ │ │ ├── member.go │ │ │ │ ├── member_test.go │ │ │ │ ├── membership_test.go │ │ │ │ ├── metrics.go │ │ │ │ ├── store.go │ │ │ │ ├── storev2.go │ │ │ │ └── storev2_test.go │ │ │ ├── rafthttp/ │ │ │ │ ├── coder.go │ │ │ │ ├── doc.go │ │ │ │ ├── fake_roundtripper_test.go │ │ │ │ ├── functional_test.go │ │ │ │ ├── http.go │ │ │ │ ├── http_test.go │ │ │ │ ├── metrics.go │ │ │ │ ├── msg_codec.go │ │ │ │ ├── msg_codec_test.go │ │ │ │ ├── msgappv2_codec.go │ │ │ │ ├── msgappv2_codec_test.go │ │ │ │ ├── peer.go │ │ │ │ ├── peer_status.go │ │ │ │ ├── peer_test.go │ │ │ │ ├── pipeline.go │ │ │ │ ├── pipeline_test.go │ │ │ │ ├── probing_status.go │ │ │ │ ├── remote.go │ │ │ │ ├── snapshot_sender.go │ │ │ │ ├── snapshot_test.go │ │ │ │ ├── stream.go │ │ │ │ ├── stream_test.go │ │ │ │ ├── transport.go │ │ │ │ ├── transport_bench_test.go │ │ │ │ ├── transport_test.go │ │ │ │ ├── urlpick.go │ │ │ │ ├── urlpick_test.go │ │ │ │ ├── util.go │ │ │ │ └── util_test.go │ │ │ ├── snap/ │ │ │ │ ├── db.go │ │ │ │ ├── doc.go │ │ │ │ ├── message.go │ │ │ │ ├── metrics.go │ │ │ │ ├── snappb/ │ │ │ │ │ ├── snap.pb.go │ │ │ │ │ └── snap.proto │ │ │ │ ├── snapshotter.go │ │ │ │ └── snapshotter_test.go │ │ │ ├── v2error/ │ │ │ │ ├── error.go │ │ │ │ └── error_test.go │ │ │ ├── v2stats/ │ │ │ │ ├── leader.go │ │ │ │ ├── queue.go │ │ │ │ └── server.go │ │ │ ├── v2store/ │ │ │ │ ├── doc.go │ │ │ │ ├── event.go │ │ │ │ ├── event_history.go │ │ │ │ ├── event_queue.go │ │ │ │ ├── event_test.go │ │ │ │ ├── heap_test.go │ │ │ │ ├── metrics.go │ │ │ │ ├── node.go │ │ │ │ ├── node_extern.go │ │ │ │ ├── node_extern_test.go │ │ │ │ ├── node_test.go │ │ │ │ ├── stats.go │ │ │ │ ├── stats_test.go │ │ │ │ ├── store.go │ │ │ │ ├── store_bench_test.go │ │ │ │ ├── store_ttl_test.go │ │ │ │ ├── ttl_key_heap.go │ │ │ │ ├── watcher.go │ │ │ │ ├── watcher_hub.go │ │ │ │ ├── watcher_hub_test.go │ │ │ │ └── watcher_test.go │ │ │ ├── v3alarm/ │ │ │ │ └── alarms.go │ │ │ ├── v3client/ │ │ │ │ ├── doc.go │ │ │ │ └── v3client.go │ │ │ ├── v3compactor/ │ │ │ │ ├── compactor.go │ │ │ │ ├── compactor_test.go │ │ │ │ ├── doc.go │ │ │ │ ├── periodic.go │ │ │ │ ├── periodic_test.go │ │ │ │ ├── revision.go │ │ │ │ └── revision_test.go │ │ │ ├── v3discovery/ │ │ │ │ ├── discovery.go │ │ │ │ └── discovery_test.go │ │ │ ├── v3election/ │ │ │ │ ├── doc.go │ │ │ │ ├── election.go │ │ │ │ └── v3electionpb/ │ │ │ │ ├── gw/ │ │ │ │ │ └── v3election.pb.gw.go │ │ │ │ ├── v3election.pb.go │ │ │ │ ├── v3election.proto │ │ │ │ └── v3election_grpc.pb.go │ │ │ ├── v3lock/ │ │ │ │ ├── doc.go │ │ │ │ ├── lock.go │ │ │ │ └── v3lockpb/ │ │ │ │ ├── gw/ │ │ │ │ │ └── v3lock.pb.gw.go │ │ │ │ ├── v3lock.pb.go │ │ │ │ ├── v3lock.proto │ │ │ │ └── v3lock_grpc.pb.go │ │ │ └── v3rpc/ │ │ │ ├── auth.go │ │ │ ├── codec.go │ │ │ ├── grpc.go │ │ │ ├── header.go │ │ │ ├── health.go │ │ │ ├── interceptor.go │ │ │ ├── key.go │ │ │ ├── key_test.go │ │ │ ├── lease.go │ │ │ ├── maintenance.go │ │ │ ├── member.go │ │ │ ├── metrics.go │ │ │ ├── quota.go │ │ │ ├── util.go │ │ │ ├── util_test.go │ │ │ ├── validationfuzz_test.go │ │ │ ├── watch.go │ │ │ └── watch_test.go │ │ ├── apply/ │ │ │ ├── apply.go │ │ │ ├── auth.go │ │ │ ├── auth_test.go │ │ │ ├── backend.go │ │ │ ├── capped.go │ │ │ ├── corrupt.go │ │ │ ├── interface.go │ │ │ ├── metrics.go │ │ │ ├── quota.go │ │ │ ├── uber_applier.go │ │ │ └── uber_applier_test.go │ │ ├── bootstrap.go │ │ ├── bootstrap_test.go │ │ ├── cindex/ │ │ │ ├── cindex.go │ │ │ ├── cindex_test.go │ │ │ └── doc.go │ │ ├── cluster_util.go │ │ ├── cluster_util_test.go │ │ ├── corrupt.go │ │ ├── corrupt_test.go │ │ ├── doc.go │ │ ├── errors/ │ │ │ └── errors.go │ │ ├── metrics.go │ │ ├── raft.go │ │ ├── raft_test.go │ │ ├── server.go │ │ ├── server_access_control.go │ │ ├── server_access_control_test.go │ │ ├── server_test.go │ │ ├── snapshot_merge.go │ │ ├── tracing.go │ │ ├── txn/ │ │ │ ├── delete.go │ │ │ ├── metrics.go │ │ │ ├── metrics_test.go │ │ │ ├── put.go │ │ │ ├── range.go │ │ │ ├── txn.go │ │ │ ├── txn_test.go │ │ │ ├── util.go │ │ │ ├── util_bench_test.go │ │ │ └── util_test.go │ │ ├── util.go │ │ ├── util_test.go │ │ ├── v3_server.go │ │ ├── version/ │ │ │ ├── doc.go │ │ │ ├── downgrade.go │ │ │ ├── downgrade_test.go │ │ │ ├── errors.go │ │ │ ├── monitor.go │ │ │ ├── monitor_test.go │ │ │ ├── version.go │ │ │ └── version_test.go │ │ ├── zap_raft.go │ │ └── zap_raft_test.go │ ├── features/ │ │ └── etcd_features.go │ ├── go.mod │ ├── go.sum │ ├── lease/ │ │ ├── doc.go │ │ ├── lease.go │ │ ├── lease_queue.go │ │ ├── lease_queue_test.go │ │ ├── leasehttp/ │ │ │ ├── doc.go │ │ │ ├── http.go │ │ │ └── http_test.go │ │ ├── leasepb/ │ │ │ ├── lease.pb.go │ │ │ └── lease.proto │ │ ├── lessor.go │ │ ├── lessor_bench_test.go │ │ ├── lessor_test.go │ │ └── metrics.go │ ├── main.go │ ├── mock/ │ │ ├── mockstorage/ │ │ │ ├── doc.go │ │ │ └── storage_recorder.go │ │ ├── mockstore/ │ │ │ ├── doc.go │ │ │ └── store_recorder.go │ │ └── mockwait/ │ │ ├── doc.go │ │ └── wait_recorder.go │ ├── proxy/ │ │ ├── grpcproxy/ │ │ │ ├── adapter/ │ │ │ │ ├── auth_client_adapter.go │ │ │ │ ├── chan_stream.go │ │ │ │ ├── cluster_client_adapter.go │ │ │ │ ├── doc.go │ │ │ │ ├── election_client_adapter.go │ │ │ │ ├── kv_client_adapter.go │ │ │ │ ├── lease_client_adapter.go │ │ │ │ ├── lock_client_adapter.go │ │ │ │ ├── maintenance_client_adapter.go │ │ │ │ └── watch_client_adapter.go │ │ │ ├── auth.go │ │ │ ├── cache/ │ │ │ │ └── store.go │ │ │ ├── cluster.go │ │ │ ├── doc.go │ │ │ ├── election.go │ │ │ ├── health.go │ │ │ ├── kv.go │ │ │ ├── leader.go │ │ │ ├── lease.go │ │ │ ├── lock.go │ │ │ ├── maintenance.go │ │ │ ├── metrics.go │ │ │ ├── register.go │ │ │ ├── util.go │ │ │ ├── watch.go │ │ │ ├── watch_broadcast.go │ │ │ ├── watch_broadcasts.go │ │ │ ├── watch_ranges.go │ │ │ └── watcher.go │ │ └── tcpproxy/ │ │ ├── doc.go │ │ ├── userspace.go │ │ └── userspace_test.go │ ├── storage/ │ │ ├── backend/ │ │ │ ├── backend.go │ │ │ ├── backend_bench_test.go │ │ │ ├── backend_test.go │ │ │ ├── batch_tx.go │ │ │ ├── batch_tx_test.go │ │ │ ├── config_default.go │ │ │ ├── config_linux.go │ │ │ ├── config_windows.go │ │ │ ├── doc.go │ │ │ ├── export_test.go │ │ │ ├── hooks.go │ │ │ ├── hooks_test.go │ │ │ ├── metrics.go │ │ │ ├── read_tx.go │ │ │ ├── testing/ │ │ │ │ └── betesting.go │ │ │ ├── tx_buffer.go │ │ │ ├── tx_buffer_test.go │ │ │ ├── verify.go │ │ │ └── verify_test.go │ │ ├── backend.go │ │ ├── datadir/ │ │ │ ├── datadir.go │ │ │ ├── datadir_test.go │ │ │ └── doc.go │ │ ├── hooks.go │ │ ├── metrics.go │ │ ├── mvcc/ │ │ │ ├── doc.go │ │ │ ├── hash.go │ │ │ ├── hash_test.go │ │ │ ├── index.go │ │ │ ├── index_bench_test.go │ │ │ ├── index_test.go │ │ │ ├── key_index.go │ │ │ ├── key_index_test.go │ │ │ ├── kv.go │ │ │ ├── kv_test.go │ │ │ ├── kv_view.go │ │ │ ├── kvstore.go │ │ │ ├── kvstore_bench_test.go │ │ │ ├── kvstore_compaction.go │ │ │ ├── kvstore_compaction_test.go │ │ │ ├── kvstore_test.go │ │ │ ├── kvstore_txn.go │ │ │ ├── metrics.go │ │ │ ├── metrics_txn.go │ │ │ ├── revision.go │ │ │ ├── store.go │ │ │ ├── store_test.go │ │ │ ├── testutil/ │ │ │ │ └── hash.go │ │ │ ├── watchable_store.go │ │ │ ├── watchable_store_bench_test.go │ │ │ ├── watchable_store_test.go │ │ │ ├── watchable_store_txn.go │ │ │ ├── watcher.go │ │ │ ├── watcher_bench_test.go │ │ │ ├── watcher_group.go │ │ │ └── watcher_test.go │ │ ├── quota.go │ │ ├── schema/ │ │ │ ├── actions.go │ │ │ ├── actions_test.go │ │ │ ├── alarm.go │ │ │ ├── auth.go │ │ │ ├── auth_roles.go │ │ │ ├── auth_roles_test.go │ │ │ ├── auth_test.go │ │ │ ├── auth_users.go │ │ │ ├── auth_users_test.go │ │ │ ├── bucket.go │ │ │ ├── changes.go │ │ │ ├── changes_test.go │ │ │ ├── cindex.go │ │ │ ├── confstate.go │ │ │ ├── confstate_test.go │ │ │ ├── lease.go │ │ │ ├── lease_test.go │ │ │ ├── membership.go │ │ │ ├── migration.go │ │ │ ├── migration_test.go │ │ │ ├── schema.go │ │ │ ├── schema_test.go │ │ │ ├── version.go │ │ │ └── version_test.go │ │ ├── storage.go │ │ ├── util.go │ │ └── wal/ │ │ ├── decoder.go │ │ ├── doc.go │ │ ├── encoder.go │ │ ├── file_pipeline.go │ │ ├── file_pipeline_test.go │ │ ├── metrics.go │ │ ├── record_test.go │ │ ├── repair.go │ │ ├── repair_test.go │ │ ├── testdata/ │ │ │ └── TestNew.wal │ │ ├── testing/ │ │ │ └── waltesting.go │ │ ├── util.go │ │ ├── version.go │ │ ├── version_test.go │ │ ├── wal.go │ │ ├── wal_bench_test.go │ │ ├── wal_test.go │ │ └── walpb/ │ │ ├── record.go │ │ ├── record.pb.go │ │ ├── record.proto │ │ └── record_test.go │ └── verify/ │ ├── doc.go │ └── verify.go ├── tests/ │ ├── LICENSE │ ├── OWNERS │ ├── antithesis/ │ │ ├── Makefile │ │ ├── README.md │ │ ├── config/ │ │ │ ├── Dockerfile │ │ │ ├── docker-compose-1-node.yml │ │ │ ├── docker-compose-3-node.yml │ │ │ └── manifests/ │ │ │ └── default-etcd-3-replicas.yaml │ │ ├── server/ │ │ │ ├── Dockerfile │ │ │ └── inject/ │ │ │ └── verify.patch │ │ └── test-template/ │ │ ├── Dockerfile │ │ ├── entrypoint/ │ │ │ └── main.go │ │ └── robustness/ │ │ ├── common/ │ │ │ └── path.go │ │ ├── finally/ │ │ │ └── main.go │ │ └── traffic/ │ │ └── main.go │ ├── common/ │ │ ├── alarm_test.go │ │ ├── auth_test.go │ │ ├── auth_util.go │ │ ├── compact_test.go │ │ ├── defrag_test.go │ │ ├── e2e_test.go │ │ ├── endpoint_test.go │ │ ├── grpc_test.go │ │ ├── hashkv_test.go │ │ ├── integration_test.go │ │ ├── kv_test.go │ │ ├── lease_test.go │ │ ├── main_test.go │ │ ├── maintenance_auth_test.go │ │ ├── member_test.go │ │ ├── role_test.go │ │ ├── status_test.go │ │ ├── txn_test.go │ │ ├── unit_test.go │ │ ├── user_test.go │ │ ├── wait_leader_test.go │ │ └── watch_test.go │ ├── e2e/ │ │ ├── cluster_downgrade_test.go │ │ ├── cmux_test.go │ │ ├── corrupt_test.go │ │ ├── ctl_v3_auth_cluster_test.go │ │ ├── ctl_v3_auth_no_proxy_test.go │ │ ├── ctl_v3_auth_security_test.go │ │ ├── ctl_v3_auth_test.go │ │ ├── ctl_v3_completion_test.go │ │ ├── ctl_v3_defrag_test.go │ │ ├── ctl_v3_elect_test.go │ │ ├── ctl_v3_kv_test.go │ │ ├── ctl_v3_lease_test.go │ │ ├── ctl_v3_lock_test.go │ │ ├── ctl_v3_make_mirror_test.go │ │ ├── ctl_v3_member_no_proxy_test.go │ │ ├── ctl_v3_member_test.go │ │ ├── ctl_v3_move_leader_test.go │ │ ├── ctl_v3_role_test.go │ │ ├── ctl_v3_snapshot_test.go │ │ ├── ctl_v3_test.go │ │ ├── ctl_v3_watch_test.go │ │ ├── defrag_no_space_test.go │ │ ├── discovery_v3_test.go │ │ ├── doc.go │ │ ├── etcd_config_test.go │ │ ├── etcd_grpcproxy_test.go │ │ ├── etcd_mix_versions_test.go │ │ ├── etcd_release_upgrade_test.go │ │ ├── failover_test.go │ │ ├── force_new_cluster_test.go │ │ ├── gateway_test.go │ │ ├── graceful_shutdown_test.go │ │ ├── http_health_check_test.go │ │ ├── leader_snapshot_no_proxy_test.go │ │ ├── logging_test.go │ │ ├── main_test.go │ │ ├── member_no_proxy_test.go │ │ ├── metrics_test.go │ │ ├── promote_experimental_flag_test.go │ │ ├── reproduce_17780_test.go │ │ ├── reproduce_18667_test.go │ │ ├── reproduce_19406_test.go │ │ ├── reproduce_20271_test.go │ │ ├── runtime_reconfiguration_test.go │ │ ├── utils.go │ │ ├── utl_migrate_test.go │ │ ├── v2store_deprecation_test.go │ │ ├── v3_cipher_suite_test.go │ │ ├── v3_curl_auth_test.go │ │ ├── v3_curl_cluster_test.go │ │ ├── v3_curl_election_test.go │ │ ├── v3_curl_kv_test.go │ │ ├── v3_curl_lease_test.go │ │ ├── v3_curl_lock_test.go │ │ ├── v3_curl_maintenance_test.go │ │ ├── v3_curl_maxstream_test.go │ │ ├── v3_curl_watch_test.go │ │ ├── v3_lease_no_proxy_test.go │ │ ├── watch_test.go │ │ └── zap_logging_test.go │ ├── fixtures/ │ │ ├── CommonName-root.crt │ │ ├── CommonName-root.key │ │ ├── ca-csr.json │ │ ├── ca.crt │ │ ├── client-ca-csr-nocn.json │ │ ├── client-clientusage.crt │ │ ├── client-clientusage.key.insecure │ │ ├── client-nocn.crt │ │ ├── client-nocn.key.insecure │ │ ├── ed25519-private-key.pem │ │ ├── ed25519-public-key.pem │ │ ├── gencert.json │ │ ├── gencerts.sh │ │ ├── revoke.crl │ │ ├── server-ca-csr-ecdsa.json │ │ ├── server-ca-csr-ip.json │ │ ├── server-ca-csr-ipv6.json │ │ ├── server-ca-csr-wildcard.json │ │ ├── server-ca-csr.json │ │ ├── server-ca-csr2.json │ │ ├── server-ca-csr3.json │ │ ├── server-ecdsa.crt │ │ ├── server-ecdsa.key.insecure │ │ ├── server-ip.crt │ │ ├── server-ip.key.insecure │ │ ├── server-ipv6.crt │ │ ├── server-ipv6.key.insecure │ │ ├── server-revoked.crt │ │ ├── server-revoked.key.insecure │ │ ├── server-serverusage.crt │ │ ├── server-serverusage.key.insecure │ │ ├── server-wildcard.crt │ │ ├── server-wildcard.key.insecure │ │ ├── server.crt │ │ ├── server.key.insecure │ │ ├── server2.crt │ │ ├── server2.key.insecure │ │ ├── server3.crt │ │ └── server3.key.insecure │ ├── framework/ │ │ ├── config/ │ │ │ ├── client.go │ │ │ └── cluster.go │ │ ├── e2e/ │ │ │ ├── cluster.go │ │ │ ├── cluster_direct.go │ │ │ ├── cluster_proxy.go │ │ │ ├── cluster_test.go │ │ │ ├── config.go │ │ │ ├── curl.go │ │ │ ├── downgrade.go │ │ │ ├── e2e.go │ │ │ ├── etcd_process.go │ │ │ ├── etcd_spawn.go │ │ │ ├── etcdctl.go │ │ │ ├── etcdctl_test.go │ │ │ ├── flags.go │ │ │ ├── lazyfs.go │ │ │ ├── metrics.go │ │ │ ├── testing.go │ │ │ └── util.go │ │ ├── integration/ │ │ │ ├── bridge.go │ │ │ ├── cluster.go │ │ │ ├── cluster_direct.go │ │ │ ├── cluster_proxy.go │ │ │ ├── config.go │ │ │ ├── integration.go │ │ │ └── testing.go │ │ ├── interfaces/ │ │ │ └── interface.go │ │ ├── testrunner.go │ │ ├── testutils/ │ │ │ ├── execute.go │ │ │ ├── helpters.go │ │ │ ├── log_observer.go │ │ │ ├── log_observer_test.go │ │ │ └── path.go │ │ └── unit/ │ │ └── unit.go │ ├── go.mod │ ├── go.sum │ ├── integration/ │ │ ├── cache_test.go │ │ ├── clientv3/ │ │ │ ├── cluster_test.go │ │ │ ├── concurrency/ │ │ │ │ ├── election_test.go │ │ │ │ ├── example_election_test.go │ │ │ │ ├── example_mutex_test.go │ │ │ │ ├── example_stm_test.go │ │ │ │ ├── main_test.go │ │ │ │ ├── mutex_test.go │ │ │ │ └── session_test.go │ │ │ ├── connectivity/ │ │ │ │ ├── black_hole_test.go │ │ │ │ ├── dial_test.go │ │ │ │ ├── doc.go │ │ │ │ ├── main_test.go │ │ │ │ ├── network_partition_test.go │ │ │ │ └── server_shutdown_test.go │ │ │ ├── doc.go │ │ │ ├── examples/ │ │ │ │ ├── example_auth_test.go │ │ │ │ ├── example_cluster_test.go │ │ │ │ ├── example_kv_test.go │ │ │ │ ├── example_lease_test.go │ │ │ │ ├── example_maintenance_test.go │ │ │ │ ├── example_metrics_test.go │ │ │ │ ├── example_test.go │ │ │ │ ├── example_watch_test.go │ │ │ │ └── main_test.go │ │ │ ├── experimental/ │ │ │ │ └── recipes/ │ │ │ │ ├── v3_barrier_test.go │ │ │ │ ├── v3_double_barrier_test.go │ │ │ │ ├── v3_lock_test.go │ │ │ │ └── v3_queue_test.go │ │ │ ├── kv_test.go │ │ │ ├── lease/ │ │ │ │ ├── doc.go │ │ │ │ ├── lease_test.go │ │ │ │ ├── leasing_test.go │ │ │ │ └── main_test.go │ │ │ ├── main_test.go │ │ │ ├── maintenance_test.go │ │ │ ├── metrics_test.go │ │ │ ├── mirror_auth_test.go │ │ │ ├── mirror_test.go │ │ │ ├── namespace_test.go │ │ │ ├── naming/ │ │ │ │ ├── endpoints_test.go │ │ │ │ ├── main_test.go │ │ │ │ └── resolver_test.go │ │ │ ├── ordering_kv_test.go │ │ │ ├── ordering_util_test.go │ │ │ ├── snapshot/ │ │ │ │ └── v3_snapshot_test.go │ │ │ ├── txn_test.go │ │ │ ├── user_test.go │ │ │ ├── util.go │ │ │ └── watch/ │ │ │ ├── v3_watch_restore_test.go │ │ │ ├── v3_watch_test.go │ │ │ ├── watch_fragment_test.go │ │ │ └── watch_test.go │ │ ├── cluster_test.go │ │ ├── corrupt_test.go │ │ ├── doc.go │ │ ├── embed/ │ │ │ ├── embed_proxy_test.go │ │ │ └── embed_test.go │ │ ├── fixtures-expired/ │ │ │ ├── README │ │ │ ├── ca-csr.json │ │ │ ├── ca.crt │ │ │ ├── gencert.json │ │ │ ├── gencerts.sh │ │ │ ├── server-ca-csr-ip.json │ │ │ ├── server-ca-csr.json │ │ │ ├── server-ip.crt │ │ │ ├── server-ip.key.insecure │ │ │ ├── server.crt │ │ │ └── server.key.insecure │ │ ├── lazy_cluster.go │ │ ├── main_test.go │ │ ├── member_test.go │ │ ├── metrics_test.go │ │ ├── network_partition_test.go │ │ ├── proxy/ │ │ │ └── grpcproxy/ │ │ │ ├── cluster_test.go │ │ │ ├── kv_test.go │ │ │ └── register_test.go │ │ ├── revision_test.go │ │ ├── snapshot/ │ │ │ ├── member_test.go │ │ │ └── v3_snapshot_test.go │ │ ├── testing_test.go │ │ ├── tracing_test.go │ │ ├── util_test.go │ │ ├── utl_wal_version_test.go │ │ ├── v2store/ │ │ │ ├── main_test.go │ │ │ ├── store_tag_test.go │ │ │ └── store_test.go │ │ ├── v3_alarm_test.go │ │ ├── v3_auth_test.go │ │ ├── v3_election_test.go │ │ ├── v3_failover_test.go │ │ ├── v3_grpc_inflight_test.go │ │ ├── v3_grpc_test.go │ │ ├── v3_kv_test.go │ │ ├── v3_leadership_test.go │ │ ├── v3_lease_test.go │ │ ├── v3_stm_test.go │ │ ├── v3_tls_test.go │ │ ├── v3election_grpc_test.go │ │ └── v3lock_grpc_test.go │ ├── robustness/ │ │ ├── Makefile │ │ ├── OWNERS │ │ ├── README.md │ │ ├── client/ │ │ │ ├── client.go │ │ │ ├── kvhash.go │ │ │ └── watch.go │ │ ├── coverage/ │ │ │ ├── README.md │ │ │ ├── apiserver-shared-conf/ │ │ │ │ └── tracing.yaml │ │ │ ├── collect_kind_traces.sh │ │ │ ├── contract_test.go │ │ │ ├── coverage_test.go │ │ │ ├── key_pattern_test.go │ │ │ ├── kind-with-tracing.yaml │ │ │ ├── matchers_test.go │ │ │ ├── patches/ │ │ │ │ └── kubernetes/ │ │ │ │ ├── 0001-Add-Open-Telemetry-trace-event-when-passing-through-.patch │ │ │ │ ├── 0002-Add-kubernetesEtcdContractTracker.patch │ │ │ │ ├── 0003-Add-1m-timeout-to-Watch-to-ensure-Spans-are-exported.patch │ │ │ │ └── 0004-Configure-cmd-tests.patch │ │ │ ├── sort_test.go │ │ │ └── testdata/ │ │ │ └── .gitignore │ │ ├── failpoint/ │ │ │ ├── cluster.go │ │ │ ├── failpoint.go │ │ │ ├── gofail.go │ │ │ ├── kill.go │ │ │ ├── network.go │ │ │ └── trigger.go │ │ ├── identity/ │ │ │ ├── id.go │ │ │ └── lease_ids.go │ │ ├── main_test.go │ │ ├── model/ │ │ │ ├── describe.go │ │ │ ├── describe_test.go │ │ │ ├── deterministic.go │ │ │ ├── deterministic_test.go │ │ │ ├── history.go │ │ │ ├── history_test.go │ │ │ ├── non_deterministic.go │ │ │ ├── non_deterministic_test.go │ │ │ ├── replay.go │ │ │ ├── types.go │ │ │ ├── types_test.go │ │ │ └── watch.go │ │ ├── options/ │ │ │ ├── cluster_options.go │ │ │ ├── cluster_options_test.go │ │ │ └── server_config_options.go │ │ ├── patches/ │ │ │ ├── beforeSendWatchResponse/ │ │ │ │ ├── build.patch │ │ │ │ └── watch.patch │ │ │ └── compactBeforeSetFinishedCompact/ │ │ │ └── kvstore_compaction.patch │ │ ├── random/ │ │ │ └── random.go │ │ ├── report/ │ │ │ ├── client.go │ │ │ ├── client_test.go │ │ │ ├── failpoint.go │ │ │ ├── report.go │ │ │ ├── wal.go │ │ │ └── wal_test.go │ │ ├── scenarios/ │ │ │ └── scenarios.go │ │ ├── testdata/ │ │ │ └── .gitignore │ │ ├── traffic/ │ │ │ ├── etcd.go │ │ │ ├── key_store.go │ │ │ ├── kubernetes.go │ │ │ ├── limiter.go │ │ │ ├── limiter_test.go │ │ │ └── traffic.go │ │ └── validate/ │ │ ├── operations.go │ │ ├── operations_test.go │ │ ├── patch_history.go │ │ ├── patch_history_test.go │ │ ├── result.go │ │ ├── validate.go │ │ ├── validate_test.go │ │ └── watch.go │ └── semaphore.test.bash └── tools/ ├── .golangci.yaml ├── .markdownlint.jsonc ├── .yamlfmt ├── .yamllint ├── OWNERS ├── benchmark/ │ ├── OWNERS │ ├── README.md │ ├── cmd/ │ │ ├── doc.go │ │ ├── lease.go │ │ ├── mvcc-put.go │ │ ├── mvcc.go │ │ ├── put.go │ │ ├── range.go │ │ ├── root.go │ │ ├── stm.go │ │ ├── txn_mixed.go │ │ ├── txn_put.go │ │ ├── util.go │ │ ├── watch.go │ │ ├── watch_get.go │ │ └── watch_latency.go │ ├── doc.go │ └── main.go ├── check-grpc-experimental/ │ ├── allowlist.txt │ ├── doc.go │ └── main.go ├── etcd-dump-db/ │ ├── OWNERS │ ├── README.md │ ├── backend.go │ ├── doc.go │ ├── main.go │ ├── meta.go │ ├── page.go │ ├── scan.go │ └── utils.go ├── etcd-dump-logs/ │ ├── OWNERS │ ├── README.md │ ├── doc.go │ ├── etcd-dump-log_test.go │ ├── expectedoutput/ │ │ ├── decoder_correctoutputformat.output │ │ ├── decoder_wrongoutputformat.output │ │ ├── listAll.output │ │ ├── listConfigChange.output │ │ ├── listConfigChangeIRRCompaction.output │ │ ├── listIRRCompaction.output │ │ ├── listIRRDeleteRange.output │ │ ├── listIRRLeaseGrant.output │ │ ├── listIRRLeaseRevoke.output │ │ ├── listIRRPut.output │ │ ├── listIRRRange.output │ │ ├── listIRRTxn.output │ │ ├── listInternalRaftRequest.output │ │ ├── listNormal.output │ │ └── listRequest.output │ ├── main.go │ ├── raw.go │ ├── raw_test.go │ └── testdecoder/ │ ├── decoder_correctoutputformat.sh │ └── decoder_wrongoutputformat.sh ├── etcd-dump-metrics/ │ ├── OWNERS │ ├── README.md │ ├── etcd.go │ ├── install_darwin.go │ ├── install_linux.go │ ├── install_windows.go │ ├── main.go │ ├── metrics.go │ └── utils.go ├── local-tester/ │ ├── OWNERS │ ├── Procfile │ ├── README.md │ ├── bridge/ │ │ ├── bridge.go │ │ └── dispatch.go │ ├── bridge.sh │ └── faults.sh ├── mod/ │ ├── doc.go │ ├── go.mod │ ├── go.sum │ ├── install_all.sh │ ├── libs.go │ └── tools.go ├── proto-annotations/ │ ├── cmd/ │ │ ├── etcd_version.go │ │ └── root.go │ └── main.go └── testgrid-analysis/ ├── OWNERS ├── cmd/ │ ├── data.go │ ├── flaky.go │ ├── github.go │ └── root.go ├── go.mod ├── go.sum └── main.go