-
Notifications
You must be signed in to change notification settings - Fork 44
Spoc 398: An attempt to return Spockbench into the game #312
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
1ed3b02 to
4d85b7b
Compare
- Enable TCP/IP connections (listen_addresses, pg_hba.conf) - Implement sequential startup: n2/n3 depend on n1 health - Use Z0DAN spock.add_node() for n2/n3 cluster joining - Add exception log and conflict resolution tests - Integrate spockbench 3-node testing framework Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Invalidate the cached index information before calling RelationGetReplicaIndex() when temporarily changing relreplident to REPLICA_IDENTITY_DEFAULT. Without this, the cached index from REPLICA_IDENTITY_FULL mode may be incorrectly used. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Cosmetic changes only: - Remove extra blank lines - Consolidate multi-line conditions onto single lines where appropriate - Reformat SQL function declarations for readability Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Docker infrastructure improvements: - Add healthcheck marker file to prevent race conditions during container startup - node is only marked healthy after full Spock initialization completes - Mount tests directory as volume for faster iteration - Use environment variables from .bashrc instead of hardcoded paths - Update spockbench to delta-apply-update branch - Move spockbench installation before PostgreSQL build (needs root) Test script improvements: - Add wait_for_pg() function to check all nodes (local + peers) are ready - Use sync_event/wait_for_sync_event for proper replication synchronization - Simplify psql authentication using trust configuration - Use 'default' repset instead of 'demo_replication_set' - Fix conflict type check: delete_missing instead of delete_delete Configuration changes: - Reduce log verbosity from debug5 to log level - Enable spock.save_resolutions for conflict tracking - Fix DSN strings to include host and port for all nodes Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Workflow improvements: - Split workflow into separate steps: build, cluster startup, test execution, log collection, cleanup, regression, and TAP tests - Run spockbench tests on all three nodes (n1, n2, n3) in parallel using background processes with proper PID tracking - Add artifact collection for node logs and spockbench output - Add always-run cleanup step to ensure docker-compose down executes - Remove --build flag from docker compose up to reuse pre-built image (fixes bug where image was rebuilt with default PGVER=17) - Add if: always() to regression and TAP test steps Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
tests/docker/Dockerfile-step-1.el9
Outdated
| USER pgedge | ||
| RUN set -eux && \ | ||
| cd /home/pgedge/spockbench && \ | ||
| python3 setup.py install --user && \ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we are not coping the setup.py file, where it will get the setup.py
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@ibrarahmad,
Not sure I understand your point precisely. Can you explain it a little? The spockbench package has its own initialisation procedure implemented in setup.py. That's why it is mandatory to call it and finalise the environment setup.
Includes:
I think we should spend one or two more release cycles carefully watching how it behaves due to multiple changes.