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) .
Issues and Resolutions
Fixed Issues
-
CBL-1441 — Bindings throw exception when Replicator is in STOPPING state
-
CBL-1495 — Replicator is stuck in "connecting" state: Root cause
-
CBL-1514 — CBL Java 2.8.1 uses .couchbase as default directory
-
CBL-1527 — Replicator hang or delay updating websocket state
-
CBL-1566 — Ensure c4log_enableFatalExceptionBacktrace is called
-
CBL-1591 — Closing a CBLWebsocket while it is CONNECTING causes a crash
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
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
Quick Links: New Features | Improvements | Issues and Resolutions | Support Notices | Related Content
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
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 — useBasicAuthenticator(String username, char-2-8-0[] password)
-
CBL-1350 — The
Replicator.resetCheckpoint()
API is deprecated — instead, useReplicator.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, useReplicator.start(reset)
, where reset is a boolean value -
The Database.compact() method is deprecated at 2.8 — instead use Database.performMaintenance().