Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
2290de6
enh: enhance websocket connection handling with improved error manage…
huskar-t Mar 9, 2026
a2c05cc
fix: harden websocket reconnect behavior and add disconnect regressio…
huskar-t Mar 9, 2026
c5c526e
fix: harden ws reconnect paths and add reliability gate in CI
huskar-t Mar 9, 2026
e0fdce1
fix: unify reconnectable send-retry handling in ws modules
huskar-t Mar 9, 2026
f362db0
test: reduce ws reconnect test flakiness with dynamic ports
huskar-t Mar 9, 2026
6e6c45d
ci: run full ws reliability gate in stable workflow
huskar-t Mar 9, 2026
d6af812
ci: add scheduled ws reliability report workflow
huskar-t Mar 9, 2026
ac6b34e
fix: standardize error variable naming for schemaless connection errors
huskar-t Mar 10, 2026
6290174
fix: enhance error handling and add race tests for websocket connections
huskar-t Mar 10, 2026
6d8df7e
fix: prevent sensitive data leakage in error messages during websocke…
huskar-t Mar 10, 2026
8693357
fix: streamline TDengine setup and caching in CI workflows
huskar-t Mar 10, 2026
64776c0
fix: improve websocket connection error handling and testing
huskar-t Mar 10, 2026
2af0080
fix: enhance websocket reconnection logic and add test for nil client…
huskar-t Mar 10, 2026
8afb6ca
feat: add memory management functions and enhance stmt2 binary marsha…
huskar-t Mar 6, 2026
f89cb8e
feat: add unified websocket client and deprecate legacy APIs
huskar-t Mar 12, 2026
5b73c4f
feat: implement TMQ consumer with configuration validation and integr…
huskar-t Mar 13, 2026
811d3fe
feat: enhance websocket client with improved error handling and conne…
huskar-t Mar 16, 2026
e913c75
feat: enhance topic deletion logic in integration tests for TMQ
huskar-t Mar 16, 2026
77eac85
feat: enhance error handling in client and consumer
huskar-t Mar 16, 2026
7127779
feat: add support for DECIMAL and BLOB data types in stmt2 and relate…
huskar-t Mar 16, 2026
a4d2a4b
feat: add support for DECIMAL and BLOB data types in stmt2, including…
huskar-t Mar 17, 2026
e070aaa
feat: add main function and database connection logic with error hand…
huskar-t Mar 17, 2026
48e2f2b
feat: enhance error handling with request summaries and connection tr…
huskar-t Mar 18, 2026
26c5ee4
feat: add support for additional data types in stmt2, including DECIM…
huskar-t Mar 18, 2026
9fa9a23
feat: enhance error handling with request summaries and connection tr…
huskar-t Mar 18, 2026
879017d
feat: improve error handling and clean up deprecated code in connecti…
huskar-t Mar 18, 2026
646f047
feat: enhance request logging by improving OTP redaction and adding u…
huskar-t Mar 18, 2026
4ae285a
feat: enhance ResultSet with prefetching support and improve resource…
huskar-t Mar 19, 2026
cb43d9d
feat: add compatibility types and methods for stmt2 and enhance respo…
huskar-t Mar 20, 2026
71e826e
feat: add compatibility checks for TD 3.3.6.0 in statement tests and …
huskar-t Mar 20, 2026
a712c92
feat: deprecate WriteUint functions for taosWS compatibility and impr…
huskar-t Mar 20, 2026
1f1d1ed
feat: enhance stmt2 initialization with runtime management and improv…
huskar-t Mar 20, 2026
3db188e
feat: increase polling timeout in consumer tests for improved data re…
huskar-t Mar 20, 2026
e0dea6d
feat: increase polling timeout in consumer tests for better data retr…
huskar-t Mar 20, 2026
05265a9
feat: enhance DSN configuration with auto-reconnect and additional pa…
huskar-t Mar 23, 2026
8235151
feat: refactor DSN handling for improved database initialization and …
huskar-t Mar 23, 2026
bff17c2
feat: mark stmt compatibility APIs as deprecated in favor of unified.…
huskar-t Mar 23, 2026
734cfd4
feat: prioritize active endpoint during reconnect attempts to handle …
huskar-t Mar 23, 2026
45cec01
feat: change failActiveOnReconnect to atomic int32 for improved concu…
huskar-t Mar 23, 2026
3f88c68
feat: add nil checks in connection config tests to prevent panic on n…
huskar-t Mar 23, 2026
09e5c7b
feat: update reconnect logic to allow query and insert replay after w…
huskar-t Mar 24, 2026
cb2405b
feat: add logging support with integration for log/slog and enhance p…
huskar-t Mar 24, 2026
8c666c8
feat: replace io.Discard with ioutil.Discard for consistent output ha…
huskar-t Mar 24, 2026
bf7bd64
feat: bump version to v3.8.0 and update commit hash
huskar-t Mar 25, 2026
e4749a8
feat: add integration tests for raw bind failover and replay logic
huskar-t Mar 25, 2026
e162d28
feat: update memory handling for Go 1.17 compatibility and add tests …
huskar-t Mar 27, 2026
59b740e
feat: update Go version compatibility from 1.17 to 1.22 in build conf…
huskar-t Mar 27, 2026
7514884
feat: update Go version compatibility to include 1.17 in build config…
huskar-t Mar 27, 2026
7d00653
feat: remove redundant checkout step from compatibility configuration
huskar-t Mar 27, 2026
0ceafce
feat: increase WebSocket message timeout and write wait durations
huskar-t Mar 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .codecov.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
ignore:
- "bench"
- "benchmark"
- "examples"
- "examples"
- "ws/unified/tests/cmd"
147 changes: 147 additions & 0 deletions .github/actions/setup-tdengine-base/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
name: 'Setup TDengine Base'
description: 'Base action for installing TDengine from local package (internal use)'

