Skip to content

[Bug]: CDC server panic with error runtime error: invalid memory address or nil pointer dereference #5

@zhuwenxing

Description

@zhuwenxing

Current Behavior

2023/04/07 19:37:07 http: panic serving [::1]:53190: runtime error: invalid memory address or nil pointer dereference
goroutine 5820 [running]:
net/http.(*conn).serve.func1()
        /usr/local/Cellar/go/1.20.1/libexec/src/net/http/server.go:1854 +0xbf
panic({0x10119c600, 0x101e72ce0})
        /usr/local/Cellar/go/1.20.1/libexec/src/runtime/panic.go:890 +0x263
github.com/zilliztech/milvus-cdc/server.(*ServerError).Error(0xc00110a680?)
        /Users/zilliz/workspace/milvus-cdc/server/error.go:47 +0x1b
github.com/milvus-io/milvus/pkg/log.(*textEncoder).encodeError(0xc002528500, {{0x10133ae55, 0x5}, 0x1a, 0x0, {0x0, 0x0}, {0x1011a6b00, 0xc001639c10}})
        /Users/zilliz/go/pkg/mod/github.com/jaime0815/milvus/pkg@v0.0.0-20230306083504-7b3f06609d62/log/zap_text_encoder.go:648 +0xa2
github.com/milvus-io/milvus/pkg/log.(*textEncoder).addFields(0xc002528500, {0xc00057cd80?, 0x2, 0x35?})
        /Users/zilliz/go/pkg/mod/github.com/jaime0815/milvus/pkg@v0.0.0-20230306083504-7b3f06609d62/log/zap_text_encoder.go:637 +0x2ac
github.com/milvus-io/milvus/pkg/log.(*textEncoder).EncodeEntry(0xc00002fa00, {0x1, {0xc1041df8c6d24eb0, 0xcb1eb4cbb07, 0x101e9fb20}, {0x0, 0x0}, {0x101351a5b, 0x17}, {0x1, ...}, ...}, ...)
        /Users/zilliz/go/pkg/mod/github.com/jaime0815/milvus/pkg@v0.0.0-20230306083504-7b3f06609d62/log/zap_text_encoder.go:467 +0xab8
github.com/milvus-io/milvus/pkg/log.(*textIOCore).Write(0xc00007c990, {0x1, {0xc1041df8c6d24eb0, 0xcb1eb4cbb07, 0x101e9fb20}, {0x0, 0x0}, {0x101351a5b, 0x17}, {0x1, ...}, ...}, ...)
        /Users/zilliz/go/pkg/mod/github.com/jaime0815/milvus/pkg@v0.0.0-20230306083504-7b3f06609d62/log/zap_text_core.go:63 +0x7c
go.uber.org/zap/zapcore.(*CheckedEntry).Write(0xc00023f080, {0xc00057cd80, 0x2, 0x2})
        /Users/zilliz/go/pkg/mod/go.uber.org/zap@v1.21.0/zapcore/entry.go:220 +0x1d9
go.uber.org/zap.(*Logger).Warn(0x101339a80?, {0x101351a5b?, 0x1010ff480?}, {0xc00057cd80, 0x2, 0x2})
        /Users/zilliz/go/pkg/mod/go.uber.org/zap@v1.21.0/logger.go:200 +0x59
github.com/zilliztech/milvus-cdc/server.(*MetaCDC).Create.func1()
        /Users/zilliz/workspace/milvus-cdc/server/cdc_impl.go:125 +0x268
github.com/zilliztech/milvus-cdc/server.(*MetaCDC).Create(0xc00052c360, 0xc00142d880)
        /Users/zilliz/workspace/milvus-cdc/server/cdc_impl.go:187 +0x7eb
github.com/zilliztech/milvus-cdc/server.init.0.func2({0x1014fcb90?, 0xc00052c360?}, {0x1010ff480?, 0xc00142d880?})
        /Users/zilliz/workspace/milvus-cdc/server/handle_map.go:45 +0x44
github.com/zilliztech/milvus-cdc/server.(*CDCServer).handleRequest(0xc000506450, 0xc000a9a240, {0x1014f31c0, 0xc00128bb20})
        /Users/zilliz/workspace/milvus-cdc/server/server.go:103 +0x1a3
github.com/zilliztech/milvus-cdc/server.(*CDCServer).getCDCHandler.func1({0x1014f31c0?, 0xc00128bb20}, 0xc0009c3f00)
        /Users/zilliz/workspace/milvus-cdc/server/server.go:75 +0x4e5
net/http.HandlerFunc.ServeHTTP(0xc00128bb20?, {0x1014f31c0?, 0xc00128bb20?}, 0x10006f6e0?)
        /usr/local/Cellar/go/1.20.1/libexec/src/net/http/server.go:2122 +0x2f
net/http.(*ServeMux).ServeHTTP(0x0?, {0x1014f31c0, 0xc00128bb20}, 0xc0009c3f00)
        /usr/local/Cellar/go/1.20.1/libexec/src/net/http/server.go:2500 +0x149
net/http.serverHandler.ServeHTTP({0x1014eabf8?}, {0x1014f31c0, 0xc00128bb20}, 0xc0009c3f00)
        /usr/local/Cellar/go/1.20.1/libexec/src/net/http/server.go:2936 +0x316
net/http.(*conn).serve(0xc001a3aea0, {0x1014f3df8, 0xc0005d7e60})
        /usr/local/Cellar/go/1.20.1/libexec/src/net/http/server.go:1995 +0x612
created by net/http.(*Server).Serve
        /usr/local/Cellar/go/1.20.1/libexec/src/net/http/server.go:3089 +0x5ed

Expected Behavior

No response

Steps To Reproduce

keep creating tasks

    def test_cdc_for_cdc_task_by_max(self, upstream_host, upstream_port, downstream_host, downstream_port ):
        max_task = 100
        res, result = client.list_tasks()
        assert result
        log.info(f"list tasks response: {res}")
        num_tasks = len(res["tasks"])
        log.info(f"num_tasks: {num_tasks}")
        assert num_tasks <= max_task
        
        available_task = max_task - num_tasks
        for i in range(available_task):
            time.sleep(0.01)
            c_name = prefix + datetime.now().strftime('%Y_%m_%d_%H_%M_%S_%f')
            c_infos = [
                {"name": c_name}
            ]
            request_data = {
                "milvus_connect_param": {
                    "host": downstream_host,
                    "port": int(downstream_port),
                    "username": "",
                    "password": "",
                    "enable_tls": False,
                    "ignore_partition": False,
                    "connect_timeout": 10
                },
                "collection_infos": c_infos
            }
            rsp, result = client.create_task(request_data)
            assert result
            log.info(f"create task response: {rsp}")
            task_id = rsp['task_id']
            log.info(f"task_id: {task_id}")
        # check the number of tasks
        res, result = client.list_tasks()
        assert result
        log.info(f"list tasks response: {res}")
        num_tasks = len(res["tasks"])
        log.info(f"num_tasks: {num_tasks}")


### Environment

_No response_

### Anything else?

_No response_

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions