ahrtr
Repos
37
Followers
50

Implements some containers (stack, queue, priorityQueue, set, arrayList, linkedList, map and btree) in golang

41
6

Analysis of various etcd issues

20
5

Events

add a comment

Signed-off-by: Benjamin Wang benjamin.ahrtr@gmail.com

Created at 2 hours ago
pull request reopened
test pr

test golangci

Created at 2 hours ago
pull request closed
test

just a test

Created at 2 hours ago
pull request reopened
test

just a test

Created at 2 hours ago
issue comment
raft: decouple raft release from etcd release

Update: the new repo raft is already created, and raised the first PR https://github.com/etcd-io/raft/pull/1 .

Created at 2 hours ago
opened issue
Implement a self-contained raft example

Refer to raftexample . But this example should NOT depend on etcd at all.

cc @Elbehery

Created at 2 hours ago
issue comment
Refactoring on raft

Please review this PR commit by commit. The last commit (setting up github workflow) is basically coming from etcd.

cc @ptabor @serathius @spzala @tbg

Created at 2 hours ago
pull request opened
Refactoring on raft
  1. Renamed module name from go.etcd.io/etcd/raft to go.etcd.io/raft;
  2. Updated the OWNER file;
  3. Added .gitignore file;
  4. Setup initial github workflow
Created at 3 hours ago
create branch
ahrtr create branch rename_module_20221128
Created at 3 hours ago
fork
Created at 5 hours ago
create branch
ahrtr create branch main
Created at 5 hours ago
create repository
ahrtr create repository
Created at 6 hours ago
push

client/pkg/transport: deflake TestWriteReadTimeoutListener

There is data race on stop channel. After verify write-timeout successfully, the case won't wait for blocker to receive close signal from stop channel. If the new blocker, which is to read-timeout verifier, get dial's result immediately, the new blocker might fetch the message from stop channel before old one and then close the connection, which causes that the conn.Read returns EOF when it reads data.

How to reproduce this in linux devbox?

Use taskset to limit the test process in one-cpu.

cd ./client/pkg/transport
go test -c -o /tmp/test --race=true ./
taskset -c 0 /tmp/test -test.run TestWriteReadTimeoutListener -test.v -test.cpu 4 -test.count=10000 -test.failfast

To fix this, suggest to use seperate stop channel to prevent from data race.

Signed-off-by: Wei Fu fuweid89@gmail.com

client/pkg/transport: fix typo in _test.go

Signed-off-by: Wei Fu fuweid89@gmail.com

tests: Cleanup gofail

Signed-off-by: Marek Siarkowicz siarkowicz@google.com

Merge pull request #14861 from fuweid/deflake-transport-timeout-case

Deflake transport timeout case

Merge pull request #14859 from serathius/gofail-cleanup

tests: Cleanup gofail

Created at 6 hours ago
issue comment
Remove path from gofailpoints

For anyone information... all the existing failpoints are as below,

$ curl -L http://localhost:22381
backend/afterCommit=
backend/afterStartDBTxn=
backend/afterWritebackBuf=
backend/beforeCommit=
backend/beforeStartDBTxn=
backend/beforeWritebackBuf=
backend/commitAfterPreCommitHook=
backend/commitBeforePreCommitHook=
backend/defragBeforeCopy=
backend/defragBeforeRename=
etcdserver/raftAfterApplySnap=
etcdserver/raftAfterSave=
etcdserver/raftAfterSaveSnap=
etcdserver/raftAfterWALRelease=
etcdserver/raftBeforeApplySnap=
etcdserver/raftBeforeFollowerSend=
etcdserver/raftBeforeLeaderSend=
etcdserver/raftBeforeSave=
etcdserver/raftBeforeSaveSnap=
mvcc/compactAfterCommitBatch=
mvcc/compactAfterCommitScheduledCompact=
mvcc/compactAfterSetFinishedCompact=
mvcc/compactBeforeCommitBatch=
mvcc/compactBeforeCommitScheduledCompact=
mvcc/compactBeforeSetFinishedCompact=

Three proposals.

1. Remove the package

It will look like below.

