mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-10-22 03:42:32 +00:00
* fix(flow): retain tracked write completion across transient failures Use receiver-issued single-write capabilities at the frontend and datanode. Rejoin exact admitted writes across unknown transport outcomes, then close and drain before allowing subsequent rounds. Keep ordinary clients and reads on their existing paths. Separate schema map equality from encoded row identity so fresh protobuf decodes replay consistently even with NaN values. Cover receiver admission, owner cancellation, all-child drain, and retired capabilities. Local feature-worktree checkpoint only. Main verified core enterprise check and 484 tests, plus DN enterprise check and all four tracked owner tests. Corrected seven-case timer acceptance remains to be rerun; this checkpoint does not authorize publishing or integration. Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com> * fix(flow): preserve upstream dependencies after rebase Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com> * fix(flow): fail fast on definitive tracked-write open rejection A tracked write treats every application-level error from the frontend as an ambiguous transport failure and retries the same pinned frontend forever. During a rolling upgrade an older frontend does not recognize the tracked-write command extension and processes Open as an ordinary empty SQL query, rejecting it with InvalidSql (InvalidArguments); a non-internal endpoint rejects the extension outright. Both are definitive rejections that no same-frontend retry can ever resolve, so the flow stalls. Classify the Open-phase errors by status code: a definitive rejection (Unsupported / InvalidArguments / PermissionDenied) fails fast with a terminal pre-write error, while genuinely ambiguous transport failures (Unavailable, timeout, connection reset, ...) keep the same-capability retry. Write/Close rejections are deliberately NOT failed fast: once a write may have been admitted, a same-code rejection (e.g. WriterLost, or UnknownCapability after a VIP moved Open->A/Write->B) leaves the outcome ambiguous, and failing fast would let the caller replay and duplicate rows. Add a regression test that a legacy empty-SQL Open rejection fails fast with a single attempt and surfaces as Error::External carrying a TerminalError. Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com> * fix(flow): preflight tracked writes without submitting data Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com> * test(flow): retain tracked command extensions while decoding Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com> --------- Signed-off-by: discord9 <55937128+discord9@users.noreply.github.com>
43 lines
1.9 KiB
TOML
43 lines
1.9 KiB
TOML
# License-header config for GreptimeDB Enterprise Edition source files.
|
|
#
|
|
# These files are commercially licensed under the GreptimeDB Enterprise License
|
|
# (see /LICENSE-ENTERPRISE), NOT Apache-2.0. They are kept out of the main
|
|
# Apache-2.0 header check in `licenserc.toml` (listed under its `excludes`) and
|
|
# are instead enforced here. Run with:
|
|
#
|
|
# hawkeye check --config licenserc-enterprise.toml
|
|
# hawkeye format --config licenserc-enterprise.toml # to apply/fix headers
|
|
|
|
headerPath = "licenses/enterprise-header.txt"
|
|
|
|
# Only the enterprise-gated sources: every file reachable solely through
|
|
# `#[cfg(feature = "enterprise")] mod ...;` belongs here. Keep this list in sync
|
|
# with the "# enterprise" block in `licenserc.toml`'s `excludes` — both are
|
|
# enforced by `make check-enterprise-license`.
|
|
includes = [
|
|
"src/common/grpc/src/flow_write.rs",
|
|
"src/frontend/src/instance/flow_write.rs",
|
|
"src/datanode/src/region_server/flow_write.rs",
|
|
"src/operator/src/insert/flow_write.rs",
|
|
"src/flow/src/batching_mode/frontend_client/flow_write.rs",
|
|
"src/common/meta/src/rpc/ddl/trigger.rs",
|
|
"src/operator/src/expr_helper/trigger.rs",
|
|
"src/sql/src/statements/alter/trigger.rs",
|
|
"src/sql/src/statements/create/trigger.rs",
|
|
"src/sql/src/statements/show/trigger.rs",
|
|
"src/sql/src/statements/drop/trigger.rs",
|
|
"src/sql/src/parsers/alter_parser/trigger.rs",
|
|
"src/sql/src/parsers/create_parser/trigger.rs",
|
|
"src/sql/src/parsers/show_parser/trigger.rs",
|
|
"src/mito2/src/extension.rs",
|
|
"src/common/function/src/admin/purge_table.rs",
|
|
"src/catalog/src/system_schema/information_schema/recycle_bin.rs",
|
|
"src/common/meta/src/ddl/purge_dropped_table.rs",
|
|
"src/common/meta/src/ddl/undrop_table.rs",
|
|
"src/catalog/src/system_schema/information_schema/recycle_bin_test.rs",
|
|
]
|
|
|
|
[properties]
|
|
inceptionYear = 2023
|
|
copyrightOwner = "GrepTime Inc."
|