Skip to content

Commit

Permalink
Merge branch 'main' into kn/realm-maps
Browse files Browse the repository at this point in the history
* main:
  Don't add the ISRG X1 Root on Android (#1434)
  Wait for initial sync to complete before starting the tests (#1435)
  kn/update analyzer (#1365)
  Add vNext Changelog header (#1429)
  [Release 1.6.0] (#1428)
  Upgrade to Core 13.23.4 (#1427)
  Flexible sync subscribe/unsubscribe API (#1354)
  Use default context rather than creating a new one (#1426)
  Handle duplicate certificates (#1425)
  kn/add certificate (#1378)
  asymmetric object allow non embedded links (#1402)
  Rudimentary geospatial support (#1389)
  Core 13.20.1 sync errors changes (#1387)
  Fix RealmObject.hashCode (#1420)
  add 'ignore_for_file: type=lint' to *.g.dart files (#1413)
  kn/fix skip then iterate bug (#1410)
  • Loading branch information
nirinchev committed Nov 29, 2023
2 parents d1bce65 + 2355f74 commit 5dcc0ad
Show file tree
Hide file tree
Showing 89 changed files with 2,644 additions and 1,167 deletions.
9 changes: 4 additions & 5 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -673,24 +673,23 @@ jobs:

slack-on-failure:
name: Report failure in main branch
needs:
needs:
- cleanup-dart-matrix
- cleanup-flutter-matrix
runs-on: ubuntu-latest
if: always()
if: always() && github.ref == 'refs/heads/main'
steps:
# Run this action to set env.WORKFLOW_CONCLUSION
- uses: technote-space/workflow-conclusion-action@45ce8e0eb155657ab8ccf346ade734257fd196a5

- uses: act10ns/slack@ed1309ab9862e57e9e583e51c7889486b9a00b0f
if: ${{ github.ref == 'refs/heads/main' && env.WORKFLOW_CONCLUSION == 'FAILURE' }}
if: ${{ github.ref == 'refs/heads/main' && env.WORKFLOW_CONCLUSION == 'FAILURE' }}
# Statuses: neutral, success, skipped, cancelled, timed_out, action_required, failure
with:
status: ${{ env.WORKFLOW_CONCLUSION }}
status: ${{ env.WORKFLOW_CONCLUSION }}
webhook-url: ${{ secrets.SLACK_DART_WEBHOOK }}
channel: '#realm-github-dart'
message: |
*<https://github.com/realm/realm-dart/actions/runs/${{ github.run_id }}/attempts/${{ github.run_attempt }}|_{{workflow}}_ run id: ${{ github.run_id }} has status _{{jobStatus}}_ >*
<{{refUrl}}|`{{ref}}` - {{description}}>
{{#if description}}<{{diffUrl}}|branch: `{{diffRef}}`>{{/if}}
8 changes: 6 additions & 2 deletions .github/workflows/dart-desktop-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,12 +58,16 @@ jobs:
- name : Setup Dart SDK
uses: dart-lang/setup-dart@main
with:
sdk: ${{ contains(inputs.os, 'linux') && '3.0.6' || 'stable'}}
sdk: stable
architecture: ${{ inputs.architecture == 'arm' && 'arm64' || 'x64'}}

- name: Install dependencies
run: dart pub get

- name: Bump ulimit
run: ulimit -n 10240
if: ${{ contains(inputs.os, 'macos') }}

# This will be a no-op under normal circumstances since the cluster would have been deployed
# in deploy-cluster. It is needed in case we want to re-run the job after the cluster has been reaped.
- name: Create cluster
Expand All @@ -90,7 +94,7 @@ jobs:
--check-ignore \
--lcov \
--packages .dart_tool/package_config.json \
--report-on lib
--report-on lib,common
lcov --remove ./coverage/lcov.info '*.g.dart' '*/lib/src/cli/*' '*/lib/src/native/realm_bindings.dart' -o coverage/pruned-lcov.info
- name: Publish realm_dart coverage
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/flutter-desktop-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,10 @@ jobs:
- name: Install dependencies
run: dart pub get

- name: Bump ulimit
run: ulimit -n 10240
if: ${{ contains(inputs.os, 'macos') }}

# This will be a no-op under normal circumstances since the cluster would have been deployed
# in deploy-cluster. It is needed in case we want to re-run the job after the cluster has been reaped.
- name: Create cluster
Expand Down
4 changes: 4 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,16 @@
"finalizable",
"finalizer",
"fnum",
"geospatial",
"HRESULT",
"keepalive",
"loggable",
"mugaritz",
"nodoc",
"nullptr",
"posix",
"sublist",
"sublists",
"TRUEPREDICATE",
"unmanaged",
"upsert",
Expand Down
51 changes: 48 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,58 @@
* None

### Fixed
* None
* Fixed an issue where connections to Atlas App Services would fail on Android with a certificate expiration error. (Issue [#1430](https://github.com/realm/realm-dart/issues/1430))

### Compatibility
* Realm Studio: 13.0.0 or later.
* Flutter: ^3.13.0
* Dart: ^3.1.0

### Internal
* Using Core x.y.z.
* Using Core 13.23.2.

## 1.6.0 (2023-11-15)

### Enhancements
* Support for performing geo spatial queries using the new classes: `GeoPoint`, `GeoCircle`, `GeoBox` and `GeoPolygon`. See `GeoPoint` documentation on how to persist locations ([#1389](https://github.com/realm/realm-dart/pull/1389))
* Suppressing rules for a *.g.dart files ([#1413](https://github.com/realm/realm-dart/pull/1413))
* Full text search supports searching for prefix only. Eg. "description TEXT 'alex*'" (Core upgrade)
* Unknown protocol errors received from the baas server will no longer cause the application to crash if a valid error action is also received. (Core upgrade)
* Added support for server log messages that are enabled by sync protocol version 10. AppServices request id will be provided in a server log message in a future server release. (Core upgrade)
* Simplified sync errors. The following sync errors and error codes are deprecated ([#1387](https://github.com/realm/realm-dart/pull/1387)):
* `SyncClientError`, `SyncConnectionError`, `SyncSessionError`, `SyncWebSocketError`, `GeneralSyncError` - replaced by `SyncError`.
* `SyncClientErrorCode`, `SyncConnectionErrorCode`, `SyncSessionErrorCode`, `SyncWebSocketErrorCode`, `GeneralSyncErrorCode, SyncErrorCategory` - replaced by `SyncErrorCode`.
* Throw an exception if `File::unlock` has failed, in order to inform the SDK that we are likely hitting some limitation on the OS filesystem, instead of crashing the application and use the same file locking logic for all the platforms. (Core upgrade)
* Lift a restriction that prevents asymmetric objects from linking to non-embedded objects. ([#1403](https://github.com/realm/realm-dart/issues/1403))
* Add ISRG X1 Root certificate (used by lets-encrypt and hence MongoDB) to `SecurityContext` of the default `HttpClient`. This ensure we work out-of-the-box on older devices (in particular Android 7 and earlier), as well as some Windows machines. ([#1187](https://github.com/realm/realm-dart/issues/1187), [#1370](https://github.com/realm/realm-dart/issues/1370))
* Added new flexible sync API `RealmResults.subscribe()` and `RealmResults.unsubscribe()` as an easy way to create subscriptions and download data in background. Added named parameter to `MutableSubscriptionSet.clear({bool unnamedOnly = false})` for removing all the unnamed subscriptions. ([#1354](https://github.com/realm/realm-dart/pull/1354))
* Added `cancellationToken` parameter to `Session.waitForDownload()`, `Session.waitForUpload()` and `SubscriptionSet.waitForSynchronization()`. ([#1354](https://github.com/realm/realm-dart/pull/1354))

### Fixed
* Fixed iteration after `skip` bug ([#1409](https://github.com/realm/realm-dart/issues/1409))
* Crash when querying the size of a Object property through a link chain (Core upgrade, since v13.17.2)
* Deprecated `App.localAppName` and `App.localAppVersion`. They were not used by the server and were not needed to set them. ([#1387](https://github.com/realm/realm-dart/pull/1387))
* Fixed crash in slab allocator (`Assertion failed: ref + size <= next->first`). (Core upgrade, since 13.0.0)
* Sending empty UPLOAD messages may lead to 'Bad server version' errors and client reset. (Core upgrade, since v11.8.0)
* If a user was logged out while an access token refresh was in progress, the refresh completing would mark the user as logged in again and the user would be in an inconsistent state. (Core 13.21.0)
* Receiving a `write_not_allowed` error from the server would have led to a crash. (Core 13.22.0)
* Fix interprocess locking for concurrent realm file access resulting in a interprocess deadlock on FAT32/exFAT filesystems. (Core 13.23.0)
* Fixed RealmObject not overriding `hashCode`, which would lead to sets of RealmObjects potentially containing duplicates. ([#1418](https://github.com/realm/realm-dart/issues/1418))
* `realm.subscriptions.waitForSynchronization` will now correctly receive an error if a fatal session error occurs that would prevent it from ever completing. Previously the future would never resolve. (Core 13.23.3)
* Fixed FLX subscriptions not being sent to the server if the session was interrupted during bootstrapping. (Core 13.23.3)
* Fixed application crash with 'KeyNotFound' exception when subscriptions are marked complete after a client reset. (Core 13.23.3)
* A crash at a very specific time during a DiscardLocal client reset on a FLX Realm could leave subscriptions in an invalid state. (Core 13.23.4)

### Compatibility
* Realm Studio: 13.0.0 or later.

### Internal
* Made binding a `sync::Session` exception safe so if a `MultipleSyncAgents` exception is thrown, the sync client can be torn down safely. (Core upgrade, since 13.4.1)
* Add information about the reason a synchronization session is used for to flexible sync client BIND message. (Core upgrade)
* Sync protocol version bumped to 10. (Core upgrade)
* Handle `badChangeset` error when printing changeset contents in debug. (Core upgrade)

* Using Core 13.23.2.

## 1.5.0 (2023-09-18)

Expand All @@ -32,7 +77,6 @@
* Added support for query on `RealmSet`. ([#1346](https://github.com/realm/realm-dart/pull/1346))
* Support for passing `List`, `Set` or `Iterable` arguments to queries with `IN`-operators. ([#1346](https://github.com/realm/realm-dart/pull/1346))


### Fixed
* Fixed an early unlock race condition during client reset callbacks. ([#1335](https://github.com/realm/realm-dart/pull/1335))
* Rare corruption of files on streaming format (often following compact, convert or copying to a new file). (Core upgrade, since v12.12.0)
Expand All @@ -44,6 +88,7 @@
* Fix failed assertion for unknown app server errors (Core upgrade, since v12.9.0).
* Testing the size of a collection of links against zero would sometimes fail (sometimes = "difficult to explain"). (Core upgrade, since v13.15.1)
* `Session.getProgressStream` now returns a regular stream, instead of a broadcast stream. ([#1375](https://github.com/realm/realm-dart/pull/1375))
* Add ISRG X1 Root certificate (used by lets-encrypt and hence MongoDB) to `SecurityContext` of the default `HttpClient`. This ensure we work out-of-the-box on older devices (in particular Android 7 and earlier), as well as some Windows machines. ([#1187](https://github.com/realm/realm-dart/issues/1187), [#1370](https://github.com/realm/realm-dart/issues/1370))

### Compatibility
* Realm Studio: 13.0.0 or later.
Expand Down
Loading

0 comments on commit 5dcc0ad

Please sign in to comment.