mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-10-22 11:52:33 +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>
60 lines
2.2 KiB
TOML
60 lines
2.2 KiB
TOML
# Copyright 2023 Greptime Team
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
headerPath = "Apache-2.0.txt"
|
|
|
|
includes = [
|
|
"*.rs",
|
|
"*.py",
|
|
"*.ts",
|
|
]
|
|
|
|
excludes = [
|
|
# copied sources
|
|
"src/common/base/src/readable_size.rs",
|
|
"src/common/base/src/secrets.rs",
|
|
"src/servers/src/repeated_field.rs",
|
|
"src/servers/src/http/test_helpers.rs",
|
|
# enterprise: Apache-2.0 header is NOT applied to these. They are governed by
|
|
# the GreptimeDB Enterprise License and checked via `licenserc-enterprise.toml`.
|
|
# Keep this list in sync with that file's `includes`; enforced by
|
|
# `make check-enterprise-license`.
|
|
# enterprise:start
|
|
"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",
|
|
# enterprise:end
|
|
]
|
|
|
|
[properties]
|
|
inceptionYear = 2023
|
|
copyrightOwner = "Greptime Team"
|