injectHeartbeat writing failed on teardown
- Ngôn ngữ chính
- Go
- Star
- 13.6k
- Fork
- 1.4k
- Merge trung bình
- 2 giờ 31 phút
- Pull request đã merge (30 ngày)
- 4
Mô tả
Hi all!
Environment:
Azure Mysql Flexible Sever, 8.0.44-azure
gh-ost 1.1.8
We have an instance with a number of partitioned tables and a large schema metadata. With this setup, the dry run check fails with the following errors (from the first to the last):
```code
Closed streamer connection. err=
Dropping table `_ghc`
Table dropped
Error 1146 (42S02): Table '_ghc' doesn't exist
...
Error 1146 (42S02): Table '_ghc' doesn't exist
...
injectHeartbeat writing failed 61 times, last error: Error 1146 (42S02): Table '_ghc' doesn't exist
```
It appears that on slow disks/thousands of tables, [finalCleanup](https://github.com/github/gh-ost/blob/v1.1.8/go/logic/migrator.go#L1723) is executed too early and drops the table before [teardown](https://github.com/github/gh-ost/blob/v1.1.8/go/logic/migrator.go#L373) (where injectHeartbeat actually stops). And deleting a '_ghc' table takes longer than `default-retries` (60) * `heartbeat-interval-millis` (100 ms).
Currently, this can be fixed by increasing `default-retries` or `heartbeat-interval-millis` (or both), but this seems like a workaround.
Is it possible to fix the order of execution?
Thanks in advance!
Hướng dẫn đóng góp
Hướng nghiên cứu
Bắt đầu trong go/logic/migrator.go tại finalCleanup và teardown, sau đó lần theo nơi injectHeartbeat được dừng trong luồng dry-run. Tái hiện với thao tác dọn dẹp chậm hoặc schema lớn và xác minh rằng các lần ghi heartbeat dừng trước khi bảng _ghc bị xóa, không xuất hiện các lỗi teardown đã được báo cáo.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- go, mysql
- Lĩnh vực
- database
- Loại issue
- Lỗi
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức độ hoạt động
- Ít trao đổi
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức phù hợp với người mới
- 58/100