github.com/pingcap/tiflow@v0.0.0-20240520035814-5bf52d54e205/pkg/txnutil/gc/doc.go (about) 1 // Copyright 2021 PingCAP, Inc. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // See the License for the specific language governing permissions and 12 // limitations under the License. 13 14 // Package gc privodes TiDB GC related utilities. 15 // 16 // Following graph shows how TiCDC manipulates GC safepoints. 17 // 18 // ``` 19 // 20 // ┌───┐ ┌───┐ ┌──┐ ┌─────┐ 21 // │CLI│ │API│ │PD│ │Owner│ 22 // └─┬─┘ └─┬─┘ └┬─┘ └──┬──┘ 23 // │ │ │ │ 24 // ╔═══════════╪═════╤════════╪═════════════╪════════════════════════╪════════════╗ 25 // ║ "CLI OR API?" │ CLI │ │ │ ║ 26 // ╟─────────────────┘ │ │ │ ║ 27 // ║ │ service GC safepoint │ │ ║ 28 // ║ │ "cdc-creating-<ID>" │ │ ║ 29 // ║ │──────────────────────────>┌┴┐ │ ║ 30 // ║ │ │ │ │ │ ║ 31 // ║ │ Create changefeed │ │ │ ║ 32 // ║ │──────────────────────────>│ │ │ ║ 33 // ╠═══════════╪══════════════╪════════════╪═╪═══════════════════════╪════════════╣ 34 // ║ API │ │ │ │ │ ║ 35 // ║ │ │ Create changefeed API │ ║ 36 // ║ │ │─────────────────────────────────────>│ ║ 37 // ║ │ │ │ │ │ ║ 38 // ║ │ │ │ │ service GC safepoint│ ║ 39 // ║ │ │ │ │ "cdc-creating-<ID>" │ ║ 40 // ║ │ │ │ ┌─┐ <──────────────────── ║ 41 // ║ │ │ │ │ │ │ ║ 42 // ║ │ │ │ │ │ Create changefeed │ ║ 43 // ║ │ │ │ │ │ <──────────────────── ║ 44 // ╚═══════════╪══════════════╪════════════╪═╪═╪═════════════════════╪════════════╝ 45 // │ │ │ │ │ │ 46 // │ │ │ │ │ │ ╔═════════════════╗ 47 // │ │ │ │ │ GC safepoint "ticdc"│ ║using the minimal║ 48 // │ │ │ │ │ <──────────────────── ║checkpoint among ║ 49 // │ │ │ │ │ │ ║all changefeeds ║ 50 // │ │ │ │ │ │ ╚═════════════════╝ 51 // │ │ │ │ │Remove GC safepoint │ 52 // │ │ │ │ │"cdc-creating-<ID>" │ 53 // │ │ └┬└─┘ <──────────────────── 54 // │ │ │ │ 55 // │ │ │ │────┐ 56 // │ │ │ │ │ Start changefeed 57 // │ │ │ │<───┘ 58 // ┌─┴─┐ ┌─┴─┐ ┌┴─┐ ┌──┴──┐ 59 // │CLI│ │API│ │PD│ │Owner│ 60 // └───┘ └───┘ └──┘ └─────┘ 61 // 62 // ``` 63 // 64 // When CLI/API creates a changefeed, it registers a service GC safepoint 65 // "ticdc-creating-<ID>" to cover the gap between creating changefeed and 66 // handling changefeed. 67 // 68 // TiCDC Owner removes the service GC safepoint after new changefeed checkpoint 69 // is included in the "ticdc" service GC safepoint. 70 package gc