Release Notes

    +

    Description — Couchbase Lite on Java
    Abstract — This content describes the key features and changes implemented by release 2.8 of Couchbase Lite on Java
    Related Content — What’s New | Compatibility | Supported OS

    Release 2.8.0 (October 2020)

    New Features

    Peer-to-Peer Synchronization

    Using Couchbase Lite’s Peer-to-Peer Synchronization solution, you can build offline-first applications on edge devices that directly collaborate in secure bi-directional database synchronization without depending on centralized cloud-based control.

    The solution provides an out-of-the-box implementation of a websocket based listener for use in peer-to-peer applications communicating over in IP-based networks.

    Improvements

    Feature Changes

    None specified in this release

    Other Enhancements

    • CBL-1358 — Deprecate LogDomain.ALL in favor of LogDomain.ALL_DOMAINS

    • CBL-1357 — Deprecate Database.compact() in favor of Database.performMaintenance(MaintenanceType.COMPACT)

    • CBL-1356 — Add constructor BasicAuthenticator(String, char[]) and deprecate

    • CBL-989 — Add Maintenance API.

    • CBL-954 — Return 403 for forbidden listener requests

    • CBL-940 — Implement Replicator.start(reset) and deprecate resetCheckpoint()

    • CBL-891 — API: Overload AbstractReplicator.start to take resetCheckpoint argument

    • CBL-773 — Implement new Close and Delete Database (Java)

    • CBL-394 — Platform WebSocket code should manage HTTP cookies - Android

    • CBL-164 — CouchbaseLite.getExecutionService() should not be public API

    API Changes

    The API has been enhanced with the following changes:

    • The Database.close() method now automatically handles stopping open replicators, closing peer-to-peer websocket listener and removing observers for live queries.

    • The Database.delete() method now automatically handles stopping open replicators, closing peer-to-peer websocket listener and removing observers for live queries.

    • The Replicator.isDocumentPending method checks whether or not the document with the given ID has any pending revisions to push

    • The Replicator.getPendingDocuments() method gets the Ids of all documents currently pending push

    • Meta.revisionID property is now available as a metadata property, which can be accessed directly in queries

    Issues and Resolutions

    Known Issues

    • CBL-637 — Java Console app doesn’t exit

    • CBL-370 — API: Kotlin unable to import ReplicatorType

    • CBL-216 — Ordering null values inconsistent with N1QL expectations

    • CBL-95 — Pending conflicts could be resolved by a wrong replicator

    • CBL-49 — Need a way to distinguish boolean types

    Fixed Issues

    • CBL-1141 — Android cannot use unlinked files

    • CBL-1107 — Properties beginning with dollar sign not handled correctly

    • CBL-1045 — Data race in log rollover

    • CBL-978 — Math errors with float → int implicit fleece conversion

    • CBL-977 — Full text search with Left Outer Join causes fields to be null

    • CBL-859 — ChangeEncryptionKey() and save document after creating a brand new Database throws CouchbaseLiteException (SQLiteDomain / 21): bad parameter or other API misuse.

    • CBL-791 — Make resetCheckpoint an argument to Replicator.start

    • CBL-789 — Crash when accessing connection→name()

    • CBL-707 — Compaction is ineffective (auto_vacuum not enabled)

    • CBL-623 — Revision flags get cleared while saving resolved document in Java

    • CBL-614 — Closing a read only database causes errors

    • CBL-609 — Fleece thinks a boolean is a Long

    • CBL-594 — Local to Local replication duplicates remote ID

    • CBL-590 — Investigate handling of BLIP 500 errors

    • CBL-578 — Receive rev#1 after rev#2 is saved to DB

    • CBL-565 — Crashes apparently caused by attempting to log after failure

    • CBL-564 — Property alias not working under certain cases

    • CBL-530 — Certain keys in a query can cause segmentation faults

    • CBL-529 — Cannot create an offset query without limit

    • CBL-496 — Should not attempt to open the default tmp directory in DBConfig constructor

    • CBL-358 — xsockets doesn’t account for POSIX variations

    Support Notices

    This section documents any support-related notes, constraints and changes

    Deprecation Notices

    Items (features and-or functionality) are marked as deprecated when a more current, and usually enhanced, alternative is available.

    Whilst the deprecated item will remain usable, it is no longer supported, and will be removed in a future release. You should plan to move to an alternative, supported, solution as soon as practical.

    This Release
    • CBL-1358 — Deprecate LogDomain.ALL in favor of LogDomain.ALL_DOMAINS

    • CBL-1357 — Deprecate Database.compact() in favor of Database.performMaintenance(MaintenanceType.COMPACT)

    • CBL-1356 — BasicAuthenticator(String username, String password) is deprecated — use BasicAuthenticator(String username, char[] password)

    • CBL-1350 — The Replicator.resetCheckpoint() API is deprecated — instead, use Replicator.start(reset), where reset is a boolean value

    • CBL-1011 — Remove deprecated Replicator.resetCheckpoint()

    • CBL-982 — Support for CentOS 6 is deprecated in version 2.8.

    • CBL-791 — Make resetCheckpoint an argument to Replicator.start. Replicator.start() API is deprecated — instead, use Replicator.start(reset), where reset is a boolean value

    • The Database.compact() method is deprecated at 2.8 — instead use Database.performMaintenance().

    Ongoing

    None specified

    Other Notices

    New

    Apple macOS 10.15 (Catalina) is supported
    Apple macOS 10.14 (Mojave) is supported

    Ongoing

    None specified