inputs:
install-package:
description: 'Path to TDengine package or directory'
required: true
package-type:
description: 'Type of package: tar.gz or dir'
required: false
default: 'tar.gz'
start-services:
description: 'Whether to start taosd and taosadapter'
required: false
default: 'true'
config-files:
description: 'Comma-separated list of config files to copy'
required: false
default: 'taos.cfg,taosadapter.toml'
version:
description: 'TDengine version for logging'
required: false
default: 'unknown'
install-args:
description: 'Extra arguments passed to install.sh'
required: false
default: ''

runs:
using: "composite"
steps:
- name: Install TDengine
shell: bash
run: |
set +o pipefail # Ignore pipe errors (e.g., from head/tail closing pipes early)
echo "Installing TDengine ${{ inputs.version }}..."

case "${{ inputs.package-type }}" in
tar.gz)
if [ ! -f "${{ inputs.install-package }}" ]; then
echo "Error: Package file not found: ${{ inputs.install-package }}"
exit 1
fi
echo "Extracting tarball..."
tar -zxf "${{ inputs.install-package }}" 2>&1 | tail -20 || true
Comment thread
huskar-t marked this conversation as resolved.

# Find extracted directory
echo "Looking for extracted directory..."
if [ -d "release" ]; then
cd "release"
else
# Try to find TDengine directory
for dir in TDengine-server-* tsdb-nightly-*; do
if [ -d "$dir" ]; then
echo "Found directory: $dir"
cd "$dir"
break
fi
done
fi
;;
dir)
if [ ! -d "${{ inputs.install-package }}" ]; then
echo "Error: Package directory not found: ${{ inputs.install-package }}"
exit 1
fi
cd "${{ inputs.install-package }}"
;;
*)
echo "Error: Unknown package type: ${{ inputs.package-type }}"
exit 1
;;
esac

echo "Running install.sh..."
if [ -x ./install.sh ] && head -n 1 ./install.sh | grep -q '^#!'; then
install_cmd=(sudo ./install.sh)
else
install_cmd=(sudo sh ./install.sh)
fi

if [ -n "${{ inputs.install-args }}" ]; then
# shellcheck disable=SC2206
install_args=(${{ inputs.install-args }})
"${install_cmd[@]}" "${install_args[@]}"
else
"${install_cmd[@]}"
fi
echo "TDengine installed successfully"

- name: Configure TDengine
if: inputs.config-files != ''
shell: bash
run: |
echo "Configuring TDengine..."
sudo mkdir -p /etc/taos
IFS=',' read -ra configs < <(echo "${{ inputs.config-files }}")
for config in "${configs[@]}"; do
config_file=".github/workflows/$config"
if [ -f "$config_file" ]; then
echo "Copying $config..."
sudo cp "$config_file" "/etc/taos/$config"
else
echo "Warning: Config file not found: $config_file"
fi
done
echo "Configuration complete"

- name: Start TDengine services
if: inputs.start-services == 'true'
shell: bash
run: |
echo "Starting TDengine services..."

# Create start script for taosd
cat > start.sh << 'EOF'
ulimit -n 65535 && TAOS_SUPPORT_VNODES=256 taosd
EOF
chmod +x start.sh

# Start taosd
echo "Starting taosd..."
nohup sudo sh ./start.sh >taosd.out 2>&1 &
sleep 2

# Start taosadapter
echo "Starting taosadapter..."
sudo taosadapter >taosadapter.out 2>&1 &
sleep 2

echo "Services started"

- name: Wait for services ready
if: inputs.start-services == 'true'
shell: bash
run: |
echo "Waiting for taosadapter..."
for i in $(seq 1 30); do
if curl -sf "http://127.0.0.1:6041/-/ping" >/dev/null 2>&1; then
echo "taosadapter is ready"
exit 0
fi
sleep 1
done
echo "Warning: taosadapter may not be ready"
echo "Last 20 lines of taosd.log:"
tail -20 taosd.out 2>/dev/null || true
Comment thread
huskar-t marked this conversation as resolved.
149 changes: 149 additions & 0 deletions .github/actions/setup-tdengine/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
name: 'Setup TDengine'
description: 'Universal TDengine setup action supporting multiple modes'

