Skip to content

Commit

Permalink
Avoid Clear All Callback Segments
Browse files Browse the repository at this point in the history
  • Loading branch information
tung.tq committed Oct 12, 2023
1 parent 77fb3db commit 0e1fc26
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 5 deletions.
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ module github.com/QuangTung97/memproxy
go 1.19

require (
github.com/QuangTung97/go-memcache v1.1.1-0.20231010112106-2412156d4079
github.com/QuangTung97/go-memcache v1.2.0
github.com/google/btree v1.1.2
github.com/matryer/moq v0.3.0
github.com/mgechev/revive v1.3.1
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak
github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
github.com/GoogleCloudPlatform/cloudsql-proxy v0.0.0-20190129172621-c8b1d7a94ddf/go.mod h1:aJ4qN3TfrelA6NZ6AXsXRfmEVaYin3EDbSPJrKS8OXo=
github.com/QuangTung97/go-memcache v1.1.1-0.20231010112106-2412156d4079 h1:lKKBIf2sFHHnlyGhd2E1pr4rEbjjhQB5wso6Eb+TwuM=
github.com/QuangTung97/go-memcache v1.1.1-0.20231010112106-2412156d4079/go.mod h1:bInH+oopFx83sRE0DaLVuXc6t3c6DsapM3Y7B7IUpOg=
github.com/QuangTung97/go-memcache v1.2.0 h1:LePkaWc4iGil1EzT/c7XzgAXo+sGiGfXoWA5o572+0U=
github.com/QuangTung97/go-memcache v1.2.0/go.mod h1:bInH+oopFx83sRE0DaLVuXc6t3c6DsapM3Y7B7IUpOg=
github.com/aclements/go-gg v0.0.0-20170118225347-6dbb4e4fefb0/go.mod h1:55qNq4vcpkIuHowELi5C8e+1yUHtoLoOUR9QU5j7Tes=
github.com/aclements/go-moremath v0.0.0-20210112150236-f10218a38794 h1:xlwdaKcTNVW4PtpQb8aKA4Pjy0CdJHEqvFbAnvR5m2g=
github.com/aclements/go-moremath v0.0.0-20210112150236-f10218a38794/go.mod h1:7e+I0LQFUI9AXWxOfsQROs9xPhoJtbsyWcjJqDd4KPY=
Expand Down
6 changes: 5 additions & 1 deletion session.go
Original file line number Diff line number Diff line change
Expand Up @@ -270,6 +270,10 @@ func getCallbackSegment() *callbackSegment {
}

func putCallbackSegment(s *callbackSegment) {
*s = callbackSegment{}
s.next = nil
for i := 0; i < s.size; i++ {
s.funcs[i] = CallbackFunc{}
}
s.size = 0
callbackSegmentPool.Put(s)
}
20 changes: 19 additions & 1 deletion session_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -804,15 +804,33 @@ func TestCallbackSegment(t *testing.T) {
func TestCallbackSegmentPool(t *testing.T) {
t.Run("normal", func(t *testing.T) {
x := getCallbackSegment()
x.size = 14
x.size = 3
x.next = x

num1 := 10
num2 := 10

x.funcs[0] = CallbackFunc{
Object: unsafe.Pointer(&num1),
}
x.funcs[2] = CallbackFunc{
Object: unsafe.Pointer(&num2),
}
x.funcs[3] = CallbackFunc{
Object: unsafe.Pointer(&num2),
}

oldPtr := unsafe.Pointer(x)

putCallbackSegment(x)

x = getCallbackSegment()
assert.Equal(t, 0, x.size)
assert.Nil(t, x.next)
assert.Nil(t, x.funcs[0].Object)
assert.Nil(t, x.funcs[2].Object)

fmt.Println("POINTERS EQUAL:", oldPtr == unsafe.Pointer(x))
fmt.Println("SHOULD NOT NIL:", x.funcs[3].Object)
})
}

0 comments on commit 0e1fc26

Please sign in to comment.