We’ve released BucketFS Java 4.0.0, the latest version of our Java library for interacting with Exasol BucketFS. This is a major release with breaking changes. Below is a clarified summary of what changed, why, and how it affects you.
What changed (two related topics)
-
Test stability with Exasol 8.29.1
→ Some integration tests started failing when running against Exasol 8.29.1 due to server timing changes.
→ We adjusted our test suite to be compatible with Exasol 8.29.12 (latest 8.x at the time of update) and 2025.1.3. -
Password encoding behavior for bucket creation (breaking change)
→ We discovered a difference in how bucket passwords must be encoded between Exasol 7 and Exasol 8.
→ The library now aligns with current Exasol 8 behavior for creating buckets and bucket services over JSON RPC.
→ This change affects real usage (create/delete of buckets and services), not just tests.
Breaking changes
- Updated password handling in CreateBucketCommand
- Use the builder method
useBase64EncodedPasswords(boolean)to control whether client-side Base64 encoding is applied to passwords sent via the create command. - Exasol 8 (default): do not Base64 encode on the client side.
- Exasol 7: enable Base64 encoding (
true) to maintain compatibility. - Note: This is a breaking change for Exasol 7 users if you upgrade without setting the option.
- Deprecated API removal
ReadEnabledBucket.httpPorthas been removed (deprecated since 2.2.0, 2021).- Use
ReadEnabledBucket.portgoing forward.
Compatibility targets
- Tests and behavior validated with:
- Exasol 8.29.12 (latest 8.x at the time of update)
- Exasol 2025.1.3
- The server-side behavior that affected timing appeared after 8.29.1; we updated our suite accordingly.
Customer value
- You now have explicit control over how bucket passwords are encoded by the client when calling JSON RPC.
- The default configuration works for Exasol 8 out of the box.
- A single configuration option enables compatibility with Exasol 7, simplifying mixed-environment operations.
Quick start: Write a file to a bucket
final Bucket bucket = SyncAwareBucket.builder()
.useTls(useTls)
.raiseTlsErrors(raiseTlsErrors)
.certificate(certificate)
.host(host())
.port(port)
.serviceName(serviceName)
.name(bucketName)
.readPassword(readPassword)
.writePassword(writePassword)
.monitor(bucketFsMonitor)
.build();
bucket.uploadFile("repo/virtual-schemas/3.0.1/virtual-schemas-3.0.1.jar", "jars/");
What you can do with BucketFS Java
- List bucket contents
- Read files from buckets
- Create and delete bucket services and buckets
Migration guidance
- If you support both Exasol 7 and 8:
- Set
useBase64EncodedPasswords(true)for Exasol 7; leave itfalse(default) for Exasol 8+. Consider environment-driven configuration. - Replace any
ReadEnabledBucket.httpPortusage withReadEnabledBucket.port. - Validate your CI/CD with Exasol versions you operate (e.g., 8.29.12 and 2025.1.3) to account for timing-related changes introduced after 8.29.1.
Release notes and download
- GitHub release: https://github.com/exasol/bucketfs-java/releases/tag/4.0.0
If you encounter issues during migration, please share your Exasol version(s), relevant code snippets (especially around bucket creation), and any error logs—we’re happy to help.