It’s time for an update!
After a lot of hard work, we finally merged some big performance improvements for Meteor 3, and we would like to invite you to help us test it.
You can update to the latest beta by doing so:
meteor update --release 3.1.1-beta.1
We will be providing an exact comparison report based on our benchmark suite soon on this same thread. But in essence, we see better throughput and much lower CPU and memory overall for real-time/reactive flows.
We released the docs for the roles package:
We helped patch Redis Oplog so it’s fully compatible with Meteor 3.1, has been released as v3.0.0
.
We also streamlined the allow/deny system.
Tasks and fixes for the next, Meteor 3.1.1 release:
Make sure Redis Oplog is compatible with Meteor 3.1
Performance optimizations for real-time and DDP
Implement additional optimizations for DX
Investigate issues in oauth
Release roles docs
Fix allow/deny rule mismatch
Fix flaky tests on roles package
Investigate node version issue
Investigate topology closed issue
Investigate idle crash in development mode
Performance analysis comparing latest optimizations
Pull Requests for v3.1.1
Next Releases
Meteor 3.1.1 (Late-December, 2024)
Meteor 3.1.2 (Earn/Mid-January, 2025)
17 Likes
harry97
December 12, 2024, 9:44pm
2
Glad to see the core team contributing to a community package (redis-oplog) but I hope it’s not putting much strain on you guys. All in all great work and looking forward to next releases.
2 Likes
permb
December 15, 2024, 12:53pm
4
Great work!!
For the ”topology closed” problems that we also see, is there a GitHub issue to append more information? I could not find one…
Please let us know if the beta solves it; we downgraded the driver by a minor version, which solves an issue with remote collections; we still need to do more work to understand what is going on. However, we have other things we need to prioritize first.
There is this issue, but at first glance, it doesn’t look related:
opened 01:22PM - 11 Oct 24 UTC
Project:Mobile
Type:Bug
Meteor: 3.0.4-beta.0
When I tried to run Cordova Android today I got the foll… owing error:
```
W20241011-15:18:22.859(2)? (STDERR) MongoTopologyClosedError: Topology is closed
W20241011-15:18:22.869(2)? (STDERR) at /home/storyteller/.meteor/packages/npm-mongo/.4.17.4.753zsa.d3xfg++os+web.browser+web.browser.legacy+web.cordova/npm/node_modules/mongodb/src/sdam/topology.ts:515:42 {
W20241011-15:18:22.869(2)? (STDERR) [Symbol(errorLabels)]: Set(0) {}
W20241011-15:18:22.869(2)? (STDERR) }
W20241011-15:18:22.869(2)? (STDERR) MongoServerSelectionError: connect ECONNREFUSED 127.0.0.1:27017
W20241011-15:18:22.870(2)? (STDERR) at Timeout._onTimeout (/home/storyteller/.meteor/packages/npm-mongo/.4.17.4.753zsa.d3xfg++os+web.browser+web.browser.legacy+web.cordova/npm/node_modules/mongodb/src/sdam/topology.ts:591:30)
W20241011-15:18:22.870(2)? (STDERR) at listOnTimeout (node:internal/timers:581:17)
W20241011-15:18:22.870(2)? (STDERR) at processTimers (node:internal/timers:519:7) {
W20241011-15:18:22.870(2)? (STDERR) reason: TopologyDescription {
W20241011-15:18:22.870(2)? (STDERR) type: 'Unknown',
W20241011-15:18:22.870(2)? (STDERR) servers: Map(1) { 'localhost:27017' => [ServerDescription] },
W20241011-15:18:22.871(2)? (STDERR) stale: false,
W20241011-15:18:22.871(2)? (STDERR) compatible: true,
W20241011-15:18:22.871(2)? (STDERR) heartbeatFrequencyMS: 10000,
W20241011-15:18:22.871(2)? (STDERR) localThresholdMS: 15,
W20241011-15:18:22.871(2)? (STDERR) setName: null,
W20241011-15:18:22.872(2)? (STDERR) maxElectionId: null,
W20241011-15:18:22.872(2)? (STDERR) maxSetVersion: null,
W20241011-15:18:22.872(2)? (STDERR) commonWireVersion: 0,
W20241011-15:18:22.872(2)? (STDERR) logicalSessionTimeoutMinutes: null
W20241011-15:18:22.872(2)? (STDERR) },
W20241011-15:18:22.872(2)? (STDERR) code: undefined,
W20241011-15:18:22.872(2)? (STDERR) [Symbol(errorLabels)]: Set(0) {}
W20241011-15:18:22.872(2)? (STDERR) }
W20241011-15:18:22.872(2)? (STDERR)
W20241011-15:18:22.873(2)? (STDERR) packages/core-runtime.js:189
W20241011-15:18:22.873(2)? (STDERR) throw error;
W20241011-15:18:22.873(2)? (STDERR) ^
W20241011-15:18:22.906(2)? (STDERR) errorClass [Error]: [An error occurred when creating an index for collection "users: Topology is closed]
W20241011-15:18:22.907(2)? (STDERR) at Collection.createIndexAsync (packages/mongo/collection.js:1140:15)
W20241011-15:18:22.907(2)? (STDERR) at module.wrapAsync.self (packages/accounts-password/password_server.js:1107:1) {
W20241011-15:18:22.907(2)? (STDERR) isClientSafe: true,
W20241011-15:18:22.907(2)? (STDERR) error: 'An error occurred when creating an index for collection "users: Topology is closed',
W20241011-15:18:22.907(2)? (STDERR) reason: undefined,
W20241011-15:18:22.907(2)? (STDERR) details: undefined,
W20241011-15:18:22.907(2)? (STDERR) errorType: 'Meteor.Error'
W20241011-15:18:22.907(2)? (STDERR) }
W20241011-15:18:22.907(2)? (STDERR)
W20241011-15:18:22.908(2)? (STDERR) Node.js v20.18.0
```
Starting then the on device or in emulator keeps on spinning forever.
Please open one if you feel it’s necessary.
One possible reason is the move from callbacks to promises in the driver, perhaps some package is not allowing the driver to connect fully, however the “Topology is closed” error is not very descriptive.