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

      2.8.4 — March 2021

      Version 2.8.4 of Couchbase Lite for Java delivers a number of enhancements and bug fixes.

      Enhancements

      Enhancement highlights include the ability to vary the replicator heartbeat, which keeps continuous replication connections alive when idle — see: Remote Sync Gateway — Set heartbeat

      Couchbase Lite for Java will now support Apple Silicon (M1) .

      2.8.3 — December 2020

      Version 2.8.3 of Couchbase Lite for Java supersedes version 2.8.0 and 2.8.1 released earlier this year. If you have already upgraded to 2.8.0/2.8.1 we strongly recommend that you upgrade to version 2.8.3 at the earliest opportunity.

      Couchbase Lite for Java 2.8.3 addresses a backward-compatibility issue (CBL-1406).

      Issues and Resolutions

      Known Issues

      • 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-1406 — Couchbase Lite 2.8 apps require you specify the database path explicitly when connecting to pre-2.8 databases (config.setDirectory()) — see: Open database

      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.

      Read More . . . Landing P2Psync

      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-2-8-0[]) 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.getPendingDocumentIds() 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-1406 — Couchbase Lite 2.8 apps require you specify the database path explicitly when connecting to pre-2.8 databases (config.setDirectory()) — see: Open database

      • 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-2-8-0[] 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