C#
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: Handling of document paths so non-alphanumeric and non-underscore characters function without causing errors. (#12556)
Previous versions may have removed these characters from document paths.
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 startunquoted_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.
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.
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.
Fixed (Linux): LAN communication (P2P) failed to advertise on newly added interfaces, such as enabling WiFi at runtime. This addresses an issue where mDNS on Android was slow to recover when transitioning WiFi from disabled to enabled.
Added: If the DeviceName property of a Ditto instance is set after synchronization has started, a warning will now be logged. Changes to the value will only take effect after restarting synchronization. Previously, there was no warning or error when setting deviceName after Ditto sync had started.
Fixed: The DeviceName property on Ditto instances now correctly reflects the truncation of the value to 24 bytes when starting sync. Previously, the property did not reflect this truncation.
Added: Introduced the PeerKeyString property to DittoPeer as a replacement for the now deprecated PeerKey.
Added: Added the PeerMetadataJsonString property and the SetPeerMetadataJsonString method to Ditto.Presence.
Added: Implemented the ConnectionRequestHandler property in Ditto.Presence, allowing filtering of incoming connections from other peers.
Deprecated: The DittoPresence.Exec() method has been deprecated in favor of using the newly introduced Graph property on Ditto.Presence.
Now, use the newly added PeerKeyString property instead.