annotate roundup/version_check.py @ 6565:2c2dbfc332ba

Try to handle multiple connections better. The session database is a hot spot. When multiple requests (e.g. 20) come in at the same time session database contention can get great. The original code didn't retry session database access when the open failed. This resulted in errors at the client. The second pass delayed 0.01 seconds and retried. It was better but we still had multiple second stalls. I think the first request got in, everybody else backed up and then retried at the same time. Again they stepped on each other. With logging I would see many counters go all the way to low single digits or to -1 indicating falure. This pass uses randomint to generate delays from 0-.125 seconds in 5ms increments. This performs better in testing. I rarely saw a counter less than 13 (2 failed retries). Current logging starts after 6 failures and counts down until success or failure.
author John Rouillard <rouilj@ieee.org>
date Thu, 16 Dec 2021 20:02:00 -0500
parents 9223ed67af05
children f72381d300a4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
449
141aacfdb34f Centralised the python version check code, bumped version to 2.1.1
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1 #!/usr/bin/env python
2005
fc52d57c6c3e documentation cleanup
Richard Jones <richard@users.sourceforge.net>
parents: 1090
diff changeset
2
5321
4566360871dc Raises python requirement to 2.7.
Bernhard Reiter <bernhard@intevation.de>
parents: 4682
diff changeset
3 # Roundup requires Python 2.7+ as mentioned in doc\installation.txt
5376
64b05e24dbd8 Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents: 5321
diff changeset
4 from __future__ import print_function
6016
9223ed67af05 flake8 cleanup: move module import before statement.
John Rouillard <rouilj@ieee.org>
parents: 5376
diff changeset
5 import sys
449
141aacfdb34f Centralised the python version check code, bumped version to 2.1.1
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
6
6016
9223ed67af05 flake8 cleanup: move module import before statement.
John Rouillard <rouilj@ieee.org>
parents: 5376
diff changeset
7 VERSION_NEEDED = (2, 7)
9223ed67af05 flake8 cleanup: move module import before statement.
John Rouillard <rouilj@ieee.org>
parents: 5376
diff changeset
8
4682
0c2cad65ebba version_check.py: Bump required Python version from 2.1.1+ to 2.5+
anatoly techtonik <techtonik@gmail.com>
parents: 4570
diff changeset
9 if sys.version_info < VERSION_NEEDED:
5376
64b05e24dbd8 Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents: 5321
diff changeset
10 print("Content-Type: text/plain\n")
64b05e24dbd8 Python 3 preparation: convert print to a function.
Joseph Myers <jsm@polyomino.org.uk>
parents: 5321
diff changeset
11 print("Roundup requires Python %s.%s or newer." % VERSION_NEEDED)
449
141aacfdb34f Centralised the python version check code, bumped version to 2.1.1
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
12 sys.exit(0)

Roundup Issue Tracker: http://roundup-tracker.org/