inputs:
mode:
description: 'Setup mode: nightly, build, or fixed'
required: true
default: 'nightly'
branch:
description: 'TDengine branch (for nightly mode)'
required: false
default: 'main'
commit-id:
description: 'TDengine commit ID (for build mode)'
required: false
default: ''
event-key:
description: 'Event key for cache (for build mode)'
required: false
default: ''
package-path:
description: 'Path to TDengine package (for fixed mode)'
required: false
default: ''
version:
description: 'Version string for logging'
required: false
default: 'unknown'
install-args:
description: 'Extra arguments passed to install.sh'
required: false
default: ''
start-services:
description: 'Whether to start taosd and taosadapter'
required: false
default: 'true'
config-files:
description: 'Comma-separated list of config files'
required: false
default: 'taos.cfg,taosadapter.toml'
nightly-url:
description: 'Base URL for nightly builds (required for nightly mode)'
required: false
default: ''

runs:
using: "composite"
steps:
- name: Validate inputs
shell: bash
run: |
set +o pipefail # Ignore pipe errors
case "${{ inputs.mode }}" in
nightly)
if [ -z "${{ inputs.branch }}" ] || [ -z "${{ inputs.nightly-url }}" ]; then
echo "Error: branch and nightly-url are required for nightly mode"
exit 1
fi
;;
build)
if [ -z "${{ inputs.commit-id }}" ] || [ -z "${{ inputs.event-key }}" ]; then
echo "Error: commit-id and event-key are required for build mode"
exit 1
fi
;;
fixed)
if [ -z "${{ inputs.package-path }}" ]; then
echo "Error: package-path is required for fixed mode"
exit 1
fi
;;
*)
echo "Error: mode must be one of [nightly, build, fixed]"
exit 1
;;
esac

- name: Setup nightly build
if: inputs.mode == 'nightly'
id: setup-nightly
shell: bash
run: |
echo "Downloading TDengine nightly for branch: ${{ inputs.branch }}"
set -o pipefail
if ! wget "${{ inputs.nightly-url }}/tsdb-nightly-${{ inputs.branch }}.tar.gz?v=$(date +%s)" \
-O "tdengine-nightly.tar.gz" 2>&1 | tail -n5; then
echo "Error: failed to download nightly package"
exit 1
fi
Comment thread
huskar-t marked this conversation as resolved.
echo "package_path=tdengine-nightly.tar.gz" >> $GITHUB_OUTPUT
echo "package_type=tar.gz" >> $GITHUB_OUTPUT

- name: Restore build cache
if: inputs.mode == 'build'
id: cache-server
uses: actions/cache@v5
with:
path: server.tar.gz
key: ${{ runner.os }}-build-${{ inputs.event-key }}-${{ inputs.commit-id }}

- name: Setup build mode paths
if: inputs.mode == 'build'
id: setup-build
shell: bash
run: |
echo "package_path=server.tar.gz" >> $GITHUB_OUTPUT
echo "package_type=tar.gz" >> $GITHUB_OUTPUT

- name: Setup fixed mode paths
if: inputs.mode == 'fixed'
id: setup-fixed
shell: bash
run: |
package_path="${{ inputs.package-path }}"
if [ -d "$package_path" ]; then
package_type="dir"
elif [ -f "$package_path" ]; then
package_type="tar.gz"
else
echo "Error: package-path not found or inaccessible: $package_path"
exit 1
fi
echo "package_path=$package_path" >> $GITHUB_OUTPUT
echo "package_type=$package_type" >> $GITHUB_OUTPUT

- name: Determine package info
id: package-info
shell: bash
run: |
if [ "${{ inputs.mode }}" == "nightly" ]; then
echo "path=${{ steps.setup-nightly.outputs.package_path }}" >> $GITHUB_OUTPUT
echo "type=${{ steps.setup-nightly.outputs.package_type }}" >> $GITHUB_OUTPUT
elif [ "${{ inputs.mode }}" == "build" ]; then
echo "path=${{ steps.setup-build.outputs.package_path }}" >> $GITHUB_OUTPUT
echo "type=${{ steps.setup-build.outputs.package_type }}" >> $GITHUB_OUTPUT
else
echo "path=${{ steps.setup-fixed.outputs.package_path }}" >> $GITHUB_OUTPUT
echo "type=${{ steps.setup-fixed.outputs.package_type }}" >> $GITHUB_OUTPUT
fi
Comment thread
huskar-t marked this conversation as resolved.

- name: Install and setup TDengine
uses: ./.github/actions/setup-tdengine-base
with:
install-package: ${{ steps.package-info.outputs.path }}
package-type: ${{ steps.package-info.outputs.type }}
install-args: ${{ inputs.install-args }}
start-services: ${{ inputs.start-services }}
config-files: ${{ inputs.config-files }}
version: ${{ inputs.version }}
Loading
Loading