Commit Graph

634 Commits

Author SHA1 Message Date
Emanuel Schütze
7665634d42
Merge pull request #5375 from FinnStutzenstein/autoupdatePerformance
Autoupdate performance
2020-05-29 17:31:32 +02:00
Finn Stutzenstein
9c7b9b0920
Merge pull request #5387 from FinnStutzenstein/hugeautoupdatesInRedis
Inserting changed and deleted elements into redis in batches (fixes #5386)
2020-05-29 15:48:21 +02:00
FinnStutzenstein
0eee839736
Small improvements and first attempt to make to poll progress responsive
to massive autoupdates. The "optimization" didn't help, so this has to
be continued in another PR.
2020-05-29 15:46:19 +02:00
FinnStutzenstein
600b9c148b
Inserting changed and deleted elements into redis in batches (fixes #5386) 2020-05-28 14:00:57 +02:00
FinnStutzenstein
d8b21c5fb5
(WIP) Ordered and delayed autoupdates:
- Extracted autoupdate code from consumers
- collect autoupdates until a AUTOUPDATE_DELAY is reached (since the first autoupdate)
- Added the AUTOUPDATE_DELAY parameter in the settings.py
- moved some autoupdate code to utils/autoupdate
- moved core/websocket to utils/websocket_client_messages
- add the autoupdate in the response (there are some todos left)
- do not send autoupdates on error (4xx, 5xx)
- the client blindly injects the autoupdate in the response
- removed the unused autoupdate on/off feature
- the clients sends now the maxChangeId (instead of maxChangeId+1) on connection
- the server accepts this.
2020-05-27 16:05:27 +02:00
FinnStutzenstein
fba043fedf
Log APIExceptions on the server 2020-05-25 09:16:37 +02:00
FinnStutzenstein
bf88cea200
Rewrite projector code to be cache friendly
This speeds up the requests/seconds by a factor of 100
2020-05-22 15:23:54 +02:00
FinnStutzenstein
23842fd496
Synchronize autoupdate code in the client
If autoupdates are too fast, the first one may not be fully executed. Especially when the maxChangeId is not yet updated, the second Autoupdate will trigger a refresh, because for the client it "lay in the future". This can be prevented by synchronizing the autoupdate-handling code with a mutex.
2020-05-22 15:23:53 +02:00
Joshua Sangmeister
3f03f27cdb added jitsi settings to template and readme 2020-05-14 19:41:35 +02:00
Joshua Sangmeister
b0bf4990f8 fixed formatting after flake update 2020-05-13 16:16:03 +02:00
FinnStutzenstein
b78372f8a3
Load configs before models 2020-04-27 09:41:23 +02:00
Joshua Sangmeister
6eae497abe adds more permissive html validation 2020-04-16 10:26:48 +02:00
FinnStutzenstein
bb2f958eb5 Redis: Wait for replication on writes
Since channels_redis does not support dedicated read-redis instances, the
autoupdate message may be received before the data was replicated. All workers
read the autoupdate message from the write host, so there is a race between
getting this message and a finished replication. For large payloads, the
replication is slower in the most cases (even more in a distributed setup, where
the master and replica are on different nodes). The easy way is to wait for
replication. But there is one difficulty: The number of replicas has to be
known. There is a new settings-variable "AMOUNT_REPLICAS" which defaults to 1.
It needs to be set correctly! If it is too high, every autoupdate will be
delayed by 1 seconds because of a timeout witing for non-existent replicas. If
it is too low, some autoupdates may be wrong (and not detectable by the client!)
becuase of reading from non-synchronised relicas.

The other possibility is to fork channel_redis and add the feature of a
read-only redis. This ould help, because on a single redis instance all commands
are ordered: First, the data is synced, then the autoupdate message. Attention:
This means, if redis-replicas are scaled up, one must make sure to read from the
same instance. I think this is not possible in the way how dockers overlay
networks work. The only way would be to open one connection and reuse the
connection from channels_redis in OpenSlides. This would mean a heavy
integration of channels_redis (meaning including the source code in our repo).

For the first fix, this one is easy and should work.
2020-04-01 13:09:48 +02:00
Joshua Sangmeister
b48ca8c434 added chart projection for polls 2020-03-17 07:24:45 +01:00
Joshua Sangmeister
b16afaa285 number poll candidates depending on setting 2020-03-17 07:24:40 +01:00
FinnStutzenstein
e2585fb757 Projector for polls: Server, client structure and data modeling 2020-03-17 07:24:40 +01:00
Joshua Sangmeister
682db96b7c added vote per user table and progress for polls
added update for options after stopping a poll
2020-03-17 07:24:39 +01:00
FinnStutzenstein
7ab5346198 disable caching for reverse relations 2020-03-17 07:24:39 +01:00
FinnStutzenstein
fafb81daca Fix assignment access permissions
Also improves unnecessary history-savings of users in the list of speakers
2020-03-17 07:24:37 +01:00
FinnStutzenstein
b50cf42543 Prevent stopping an analog poll
Fixed too much logging with the new autoupdate bundling
2020-03-17 07:24:37 +01:00
jsangmeister
09ef3c5071 add settings variable ENABLE_ELECTRONIC_VOTING 2020-03-17 07:24:36 +01:00
FinnStutzenstein
046a152ec5 generate less queries in the autoupdate system 2020-03-17 07:24:36 +01:00
jsangmeister
6605934a33 added count query decorator 2020-03-17 07:24:35 +01:00
FinnStutzenstein
ced40cab74 Initial work for supporting voting 2020-03-17 07:24:34 +01:00
Emanuel Schütze
e2630faead
Merge pull request #5149 from FinnStutzenstein/deleteUsersWithWSConnection
Fixed late autoupdates with deleted users
2019-12-09 10:41:59 +01:00
FinnStutzenstein
cc4ca61964 Adding a second optional redis for read only accesses 2019-12-03 12:30:31 +01:00
FinnStutzenstein
f7cdfb7c02 Locking service and locks the history build process (fixes #4039) 2019-12-03 12:14:49 +01:00
FinnStutzenstein
0d38b784bc Fixed late autoupdates with deleted users 2019-11-29 13:15:20 +01:00
FinnStutzenstein
c54e2621f2 Added html validation for users and personal notes 2019-11-08 15:39:18 +01:00
GabrielMeyer
b806b8406b Fixes python3.7 tests 2019-10-29 15:05:52 +01:00
FinnStutzenstein
4a77bf1a61 saml 2019-10-21 13:34:01 +02:00
FinnStutzenstein
3f41890541 Fixed typing from parse_qs 2019-10-18 14:41:55 +02:00
FinnStutzenstein
e4c4bc0aa0 Closing websocket connections to unknown urls 2019-10-15 10:54:31 +02:00
GabrielMeyer
c8d02788dc Enhances the autoupdate of projector by change-id 2019-10-02 16:30:30 +02:00
Emanuel Schütze
1ff616fe4f Allow <del> and <ins> html tags. 2019-09-24 12:53:15 +02:00
Emanuel Schütze
e16ca335de Updated requirements
- Added websockets to production.txt
- Import channels_redis in redis.py only for big mode (if use_redis=true)
2019-09-13 10:29:19 +02:00
FinnStutzenstein
0319deba23 no semaphore 2019-09-10 15:00:55 +02:00
FinnStutzenstein
9323bdef20 Added config for more verbose errors on reset password
- Added settings.py docs
- Fixed left-overs from #4920
- Reworked all server messages to a new argument formet, so that the
client can translate server messages
2019-09-03 14:47:45 +02:00
FinnStutzenstein
5baae14156 Skip autoupdates on foreign personal notes 2019-09-02 13:57:12 +02:00
FinnStutzenstein
366777ebfd Fixed bug sending always all data to users, who get restricted data
Due to changes in an iterator, a RuntimeError was thrown but interpred al a too low change id. Fixed the bug and make a custom exception for this.
2019-09-02 09:05:29 +02:00
Finn Stutzenstein
93fae8ef3b
Merge pull request #4961 from FinnStutzenstein/loggingRedis
Logging prefix and handling redis connection errors
2019-09-02 08:28:12 +02:00
FinnStutzenstein
2aa0275dca Logging prefix and handling redis connection errors 2019-09-02 08:09:28 +02:00
FinnStutzenstein
c73b04c005 Just autoupdate changed models on sorting 2019-08-29 15:11:18 +02:00
Emanuel Schütze
d3c56efdc5
Merge pull request #4920 from emanuelschuetze/configDefaults
Rework config defaults.
2019-08-21 13:48:55 +02:00
Emanuel Schütze
f981106524 Rework config defaults.
- move motion setttings from settings.py to config that user can change
  it while runtime
- show help text for config fields as tooltip
2019-08-21 13:19:44 +02:00
FinnStutzenstein
d4dc13706f Ensures change id across multiple workers 2019-08-19 09:42:51 +02:00
FinnStutzenstein
1d718dcb74 Fixed two little issues with relations and reverse mapping
- Reverse setup for normal autoupdates (no initial loading)
- reverse "set null" to be reflected to the mapping

Also fixed a bug with redis
2019-08-15 12:51:59 +02:00
FinnStutzenstein
daabbaff28 Added missing ResetCache-handling 2019-08-12 15:01:57 +02:00
FinnStutzenstein
5aef823807 Major cache rewrite:
- Removed the restricted data cache (it wasn't used since OS 3.0)
- unify functions for restricted and full data: Just one function, which
  accteps an optional user_id: If it is None, full data is returned, and
  with a user id given, the restricted data
- More atomic access to redis, especially for:
- Check for data-existance in redis and do an auto-ensure-cache.
- Speedup through hashing of scripts and redis' script cache.
- Save schema version into the redis cache and rebuild, if the version
  changed

Client changes:
- Simplified the ConstantsService
- Fixed bug, when receiving an autoupdate with all_data=True from the
  Server
2019-08-08 08:35:02 +02:00
FinnStutzenstein
b4e9b28397 Fix mediafiles for non superadmins 2019-07-13 19:37:49 +02:00