Release Process¶
Overview¶
Presto releases are managed by volunteer committers. Releases occur approximately every 2 months, with extended testing periods to ensure stability.
Release Cadence¶
Releases target a 2-month cycle. Actual timing depends on:
Release shepherd availability
Testing feedback
Critical issues requiring delay
Contributing organization resources
Schedules adjust based on volunteer availability.
Release Quality Model¶
Note: Trunk is not stable. Do not use master branch in production.
- Extended Release Candidate Period
2-4 week RC period for testing
Issues fixed before final release
Fixes verified in existing RC (no new RCs)
- Community Testing
Organizations test RCs in their environments
Weekly edge releases from master for early testing
Join #releases in Presto Slack to participate
- Automated Testing
Unit tests on all commits and RCs
Product tests with full cluster deployment
Shared connector tests with AbstractTestQueries
CI for basic stability checks
- Testing Contributions Needed
Additional product test scenarios
Performance regression testing (shadow traffic)
Test coverage for new features
Version Numbering¶
Format:
0.XXX
(for example, 0.293, 0.294)Major version fixed at 0
Minor version increments each release
Patch releases (for example, 0.293.1) for critical fixes only
Not semantic versioning.
Release Types¶
- Regular Releases
Every ~2 months
New features, improvements, bug fixes
Extended RC testing period
- Patch Releases
Critical issues only:
Security vulnerabilities (upon request - default: upgrade)
Data correctness
Performance regressions
Stability issues
Based on previous stable release
Minimal changes
- Release Candidates
2-4 week testing period
One RC per release
Fixes verified in existing RC
- Edge Releases
Weekly from master
Early access to features
Testing only - not for production
Release Shepherd Responsibilities¶
Requirements:
Must be a committer
Must understand codebase for judgment calls and rewrites
Responsibilities:
Complete release process
Ensure release notes follow guidelines
Fix release note issues
Cut and deploy release
Coordinate with community
Make go/no-go decisions
See Release Shepherding for schedule and details.
Contributing to Release Quality¶
- Testing
Run RCs in test environments
Report issues with reproduction steps
Verify cherry-picked fixes
- Test Development
Add product tests for uncovered scenarios
Unit tests for bug fixes
Performance benchmarks (pbench)
- Documentation
Document behavior changes
Write clear release notes
Note compatibility issues
- Code Review
Review PRs for correctness
Identify compatibility issues
Suggest test coverage
Backward Compatibility Guidelines¶
Must Maintain Compatibility:
Client Libraries: Evolve slowly. New server features must work with older clients.
SQL Syntax: Keep stable. Deprecate with warnings before removal.
SPI: Stable for connectors/plugins. Use
@Deprecated
for at least two releases before removal. When adding new SPI methods, provide reasonable defaults to minimize connector updates. Documented SPI interfaces must remain stable even without public implementations. Exception: Undocumented AND unused SPI aspects.Configuration: Session and config properties need deprecation paths. Provide aliases for renames.
Can Change:
Internal APIs (not SPI)
Performance characteristics
Query plans
Default config values (document changes)
Developer Requirements:
Document breaking changes in release notes
Provide migration paths
Revert inadvertent breaking changes to client protocol, SQL, SPI, or config
Revert Guidelines¶
When to Revert¶
Data Correctness Issues or Critical Bugs¶
Any change that introduces data correctness issues, major crashes, or severe stability problems must be reverted immediately if a fix is not quick, especially near the RC finalization window.
Must revert:
Wrong query results, data corruption, frequent crashes
Memory leaks or resource exhaustion in common code paths
Should revert:
Performance regressions of more than 50% in common queries
Backwards Incompatible Client Changes¶
Client libraries evolve slowly and many users cannot easily upgrade clients. Breaking changes to the client protocol, SQL syntax, or session/config properties without proper migration paths must be reverted if they cannot be fixed quickly, particularly near RC finalization:
Must revert:
Breaking client-server protocol compatibility
Removing SQL syntax without deprecation warnings
Should revert:
Changing session/config property behavior without aliases
Backwards Incompatible SPI Changes Without Migration Path¶
If a backwards incompatible change to the SPI is discovered that lacks the required migration path (for example, no deprecation period, no reasonable defaults for new methods), the change should be reverted if a proper migration path cannot be added quickly, especially near RC finalization. Use these criteria:
Must revert:
Breaking documented SPI interfaces or core connectors (Hive, Iceberg, Delta, Kafka)
Breaking maintained connectors with active usage in the repository
Should revert:
Breaking experimental or rarely-used connectors (weigh maintenance burden)
Consider both documented interfaces and public implementations in the Presto repository. Create a GitHub issue marked as “release blocker” to alert the release shepherd.
When NOT to Revert¶
If the fix is simpler than the revert and can be completed quickly (especially before RC finalization), prefer fixing forward.
Fix forward:
Typos
Logging issues
Minor UI problems
Test failures that don’t affect production code
Documentation errors or missing documentation
Performance Trade-offs¶
Performance changes with mixed impact require case-by-case evaluation based on community feedback:
Evaluate carefully: What’s rare for one user may be critical for another
Consider configuration: Can the optimization be made optional by using session properties?
Gather data: Solicit feedback from multiple organizations during RC testing
If multiple users report significant regressions, consider reverting or adding a feature flag. Always document performance changes and workarounds in release notes.
Proprietary or Hidden Infrastructure Dependencies¶
Changes cannot be reverted based on impacts to proprietary infrastructure, private forks, or non-public connectors or plugins. All revert decisions must be justifiable using only publicly available code, documentation, and usage patterns visible in the open source project.
Feature Additions With Minor Issues¶
New features that don’t affect existing functionality should be fixed. Consider adding feature flags if stability is a concern.
How to Revert¶
Create a GitHub issue that describes the problem and label it “release blocker” immediately
Raise a PR to revert the problematic change and link to the issue
Release Communication¶
Presto Slack #releases channel
Best Practices for Developers¶
Avoid risky merges near release cuts
Create as many automated tests as possible, and for large changes, consider product tests and manual testing
Always consider how new features are enabled, whether they’re enabled by default, and if not opt-in through SPI or SQL, gate them with a session property
Document breaking changes in release notes
Monitor #releases channel during release cycles
Fix release blockers promptly
Getting Involved¶
Join #releases in Presto Slack
Test release candidates
Volunteer as a release shepherd (committers only)
Contribute tests
Share production experiences