March 23, 2025
+ 12

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