BucketFS Java 4.0.0 Released — Clarifications on Breaking Changes, Compatibility, and Customer Impact

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)

  1. 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.

  2. 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.httpPort has been removed (deprecated since 2.2.0, 2021).
  • Use ReadEnabledBucket.port going 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 it false (default) for Exasol 8+. Consider environment-driven configuration.
  • Replace any ReadEnabledBucket.httpPort usage with ReadEnabledBucket.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

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.

2 Likes