# [Know Issue]关于 TiDB-Binlog Pump 或 Drainer 日志无报错异常重启

## Key Words

重启,Pump,Drainer,invalid memory address,data race,panic

## Description

1. TiDB-Binlog Pump 或 Drainer 日志无报错异常重启。
2. 排查操作系统日志，dmesg -T 和 /var/log/message 没有发现 Pump 或 Drainer oom 的记录。

## Root Cause

1. 该问题是由于 TiDB-Binlog 需要通过 client-go 库与 TiKV 进行交互，而该库存在数据争用 BUG[(详情见 Issue)](https://github.com/pingcap/tidb/issues/33773),导致 TiDB-Binlog 组件 panic [(对应 TiDB-Binlog Issue)](https://github.com/pingcap/tidb-binlog/issues/1170)，随后被 service 服务重启。
2. 因为 Pump 和 Drainer 共用一份库依赖，所以两个组件均存在该问题。

## Diagnostic Steps

查看 TiDB-Binlog 对应组件的 error log，观察是否存在下述类似堆栈信息，即：```invalid memory address or nil pointer dereference``` 及 ```github.com/tikv/client-go/v2@v2.0.1-0.20220311043619-5042c6f2aaa6```。

```go
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x2b0 pc=0x1d18be6]

goroutine 265296850 [running]:
[google.golang.org/grpc.(*ClientConn).GetState(...)](http://google.golang.org/grpc.(*ClientConn).GetState(...))
        /root/go/pkg/mod/[google.golang.org/grpc@v1.44.0/clientconn.go:527](http://google.golang.org/grpc@v1.44.0/clientconn.go:527)
[github.com/tikv/client-go/v2/internal/client.(*RPCClient).SendRequest](http://github.com/tikv/client-go/v2/internal/client.(*RPCClient).SendRequest)(0xc009596680, {0x4023728, 0xc018232b80}, {0xc00d9b80d8, 0x11}, 0xc005a0f680, 0x6fc23ac00?)
        /root/go/pkg/mod/[github.com/tikv/client-go/v2@v2.0.1-0.20220311043619-5042c6f2aaa6/internal/client/client.go:410](http://github.com/tikv/client-go/v2@v2.0.1-0.20220311043619-5042c6f2aaa6/internal/client/client.go:410) +0x666
[github.com/tikv/client-go/v2/internal/client.interceptedClient.SendRequest](http://github.com/tikv/client-go/v2/internal/client.interceptedClient.SendRequest)({{0x4013b98?, 0xc009596680?}}, {0x4023728, 0xc018232b80}, {0xc00d9b80d8, 0x11}, 0x18bf128?, 0x6fc23ac00)
        /root/go/pkg/mod/[github.com/tikv/client-go/v2@v2.0.1-0.20220311043619-5042c6f2aaa6/internal/client/client_interceptor.go:42](http://github.com/tikv/client-go/v2@v2.0.1-0.20220311043619-5042c6f2aaa6/internal/client/client_interceptor.go:42) +0x186
[github.com/tikv/client-go/v2/internal/client.reqCollapse.SendRequest](http://github.com/tikv/client-go/v2/internal/client.reqCollapse.SendRequest)({{0x4015b50?, 0xc0115a4c30?}}, {0x4023728, 0xc018232b80}, {0xc00d9b80d8, 0x11}, 0x397d300?, 0x7f76d4b0a101?)
        /root/go/pkg/mod/[github.com/tikv/client-go/v2@v2.0.1-0.20220311043619-5042c6f2aaa6/internal/client/client_collapse.go:74](http://github.com/tikv/client-go/v2@v2.0.1-0.20220311043619-5042c6f2aaa6/internal/client/client_collapse.go:74) +0xd6
[github.com/tikv/client-go/v2/tikv.(*KVStore).updateSafeTS.func1](http://github.com/tikv/client-go/v2/tikv.(*KVStore).updateSafeTS.func1)({0x4023728, 0xc018232b80}, 0xc0057086c0?, 0x2a, {0xc00d9b80d8, 0x11})
        /root/go/pkg/mod/[github.com/tikv/client-go/v2@v2.0.1-0.20220311043619-5042c6f2aaa6/tikv/kv.go:540](http://github.com/tikv/client-go/v2@v2.0.1-0.20220311043619-5042c6f2aaa6/tikv/kv.go:540) +0x195
created by [github.com/tikv/client-go/v2/tikv.(*KVStore).updateSafeTS](http://github.com/tikv/client-go/v2/tikv.(*KVStore).updateSafeTS)
        /root/go/pkg/mod/[github.com/tikv/client-go/v2@v2.0.1-0.20220311043619-5042c6f2aaa6/tikv/kv.go:538](http://github.com/tikv/client-go/v2@v2.0.1-0.20220311043619-5042c6f2aaa6/tikv/kv.go:538) +0x87
```

## Resolution

升级 TiDB-Binlog 至 v6.2.0 及之后的版本

## Affected Versions

v6.1.0～v6.1.3