$ curl -L http://localhost:22381
afterCommit=
afterStartDBTxn=
afterWritebackBuf=
...

It looks concise and consistent across releases, but obviously it isn't clear which package each failpoint belong to based on the output.

2. Keep the packge

It will look like below,

$ curl -L http://localhost:22381
go.etcd.io/etcd/server/v3/storage/backend/afterCommit=
go.etcd.io/etcd/server/v3/storage/backend/afterStartDBTxn=
go.etcd.io/etcd/server/v3/storage/backend/afterWritebackBuf=
...

It's clearer. Of course, different releases have different package structures, but it seems not a big problem.

Usually we don't change the package structures frequently, and it makes sense to update the test case (e.g. linearizablity) when we change the package structure. We can change the test implementation to make the impact minimum.

There are 25 failpoints for now, it seems it isn't too much effort to maintain different failpoints for different releases(3.5 and probably 3.4).

3. Keep the base directory name

It will look like below. It's actually the current behavior, but the code has bug. We need to fix it and make it explicit. This is a compromised solution. Usually we can tell the package by the directory name.

$ curl -L http://localhost:22381
backend/afterCommit=
backend/afterStartDBTxn=
backend/afterWritebackBuf=
...

Personally I prefer to # 2, and fallback to # 3.

Created at 7 hours ago

remove Release() method

Signed-off-by: Benjamin Wang wachao@vmware.com

Merge pull request #43 from ahrtr/remove_release_20221127

remove Release() method

Created at 8 hours ago
pull request closed
remove Release() method

Signed-off-by: Benjamin Wang wachao@vmware.com

The (*Failpoint) Release() isn't needed any more. So remove it.

cc @serathius @spzala

Created at 8 hours ago
issue comment
raft: decouple raft release from etcd release

All the feedback we got so far is positive, so I will kick off the migration process per https://github.com/etcd-io/etcd/issues/14713#issuecomment-1320385870 in the following week. Please let me know if anyone has any concern.

Created at 19 hours ago
issue comment
Remove path from gofailpoints

I tend to keep the package path. It's clearer which package each failpoint belongs to, and Users can define duplicated failpoints in different packages.

There is already an issue , and already a PR for it.

Created at 20 hours ago
issue comment
code: use reflection to obtain the package path

Please anyone feel free to resurrect this PR.

Created at 20 hours ago
issue comment
Failed to determine package path when source file is not inside GOPATH

I would like to survive the related PR https://github.com/etcd-io/gofail/pull/18. Please anyone feel free to work on it.

Created at 20 hours ago
issue comment
remove Release() method

cc @ptabor

Created at 21 hours ago
pull request opened
remove Release() method

Signed-off-by: Benjamin Wang wachao@vmware.com

The (*Failpoint) Release() isn't needed any more. So remove it.

cc @serathius @spzala

Created at 21 hours ago
create branch
ahrtr create branch remove_release_20221127
Created at 21 hours ago
issue comment
Trigger release in current branch for github workflow case

cc @serathius

Created at 1 day ago
push

release: support kick off release in current branch

When triggering release process in github workflow, then always run it in current branch, so that any changes in current branch are included.

When manually triggering release, always pull remote repo and checkout main branch.

Signed-off-by: Benjamin Wang wachao@vmware.com

Created at 1 day ago
push

release: support kick off release in current branch

When triggering release process in github workflow, then always run it in current branch, so that any changes in current branch are included.

When manually triggering release, always pull remote repo and checkout main branch.

Signed-off-by: Benjamin Wang wachao@vmware.com

Created at 1 day ago
push

release: support kick off release in current branch

When triggering release process in github workflow, then always run it in current branch, so that any changes in current branch are included.

When manually triggering release, always pull remote repo and checkout main branch.

Signed-off-by: Benjamin Wang wachao@vmware.com

Created at 1 day ago
push

release: support kick off release in current branch

When triggering release process in github workflow, then always run it in current branch, so that any changes in current branch are included.

When manually triggering release, always pull remote repo and checkout main branch.

Signed-off-by: Benjamin Wang wachao@vmware.com

Created at 1 day ago