Releases: realm/realm-object-server
ROS Release 3.28.5
Changes since 3.28.4:
Enhancements
- None
Fixed
- When trace logging was enabled, the request and response body was logged, which may have included sensitive information for login calls. The request and response bodies for
/auth
requests are no longer logged.
Compatibility
- Server API's are backwards compatible with all previous ROS releases in the 3.x series.
- The server is compatible with all previous SDKs supporting the ROS 3.x series.
Installation & rollback instructions
Please see the Realm Docs for installation, upgrade and rollback instructions.
ROS Release 3.28.2
Enhancements
- None
Fixed
- Fixed an issue which could lead to messages like
Error: Invalid credentials - failed to parse token data at SyncProxyService
in the logs while ROS is shutting down.
Compatibility
- Server API's are backwards compatible with all previous ROS releases in the 3.x series.
- The server is compatible with all previous SDKs supporting the ROS 3.x series.
Installation & rollback instructions
Please see the Realm Docs for installation, upgrade and rollback instructions.
ROS Release 3.23.6
Changes since 3.23.5:
Enhancements
- Added more detailed error message when a user creation is rejected due to the userId requiring url encoding (only when logging in via JWT). The new message will return both the encoded and non-encoded userId to make it easier to spot the invalid characters.
Fixed
- Fixed an issue that would cause the JWT provider to not replace all invalid characters in a userId. For example, a user with the Id
foo|bar|email
would result in an error being thrown even if the|
character is marked for escaping.
Compatibility
- Server API's are backwards compatible with all previous ROS releases in the 3.x series.
- The server is compatible with all previous SDKs supporting the ROS 3.x series.
Installation & rollback instructions
Please see the Realm Docs for installation, upgrade and rollback instructions.
Notable known issues
- Encrypting existing realm files is not possible. Only fresh deployments with zero state can use realms encryption. We're working on a migration path for existing deployments.
- Server side Realm files do not compact automatically. The standalone commandline tool "realm-vacuum" can be manually executed to compress free space and old history (See https://docs.realm.io/platform/self-hosted/manage/server-side-file-growth#vacuum-utility).
ROS Release 3.23.1
Changes since 3.21.1:
Enhancements
- [GraphQL Service]: Added new properties to the
NamedSubscription
object to align it with realm-js version 2.26.0. Particularly, these relate to the expiration of subscriptions. - [GraphQL Service]: Added an ability to specify
timeToLive
(in ms) for a query-based subscription. This only works for named subscriptions. - [GraphQL Service]: Added the ability to update an existing query-based subscription. To do so, pass in
update: true
and the name of the subscription to thecreateXXXSubscription
mutation. - [Permissions Service]: Added two config options to the permissions service constructor to allow disabling permission reflection and observing the management Realms. These should not be used unless advised by the Realm support team.
- [Sync Server]: Improved the performance of query-based sync with many readers.
- Decreased the size of the npm module.
Fixed
- Fixed a bug that could cause ROS to attempt to write to a socket that has been closed, resulting in
Error [ERR_STREAM_DESTROYED]: Cannot call write after a stream was destroyed
being output in the log and the process terminating. - Fixed a race condition that could result in ROS consuming 100% CPU after a user has been deleted.
- [GraphQL Service]: Fixed an issue when using Query-based Sync that would result in
JS value must be of type 'object', got (undefined)
when creating a subscription without a name.
Breaking Changes
- Removed the following API because they no longer have any effect on the server:
- The
shouldCompactRealmsAtStart
andshouldPerformPartialSyncAtStart
properties fromBasicServer
's config. - The
sync.realm.io/enable-debug-mode
,sync.realm.io/should-perform-partial-sync-at-start
,sync.realm.io/disable-precheck-in-child-proc
, andsync.realm.io/skip-verify-realms-at-start
annotations from KubernetesSyncWorker. - The
shouldCompactRealmsAtStart
,shouldPerformPartialSyncAtStart
,skipVerifyRealmsAtStart
,disablePrecheckInChildProc
,verifyRealmsAtStart
, andrunPrecheckInChildProcess
properties from the SyncService config object.
- The
Compatibility
- Server API's are backwards compatible with all previous ROS releases in the 3.x series.
- The server is compatible with all previous SDKs supporting the ROS 3.x series.
Installation & rollback instructions
Please see the Realm Docs for installation, upgrade and rollback instructions.
Notable known issues
- Encrypting existing realm files is not possible. Only fresh deployments with zero state can use realms encryption. We're working on a migration path for existing deployments.
- Server side Realm files do not compact automatically. The standalone commandline tool "realm-vacuum" can be manually executed to compress free space and old history (See https://docs.realm.io/platform/self-hosted/manage/server-side-file-growth#vacuum-utility).
ROS Release 3.21.0
Release 3.21.0 (2019-04-10)
Changes since 3.20.1:
Enhancements
- Added support for a new way to quickly download a Full Realm file and to automatically resolve client-reset type errors. Client SDKs need to be updated to take advantage of this feature. Keep an eye on the SDK's changelog for more information.
- Added support for including user specified backlinks in a query based subscription. Client SDKs need to be updated to take advantage of this feature. Keep an eye on the SDK's changelog for more information.
Fixed
- None
Compatibility
- Server API's are backwards compatible with all previous ROS releases in the 3.x series.
- The server is compatible with all previous SDKs supporting the ROS 3.x series.
Installation & rollback instructions
Please see the Realm Docs for installation, upgrade and rollback instructions.
Notable known issues
- Encrypting existing realm files is not possible. Only fresh deployments with zero state can use realms encryption. We're working on a migration path for existing deployments.
ROS Release 3.21.1
Changes since 3.21.0:
Enhancements
- None
Fixed
- A regression was introduced in version 3.21.0 that could cause the server to decide to perform full history compaction on every upload, causing severe performance degradation. (Issue #2962, since 3.21.0)
Compatibility
- Server API's are backwards compatible with all previous ROS releases in the 3.x series.
- The server is compatible with all previous SDKs supporting the ROS 3.x series.
Installation & rollback instructions
Please see the Realm Docs for installation, upgrade and rollback instructions.
Notable known issues
- Encrypting existing realm files is not possible. Only fresh deployments with zero state can use realms encryption. We're working on a migration path for existing deployments.
ROS Release 3.20.1
Changes since ROS 3.19.0:
IMPORTANT: This version will perform an automatic file-format upgrade of certain files used for Query Based Sync. The server cannot be downgraded without restoring those files from backup. So it's recommended to do a full backup before the server is upgraded.
Enhancements
- Reduced the performance impact of authenticating users with invalid credentials when using the username/password provider.
- A new argument for the Sync Service has been added.
numAuxPsyncThreads
enables multithreading during query-based sync fan-out operations. Specify the number of additional worker threads desired in addition to the main worker thread. Defaults to0
(disabled). - The GraphQL service has two new mutations added:
create**type**(input: **type**, updatePolicy)
andcreate**type**s(input: [**type**], updatePolicy)
whereupdatePolicy
is optional and may beNEVER
,ALL
, andMODIFIED
. These correspond to the now deprecated mutationsadd**type**
,update**type**
anddiffUpdate**type**
. IfupdatePolicy
is not specified,NEVER
will be used. (Issue #1496) - The server no longer rejects subscriptions based on queries with distinct and/or limit clauses.
- Realm files used for query based sync have had all non-essential state removed, to reduce the file size on disk and improve query based sync performance. In some scenarios, this improves the latency of query-based sync by up to 25%, depending on the user's schema.
- Various performance improvements for queries results in faster query based sync performance.
- Memory usage has been decreased when using encryption.
- Performance when using encryption has been significantly improved.
- Commit performance is improved for realms with a long lifetime and many changes due to better handling of the free space in the file.
- Added a warning when the nickname auth provider is started to more prominently alert developers of the fact it's not a secure provider.
Fixed
- Fixed an issue that could cause the GraphQL service to end up always throwing an Internal Server Error for a particular Realm. This could happen when a reference Realm is deleted, then an access token, issued before the deletion, is used to connect to it via query-based sync. (PR #1504 Since v3.16.6)
- A Realm file deletion (including deletion of partial files as a result of history compaction) could cause various kinds of crashes, and even corruption within the server. (since v3.0.0).
- A bug was fixed where if a user had
canCreate
but notcanUpdate
privileges on a class, the user would be able to create the object, but not actually set any meaningful values on that object, despite the rule that objects created within the same transaction can always be modified. (Issue #2574, since v3.0.0). - A segfault could occur under certain circumtances when queries compared two integer fields.
- Fixed an issue that could prevent the server from starting with a message like
Cannot read property 'findIndex' of undefined
. This was caused when explicitly specifying the auth providers as opposed to using the runtime configuration API. (Issue #1506, Since 3.19.0)
Compatibility
- Server API's are backwards compatible with all previous ROS releases in the 3.x series.
- The server is compatible with all previous SDKs supporting the ROS 3.x series.
Installation & rollback instructions
Please see the Realm Docs for installation, upgrade and rollback instructions.
NOTE: This version will perform an automatic file-format upgrade of certain files used for Query Based Sync. The server cannot be downgraded without restoring those files from backup. So it's highly recommended to do a full backup before the server is upgraded.
Notable known issues
- Encrypting existing realm files is not possible. Only fresh deployments with zero state can use realms encryption.
ROS Release 3.19.0
Enhancements
- Updated some services to inherit from event emitter to emit events when processing some requests. The updated services are:
- AuthService
userCreated
emitted with argument{ user: User, totalUsers: number }
when a user is created.
- SyncProxyService
socketConnected
emitted with argument{ path: string, socketId: number, userAgent: string }
when a socket connection is established with the sync service.socketDisconnected
emitted with argument{ path: string, socketId: number, userAgent: string }
when a socket connection is terminated.
- RealmDirectoryService
realmCreated
emitted with argument{ type: RealmType, path: string, syncLabel: string }
when a new Realm is created.
- AuthService
- Added 2 more buckets for changeset_integrated histogram.
- Added an option to
AuthService
calledallowAnyUserToRetrieveUserInfo
that enables any registered user to call the
GET /auth/users/:user_id
andGET /auth/users/:provider/:provider_id
HTTP APIs, either directly or with SDK methods
such as the JavaScript SDK'sRealm.Sync.User.retrieveAccount
method. - Reduced the performance impact of authenticating users with invalid credentials when using the username/password provider.
Fixed
- Fixed a bug that would prevent the GraphQL Service's
diffUpdate
method from working with lists of primitive values.
Compatibility
- Server API's are backwards compatible with all previous ROS releases in the 3.x series.
- The server is compatible with all previous SDKs supporting the ROS 3.x series.
Installation & rollback instructions
Please see the Realm Docs for installation, upgrade and rollback instructions.
Notable known issues
- Encrypting existing realm files is not possible. Only fresh deployments with zero state can use realms encryption. We're working on a migration path for existing deployments.
- Server side Realm files do not compact automatically. The standalone commandline tool "realm-vacuum" can be manually executed to compress free space and old history (See https://docs.realm.io/platform/self-hosted/manage/server-side-file-growth#vacuum-utility).
Release 3.18.5
Enhancements
- None
Fixed
- Fixed a TypeScript build error in
ros init
-created applications. (Issue #413)
Compatibility
- Server API's are backwards compatible with all previous ROS releases in the 3.x series.
- The server is compatible with all previous SDKs supporting the ROS 3.x series.
Installation & rollback instructions
Please see the Realm Docs for installation, upgrade and rollback instructions.
Notable known issues
- Encrypting existing realm files is not possible. Only fresh deployments with zero state can use realms encryption. We're working on a migration path for existing deployments.
- Server side Realm files do not compact automatically. The standalone commandline tool "realm-vacuum" can be manually executed to compress free space and old history (See https://docs.realm.io/platform/self-hosted/manage/server-side-file-growth#vacuum-utility).
Release 3.18.4
Breaking
- Node 6 support has been deprecated and we'll drop it completely in a future version. We recommend upgrading to node 10 LTS.
Enhancements
- None
Fixed
- None
Compatibility
- Server API's are backwards compatible with all previous ROS releases in the 3.x series.
- The server is compatible with all previous SDKs supporting the ROS 3.x series.
Installation & rollback instructions
Please see the Realm Docs for installation, upgrade and rollback instructions.
Notable known issues
- Encrypting existing realm files is not possible. Only fresh deployments with zero state can use realms encryption. We're working on a migration path for existing deployments.
- Server side Realm files do not compact automatically. The standalone commandline tool "realm-vacuum" can be manually executed to compress free space and old history (See https://docs.realm.io/platform/self-hosted/manage/server-side-file-growth#vacuum-utility).