| commitForTxn() |  | 0% |  | 0% | 4 | 4 | 22 | 22 | 1 | 1 |
| executeOneBatch(Events) |   | 61% |   | 37% | 11 | 13 | 20 | 46 | 0 | 1 |
| put(Message, int) |   | 52% |   | 31% | 7 | 9 | 16 | 36 | 0 | 1 |
| processDDL(CanalEntry.Header, CanalEntry.EventType, String) |  | 0% |  | 0% | 8 | 8 | 18 | 18 | 1 | 1 |
| getPositionInfo() |   | 31% |   | 25% | 2 | 3 | 12 | 18 | 0 | 1 |
| ack() |  | 0% |  | 0% | 3 | 3 | 11 | 11 | 1 | 1 |
| process() |   | 71% |   | 55% | 7 | 11 | 14 | 44 | 0 | 1 |
| abortForTxn(Collection, String) |   | 56% |   | 75% | 1 | 3 | 5 | 11 | 0 | 1 |
| cleanUp() |  | 0% | | n/a | 1 | 1 | 4 | 4 | 1 | 1 |
| stop(boolean) |  | 0% |  | 0% | 2 | 2 | 4 | 4 | 1 | 1 |
| waitForTxn() |   | 84% |  | 100% | 0 | 2 | 2 | 10 | 0 | 1 |
| rollback() |  | 96% |  | 100% | 0 | 2 | 1 | 11 | 0 | 1 |
| CanalSyncDataConsumer(CanalSyncJob, CanalConnector, ReentrantLock, boolean) |  | 100% | | n/a | 0 | 1 | 0 | 11 | 0 | 1 |
| beginForTxn() |  | 100% |  | 100% | 0 | 2 | 0 | 6 | 0 | 1 |
| setChannels(Map) |  | 100% |  | 100% | 0 | 2 | 0 | 6 | 0 | 1 |
| cleanForTxn() |  | 100% |   | 75% | 1 | 3 | 0 | 5 | 0 | 1 |
| static {...} |  | 100% | | n/a | 0 | 1 | 0 | 4 | 0 | 1 |
| abortForTxn(String) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| holdGetLock() |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| releaseGetLock() |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |