React Native
Allows you to specify a specifc port that can will be used for mDNS announcements and connections on a given device. This can be used for connect with peers across a VLAN while scanning for open ports.
Not setting the config will result in the current default behavior of a random port being assigned.
If running multiple application on the same device, for example a debug and/or test flight application along side a production application, each application needs to have a unique port. Failure to do this will result in only one application being able to establish connections at a given time.
Setting the config
The config can be set using DQL ALTER SYSTEM and the tcp_server_bind_mdns_server_port config.
This command should be run using the ditto.store.execute(...) command within your application.
tcp_server_bind_mdns_server_port needs to be set before startSync() is called to be applied.
Resolves a race condition that could be hit when closing a sync subscription or stopping sync that caused Ditto to crash.
This fix addresses the issue causing a Live Query callback to receive a delta update, known as a diff, before the initial document.
Previously, there was an issue in which two documents on different internal versions could fail to integrate changes created using an older CRDT version.
Due to a race condition caused by the logging system mistakenly identifying the previous transaction as blocking the current one, the logger would inaccurately indicate the current transaction as being blocked by the previous one from an unknown originator.
FIXED: An issue in the Small Peer datastore causing slow performance or process termination. (#13395)
This issue was due to an aging dependency with a race condition, which caused thread tasks to get stuck and transactions to be blocked for extended periods.
We've optimized compilation by reducing the size of each binary slice of the Ditto SDKs by 19% and fixing incompatibility with PLCrashReporter.
FIXED: Compatibility issues preventing the React Native SDK from working correctly with older versions of Ditto. (#12641)
This fix ensures the Ditto SDK is compatible with versions of React Native lower than 0.72.
FIXED: An issue where the deviceName property was being returned as blank on Ditto instances within React Native apps. (#12661)
Fixed: Misleading errors related to attachment fetch operations. Now, associated error logs are more accurate and clear. (#12409)
Fixed: A specific issue where incorrect sync metadata rollback caused problems with data consistency at merge. (#12422)
Fixed: Potential for a crash when closing a Ditto instance immediately following operations such as setPeerMetadata or setPeerMetadataJSON. (#12351)
Fixed: Potential crash when closing a Ditto instance after calling Ditto.presence.observe() to register a presence observer. (#12388)
Fixed: Premature triggering of asynchronous callback handlers created using observeLocal(). (#12388)
Before this release, there were issues with the timing of callback triggers where the next callback in a live query could trigger before the asynchronous callback handler function had completed its execution.
FIXED: The legacy query language error-throwing mechanism to accept invalid field names properly. (#11888)
After upgrading to version 4.7 of the SDK, you may notice unexpected errors while using the legacy query builder language. These errors are likely due to invalid field names or path expressions previously undetected.
In addition, make sure to start unquoted_string with an underscore (_), a letter, or an alphanumeric character. For example, the following equivalent regular expression: [A-Za-z_][A-Za-z0-9_]*.
For specific examples, see Query Syntax (Legacy) > Field Path Navigation.
In the legacy query builder language, invalid field names and path expressions now throw explicit errors. Previously these invalid names did not throw and would cause undefined behavior. Note: This new error-throwing behavior applies only to the legacy query builder language; DQL is unaffected by this improvement.
IMPROVED: Transaction contention time for the ATTACHMENT data type, reducing potential timeouts. (#11893)
Before this improvement, concurrent write transactions were long-lived, potentially causing deadlocks and request timeouts. Now you'll experience more effective handling of multiple attachments being processed at the same time.
With the latest release, Ditto handles unexpected situations or errors in a way that allows it to recover and continue functioning without crashing or causing disruptions.
This rollout includes new system parameters for the MeshChooser feature for configuring a limited set of variables, allowing you to adjust certain settings during runtime.
The warning message previously logged when peers connected within the mesh is no longer recorded or printed.
Previously, when syncing in mixed mesh environments from Ditto SDK version 4.0.0 of the SDK to version 3.0.0, only partial updates were transmitted. With this release, all updates are transmitted, resulting in greater data consistency and completeness when syncing across different versions of the SDK.
Previously, the Small Peer Info collector would become stuck when attempting to upload logs in certain situations. Since resolving this issue, the Small Peer Info collector functions properly in those conditions.
With this fix, operations related to fetching attachments function as expected.
FIXED: The issue causing type check failures when setting duration parameters through ALTER SYSTEM SET. (#12070)
When using SystemParameter to configure timeouts before this fix, if using different types to encode the values representing the timeout, for instance, Milliseconds and Seconds, the values failed to downcast, an error log printed, and the new value ignored.
Now, when using mismatched wrapper types, Ditto performs a compatibility check, validates, and, if needed, converts them as appropriate.