RealTime subscribe throws Concurrent modification during iteration: _Map len:0
- 0
- Self Hosted
- Flutter
- Realtime
Hi I have installed appwrite in my ubuntu server with docker and nginx. Due to my server already has some apps running with pm2 I had to run my appwrite app using a reverse proxy.
When I use the next code to subscribe to realtime events it works for a few seconds
final Realtime _realtime = Realtime(client);
.
.
.
final userChannel = 'databases.my_db.collections.users.documents.$userId';
final membershipChannel = 'databases.my_db.collections.memberships.documents.$userId';
// this works for around 30 seconds, after that time the appwrite sdk throws
// Unhandled Exception: Concurrent modification during iteration: _Map len:0.
// And the realtime stop working
_subscription = _realtime.subscribe(
[userChannel, membershipChannel],
);
Next after a few seconds I have this error in my console and the realtime stops working
[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: Concurrent modification during iteration: _Map len:0.
#0 _CompactIterator.moveNext (dart:collection-patch/compact_hash.dart:714:7)
#1 RealtimeMixin._createSocket.<anonymous closure> (package:appwrite/src/realtime_mixin.dart:91:49)
#2 _RootZone.runGuarded (dart:async/zone.dart:1582:10)
#3 _BufferingStreamSubscription._sendDone.sendDone (dart:async/stream_impl.dart:392:13)
#4 _BufferingStreamSubscription._sendDone (dart:async/stream_impl.dart:402:7)
#5 _BufferingStreamSubscription._close (dart:async/stream_impl.dart:291:7)
#6 _ForwardingStream._handleDone (dart:async/stream_pipe.dart:99:10)
#7 _ForwardingStreamSubscription._handleDone (dart:async/stream_pipe.dart:161:13)
#8 _RootZone.runGuarded (dart:async/zone.dart:1582:10)
#9 _BufferingStreamSubscription._sendDone.sendDone (dart:async/stream_impl.dart:392:13)
This is my nginx configuration
server {
server_name app.codergym.fit;
location / {
proxy_pass http://localhost:81;
proxy_set_header Host $host;
}
location /v1/realtime {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://localhost:81/v1/realtime;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/encoding.meedu.app/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/encoding.meedu.app/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = app.codergym.fit) {
return 301 https://$host$request_uri;
} # managed by Certbot
server_name app.codergym.fit;
listen 80;
return 404; # managed by Certbot
}
Recommended threads
- User ID case sensitivity
I see that through REST (and SDK as well), getting a user is not case sensitive. And even though documentation does not clearly state that it is, the wording "V...
- Any way to temporarily bypass the email ...
Hey guys, any way to bypass the email verification to use the accounts again? i need to recover some projects that due to recent changes have been stopped, and ...
- How to use Sites on selfhosted appwrite
whenever I try to create a site even with template it says 404 nginx error