debangshu919 opened a new pull request, #4616: URL: https://github.com/apache/iggy/pull/4616
## Which issue does this PR address? <!-- We generally require a GitHub issue for all bug fixes and enhancements. Link it with GitHub syntax, keep the line that applies and delete the other: - `Closes #123` auto-closes the issue when this PR merges (full fix). - `Relates to #123` links without closing (partial or related work). --> Closes #4611 ## Rationale <!-- Why is this change needed? If the issue explains it well, a one-liner is fine. --> The Python SDK lacked support for taking server diagnostic snapshots, a capability already available in the Rust and C++ SDKs. ## What changed? <!-- 2-4 sentences. Problem first (before), then solution (after). GOOD: "Messages were unavailable when background message_saver committed the journal and started async disk I/O before completion. Polling during this window found neither journal nor disk data. The fix freezes journal batches in the in-flight buffer before async persist." GOOD: "When many small messages accumulate in the journal, the flush passes thousands of IO vectors to writev(), exceeding IOV_MAX (1024 on Linux)." BAD: - Walls of text - "This PR adds..." (we can see the diff) --> The Python client had no interface to request server diagnostic snapshots. `IggyClient.snapshot()` now captures server snapshots and returns compressed ZIP archive bytes. The method accepts strongly typed `SnapshotCompression` and `SystemSnapshotType` enums instead of raw strings, providing compile-time/IDE autocompletion and early type validation. The changes include full PyO3 bindings, regenerated type stubs in `apache_iggy.pyi`, and comprehensive unit and integration tests. ## Local Execution - Passed - Pre-commit hooks ran <!-- You must run your code locally before submitting. "Relying on CI" is not acceptable - PRs from authors who haven't run the code will be closed. Did you have `prek` installed? It runs automatically on commit and covers all project languages. See [CONTRIBUTING.md](https://github.com/apache/iggy/blob/master/CONTRIBUTING.md). --> ## AI Usage <!-- If AI tools were used, please answer: 1. Which tools? (e.g., GitHub Copilot, Claude, ChatGPT) 2. Scope of usage? (e.g., autocomplete, generated functions, entire implementation) 3. How did you verify the generated code works correctly? 4. Can you explain every line of the code if asked? If no AI tools were used, write "None" or delete this section. --> 1. Which tools? (e.g., GitHub Copilot, Claude, ChatGPT) - OpenCode 2. Scope of usage? (e.g., autocomplete, generated functions, entire implementation) - Used AI tools to understand the codebase and generate tests 3. How did you verify the generated code works correctly? - Ran unit tests and integration tests against a live `iggy server` with pytest (`test_snapshot.py`), ran `cargo clippy` and verified with `ruff`. 4. Can you explain every line of the code if asked? - Yes -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
