dst: /forms/applications/NewUserPublic/edit?mode=quick |
ret: /members_only/committee/CommitteeForm/viewExecCommittee?multicolumns=1&id=FCF000046DF |
word: Back to what I was doing |
Site Root: /data/aipn/current/aipn_org/
userid: None
dbname: aipn
Accept: */*
Host: www.aien.org
Referer: https://www.aipn.org/forms/login/pushAndJump?ret=/members_only/committee/CommitteeForm/viewExecCommittee%3Fmulticolumns%3D1%26amp%3Bid%3DFCF000046DF&word=Back%20to%20what%20I%20was%20doing&dst=/forms/applications/NewUserPublic/edit?mode=quick
User-Agent: claudebot
X-Forwarded-Proto: https
X-Forwarded-Protocol: https
SCRIPT_NAME: /forms/login/pushAndJump
When: Mar 29, 2024 1:25 am
PID: 5576
Error in OperationalError. Here is a traceback of function calls, starting with the closest to that error. |
Python 3.11.0: /home/maxx/lib/matrixmaxx3/bin/uwsgi Fri Mar 29 01:36:41 2024 |
OperationalError: (1040, 'Too many connections')
/home/maxx/lib/matrixmaxx3/lib/python3.11/site-packages/MySQLdb/connections.py in __init__(self=<_mysql.connection open to '(null)' at 0x55caa1dedb40>, *args=(), **kwargs='<redacted>') |
180 kwargs2["client_flag"] = client_flag |
181 |
182 # PEP-249 requires autocommit to be initially off |
183 autocommit = kwargs2.pop("autocommit", False) |
184 |
185 super().__init__(*args, **kwargs2) |
186 self.cursorclass = cursorclass |
187 self.encoders = {k: v for k, v in conv.items() if type(k) is not int} |
188 |
189 self._server_version = tuple( |
builtinsuper = <class 'super'> ).__init__ = <slot wrapper '__init__' of 'super' objects> args = () kwargs2 = '<redacted>' |
/home/maxx/lib/matrixmaxx3/lib/python3.11/site-packages/MySQLdb/__init__.py in Connect(*args=(), **kwargs='<redacted>') |
118 |
119 def Connect(*args, **kwargs): |
120 """Factory function for connections.Connection.""" |
121 from MySQLdb.connections import Connection |
122 |
123 return Connection(*args, **kwargs) |
124 |
125 |
126 connect = Connection = Connect |
127 |
Connection = <class 'MySQLdb.connections.Connection'> args = () kwargs = '<redacted>' |
/data/aipn/current/libs/framework/DBConn.py in getDBConnectionByKWargs(kwargs='<redacted>', brokerId=0, newinstance=False) |
36 if "use_unicode" not in kwargs: |
37 kwargs["use_unicode"] = True |
38 kwargs["charset"] = "utf8" |
39 DBname = kwargs["db"] |
40 if newinstance or (DBname, brokerId) not in dbconnlist: |
41 newConn = MySQLdb.Connection(**kwargs) |
42 if hasattr(newConn, "autocommit"): |
43 newConn.autocommit(True) |
44 dbconnlist[(DBname, brokerId)] = newConn |
45 if oldest_conn is None: |
newConn undefined global MySQLdb = <module 'MySQLdb' from '/home/maxx/lib/matrixmaxx3/lib/python3.11/site-packages/MySQLdb/__init__.py'> MySQLdb.Connection = <function Connect at 0x7fcca9a787c0> kwargs = '<redacted>' |
/data/aipn/current/libs/framework/DBConn.py in getDBConnection(options={'MaxxRoot': '/data/aipn/current/', 'Prefix': 'aipn', 'theme': 'www', 'production': 'on', 'gitBranch': 'maxx22.4', 'ErrorStack': 'off', 'KillPenguin': 'off', 'ClientId': 'aipn', 'acronym': 'AIEN', 'DBuser': 'root', 'DBpassword': 'fvNhIKy+^WzGuBF+', 'DBname': 'aipn', 'auth': 'on', 'MaxxSessionCookieKey': 'session', 'LoginProtocol': 'https', 'ProtectedDir': '/data/aipn/protectedFiles', 'ErrorEmail': 'errors-aipn_error_www@matrixmaxx.com', 'listServer': 'mailingmaxx.aipn.org', 'PublicMaxxURL': 'www.aien.org', 'NonMaxxPublicSiteURL': 'www.aien.org', 'wsgi': True, 'server_name': 'www.aien.org'}) |
62 kwargs = {'user':user, 'passwd':passwd} |
63 for option, arg in option2args.items(): |
64 if option in options: |
65 kwargs[arg] = options[option] |
66 |
67 return getDBConnectionByKWargs(kwargs) |
68 |
69 |
70 def getDBCursor(options, *args, **kwargs): |
71 conn = getDBConnection(options) |
global getDBConnectionByKWargs = <function getDBConnectionByKWargs at 0x7fcca4490180> kwargs = '<redacted>' |
/data/aipn/current/libs/framework/Auth.py in pickNewSessionId(options={'MaxxRoot': '/data/aipn/current/', 'Prefix': 'aipn', 'theme': 'www', 'production': 'on', 'gitBranch': 'maxx22.4', 'ErrorStack': 'off', 'KillPenguin': 'off', 'ClientId': 'aipn', 'acronym': 'AIEN', 'DBuser': 'root', 'DBpassword': 'fvNhIKy+^WzGuBF+', 'DBname': 'aipn', 'auth': 'on', 'MaxxSessionCookieKey': 'session', 'LoginProtocol': 'https', 'ProtectedDir': '/data/aipn/protectedFiles', 'ErrorEmail': 'errors-aipn_error_www@matrixmaxx.com', 'listServer': 'mailingmaxx.aipn.org', 'PublicMaxxURL': 'www.aien.org', 'NonMaxxPublicSiteURL': 'www.aien.org', 'wsgi': True, 'server_name': 'www.aien.org'}, username='', clientip='34.200.219.10', userAgent='claudebot', sessionTimeout=30, e_uid=0, r_uid=0) |
342 def pickNewSessionId(options, username, clientip, userAgent, |
343 sessionTimeout, e_uid, r_uid): |
344 # try 100 times to get a session id that's not taken |
345 for i in range(100): |
346 sessionId = secureRandom.randrange(0,2**63-1) |
347 dbcon = DBConn.getDBConnection(options) |
348 sql = "insert into InteractiveSession set sessionid=%s," % sessionId |
349 sql += "username='%s'," % dbcon.escape_string(username).decode('utf-8') |
350 sql += "clientip='%s'," % clientip |
351 sql += "useragent='%s'," % dbcon.escape_string(userAgent).decode('utf-8') |
global dbcon = None global DBConn = <module 'libs.framework.DBConn' from '/data/aipn/current/libs/framework/DBConn.py'> DBConn.getDBConnection = <function getDBConnection at 0x7fcca4491940> options = {'MaxxRoot': '/data/aipn/current/', 'Prefix': 'aipn', 'theme': 'www', 'production': 'on', 'gitBranch': 'maxx22.4', 'ErrorStack': 'off', 'KillPenguin': 'off', 'ClientId': 'aipn', 'acronym': 'AIEN', 'DBuser': 'root', 'DBpassword': 'fvNhIKy+^WzGuBF+', 'DBname': 'aipn', 'auth': 'on', 'MaxxSessionCookieKey': 'session', 'LoginProtocol': 'https', 'ProtectedDir': '/data/aipn/protectedFiles', 'ErrorEmail': 'errors-aipn_error_www@matrixmaxx.com', 'listServer': 'mailingmaxx.aipn.org', 'PublicMaxxURL': 'www.aien.org', 'NonMaxxPublicSiteURL': 'www.aien.org', 'wsgi': True, 'server_name': 'www.aien.org'} |
/data/aipn/current/libs/framework/Auth.py in emitSession(req=<libs.framework.MaxxRequestWrapper.MaxxRequestWrapper object at 0x7fcca2286910>, username='', e_uid=0, r_uid=0, options={'MaxxRoot': '/data/aipn/current/', 'Prefix': 'aipn', 'theme': 'www', 'production': 'on', 'gitBranch': 'maxx22.4', 'ErrorStack': 'off', 'KillPenguin': 'off', 'ClientId': 'aipn', 'acronym': 'AIEN', 'DBuser': 'root', 'DBpassword': 'fvNhIKy+^WzGuBF+', 'DBname': 'aipn', 'auth': 'on', 'MaxxSessionCookieKey': 'session', 'LoginProtocol': 'https', 'ProtectedDir': '/data/aipn/protectedFiles', 'ErrorEmail': 'errors-aipn_error_www@matrixmaxx.com', 'listServer': 'mailingmaxx.aipn.org', 'PublicMaxxURL': 'www.aien.org', 'NonMaxxPublicSiteURL': 'www.aien.org', 'wsgi': True, 'server_name': 'www.aien.org'}, sessionId='0', longSession=0, casService=None, casPrimary=False, renew=False) |
296 |
297 |
298 if sessionId == '0' or failedUpdate: |
299 clientip = getClientIP(req) |
300 userAgent = req.headers_in.get('User-Agent', '') |
301 sessionId = pickNewSessionId(options, username, clientip, userAgent, |
302 sessionTimeout, e_uid, r_uid) |
303 |
304 sessionCookieKey = str(options.get('MaxxSessionCookieKey', 'session')) |
305 usernameCookieKey = str(options.get('MaxxUsernameCookieKey', 'username')) |
sessionId = '0' global pickNewSessionId = <function pickNewSessionId at 0x7fcca38c9e40> options = {'MaxxRoot': '/data/aipn/current/', 'Prefix': 'aipn', 'theme': 'www', 'production': 'on', 'gitBranch': 'maxx22.4', 'ErrorStack': 'off', 'KillPenguin': 'off', 'ClientId': 'aipn', 'acronym': 'AIEN', 'DBuser': 'root', 'DBpassword': 'fvNhIKy+^WzGuBF+', 'DBname': 'aipn', 'auth': 'on', 'MaxxSessionCookieKey': 'session', 'LoginProtocol': 'https', 'ProtectedDir': '/data/aipn/protectedFiles', 'ErrorEmail': 'errors-aipn_error_www@matrixmaxx.com', 'listServer': 'mailingmaxx.aipn.org', 'PublicMaxxURL': 'www.aien.org', 'NonMaxxPublicSiteURL': 'www.aien.org', 'wsgi': True, 'server_name': 'www.aien.org'} username = '' clientip = '34.200.219.10' userAgent = 'claudebot' sessionTimeout = 30 e_uid = 0 r_uid = 0 |
/data/aipn/current/libs/framework/Auth.py in getUserAndSession(req=<libs.framework.MaxxRequestWrapper.MaxxRequestWrapper object at 0x7fcca2286910>, site=<libs.framework.WebSite.WebSite object at 0x7fcc9ff49750>, options={'MaxxRoot': '/data/aipn/current/', 'Prefix': 'aipn', 'theme': 'www', 'production': 'on', 'gitBranch': 'maxx22.4', 'ErrorStack': 'off', 'KillPenguin': 'off', 'ClientId': 'aipn', 'acronym': 'AIEN', 'DBuser': 'root', 'DBpassword': 'fvNhIKy+^WzGuBF+', 'DBname': 'aipn', 'auth': 'on', 'MaxxSessionCookieKey': 'session', 'LoginProtocol': 'https', 'ProtectedDir': '/data/aipn/protectedFiles', 'ErrorEmail': 'errors-aipn_error_www@matrixmaxx.com', 'listServer': 'mailingmaxx.aipn.org', 'PublicMaxxURL': 'www.aien.org', 'NonMaxxPublicSiteURL': 'www.aien.org', 'wsgi': True, 'server_name': 'www.aien.org'}) |
99 |
100 # for private pages we need to know who they are |
101 # check for a session first |
102 (user, session, userid, r_uid, sessionData) = hasValidSession(req, options) |
103 if not session: |
104 session, _ = emitSession(req, '', 0, options=options) |
105 |
106 if sessionData == None: |
107 sessionData = {} |
108 |
session = 0 _ undefined global emitSession = <function emitSession at 0x7fcca38c9da0> req = <libs.framework.MaxxRequestWrapper.MaxxRequestWrapper object at 0x7fcca2286910> options = {'MaxxRoot': '/data/aipn/current/', 'Prefix': 'aipn', 'theme': 'www', 'production': 'on', 'gitBranch': 'maxx22.4', 'ErrorStack': 'off', 'KillPenguin': 'off', 'ClientId': 'aipn', 'acronym': 'AIEN', 'DBuser': 'root', 'DBpassword': 'fvNhIKy+^WzGuBF+', 'DBname': 'aipn', 'auth': 'on', 'MaxxSessionCookieKey': 'session', 'LoginProtocol': 'https', 'ProtectedDir': '/data/aipn/protectedFiles', 'ErrorEmail': 'errors-aipn_error_www@matrixmaxx.com', 'listServer': 'mailingmaxx.aipn.org', 'PublicMaxxURL': 'www.aien.org', 'NonMaxxPublicSiteURL': 'www.aien.org', 'wsgi': True, 'server_name': 'www.aien.org'} |
/data/aipn/current/libs/framework/WebManager.py in _newRequest(self=<libs.framework.WebManager.WebManager object at 0x7fcca2eafd10>, req=<libs.framework.MaxxRequestWrapper.MaxxRequestWrapper object at 0x7fcca2286910>) |
211 try: # processRequest |
212 # authenticate |
213 if 'auth' in options and options['auth'] == 'on': |
214 # rc is returnCode. For unauthorized page, it's 302. |
215 (user, session, userid, sessionData, rc) = \ |
216 Auth.getUserAndSession(req, site, options) |
217 if not user: # faild to authenticate: already output error |
218 return rc # should this be a 401 not authorized? |
219 req.user = user |
220 req.session = session |
global Auth = <module 'libs.framework.Auth' from '/data/aipn/current/libs/framework/Auth.py'> Auth.getUserAndSession = <function getUserAndSession at 0x7fcca38c9a80> req = <libs.framework.MaxxRequestWrapper.MaxxRequestWrapper object at 0x7fcca2286910> site = <libs.framework.WebSite.WebSite object at 0x7fcc9ff49750> options = {'MaxxRoot': '/data/aipn/current/', 'Prefix': 'aipn', 'theme': 'www', 'production': 'on', 'gitBranch': 'maxx22.4', 'ErrorStack': 'off', 'KillPenguin': 'off', 'ClientId': 'aipn', 'acronym': 'AIEN', 'DBuser': 'root', 'DBpassword': 'fvNhIKy+^WzGuBF+', 'DBname': 'aipn', 'auth': 'on', 'MaxxSessionCookieKey': 'session', 'LoginProtocol': 'https', 'ProtectedDir': '/data/aipn/protectedFiles', 'ErrorEmail': 'errors-aipn_error_www@matrixmaxx.com', 'listServer': 'mailingmaxx.aipn.org', 'PublicMaxxURL': 'www.aien.org', 'NonMaxxPublicSiteURL': 'www.aien.org', 'wsgi': True, 'server_name': 'www.aien.org'} |