Release Notes

    +

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

    2.8.6 — July 2021

    Version 2.8.6 of Couchbase Lite for Android delivers:

    • Added support for Android 11 - API v30

    • Fixes that improve security and performance.

    Enhancements

    • CBL-2001 — Android v30 compatibility

    Issues and Resolutions

    Fixed Issues

    • CBL-1984 — Support domain specific server authentication

    • CBL-2037 — Core pool size is too small

    2.8.5 — March 2021

    Version 2.8.5 of Couchbase Lite for Android delivers a fix that resolves an issue introduced in the 2.8.4 POM file, which incorrectly listed Kotlin as a dependency. The 2.8.5 release has the corrected POM file.

    Issues and Resolutions

    Known Issues

    • 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

    2.8.4 — March 2021

    Version 2.8.4 of Couchbase Lite for Android 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

    2.8.1 — November 2020

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

    Couchbase Lite for Android 2.8.1 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 . . . Peer-to-Peer Data Sync

    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-740 — P2P listener API

    • CBL-638 — Support RevisionID in queries via Meta

    • CBL-441 — Use common error messages

    • CBL-405 — Pending document IDs

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

    • CBL-320 — Public Database.close method

    • CBL-191 — HTTP auth for P2P Listener

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

    • CBL-25 — Some (?) ReplicatorChange CouchbaseLiteExceptions contain no message

    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-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-608 — Blob missing content file

    • 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-505 — Android bindings should manage the size of the CCR thread pool

    • 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-994 — deprecated resetCheckPoint() doesn’t throw exception when replicator is active

    • 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

    Support for API 19 and API 21 is deprecated in version 2.6.

    Other Notices

    New

    None specified in this release

    Ongoing

    None specified