KSP-SpaceDock / SpaceDock

Current Codebase (Python /Flask)
https://spacedock.info
Other
72 stars 33 forks source link

Sanity chacks fail and possibly crash flask / endless cycle #469

Closed V1TA5 closed 1 year ago

V1TA5 commented 1 year ago

SD Took up 80% cpu and mem , wasnt responding and the log had this in it:

Mar  3 15:30:32 sd1a gunicorn[298169]: 2023-03-03 15:30:32,635 ERROR SpaceDock:298169 (psycopg2.errors.StringDataRightTruncation) value too long for type character varying(10000)
Mar  3 15:30:32 sd1a gunicorn[298169]: [SQL: UPDATE "user" SET description=%(description)s WHERE "user".id = %(user_id)s]
Mar  3 15:30:32 sd1a gunicorn[298169]: [parameters: {'description': "# How to Pay for Edgenuity Services?\r\n\r\nOver the past few years, the Edgenuity story has been the subject of intense discussion. While some educa ... (10897 characters truncated) ... 449502)\r\n\r\n[Why It Would Be Imprudent to Pay Someone to Attend My Class](https://boosty.to/henrysmith/posts/5b520a3f-9b06-4c6f-a65b-6d78efce45f4)", 'user_id': 104518}]
Mar  3 15:30:32 sd1a gunicorn[298169]: (Background on this error at: https://sqlalche.me/e/14/9h9h)
Mar  3 15:30:32 sd1a gunicorn[298169]: Traceback (most recent call last):
Mar  3 15:30:32 sd1a gunicorn[298169]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1900, in _execute_context
Mar  3 15:30:32 sd1a gunicorn[298169]:     self.dialect.do_execute(
Mar  3 15:30:32 sd1a gunicorn[298169]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 732, in do_execute
Mar  3 15:30:32 sd1a gunicorn[298169]:     cursor.execute(statement, parameters)
Mar  3 15:30:32 sd1a gunicorn[298169]: psycopg2.errors.StringDataRightTruncation: value too long for type character varying(10000)
Mar  3 15:30:32 sd1a gunicorn[298169]: The above exception was the direct cause of the following exception:
Mar  3 15:30:32 sd1a gunicorn[298169]: Traceback (most recent call last):
Mar  3 15:30:32 sd1a gunicorn[298169]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/flask/app.py", line 1820, in full_dispatch_request
Mar  3 15:30:32 sd1a gunicorn[298169]:     rv = self.dispatch_request()
Mar  3 15:30:32 sd1a gunicorn[298169]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/flask/app.py", line 1796, in dispatch_request
Mar  3 15:30:32 sd1a gunicorn[298169]:     return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
Mar  3 15:30:32 sd1a gunicorn[298169]:   File "/var/www/htdocs/SpaceDock/KerbalStuff/common.py", line 93, in wrapper
Mar  3 15:30:32 sd1a gunicorn[298169]:     return f(*args, **kwargs)
Mar  3 15:30:32 sd1a gunicorn[298169]:   File "/var/www/htdocs/SpaceDock/KerbalStuff/common.py", line 77, in go
Mar  3 15:30:32 sd1a gunicorn[298169]:     db.commit()
Mar  3 15:30:32 sd1a gunicorn[298169]:   File "<string>", line 2, in commit
Mar  3 15:30:32 sd1a gunicorn[298169]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 1451, in commit
Mar  3 15:30:32 sd1a gunicorn[298169]:     self._transaction.commit(_to_root=self.future)
Mar  3 15:30:32 sd1a gunicorn[298169]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 829, in commit
Mar  3 15:30:32 sd1a gunicorn[298169]:     self._prepare_impl()
Mar  3 15:30:32 sd1a gunicorn[298169]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 808, in _prepare_impl
Mar  3 15:30:32 sd1a gunicorn[298169]:     self.session.flush()
Mar  3 15:30:32 sd1a gunicorn[298169]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 3383, in flush
Mar  3 15:30:32 sd1a gunicorn[298169]:     self._flush(objects)
Mar  3 15:30:32 sd1a gunicorn[298169]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 3523, in _flush
Mar  3 15:30:32 sd1a gunicorn[298169]:     transaction.rollback(_capture_exception=True)
Mar  3 15:30:32 sd1a gunicorn[298169]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__
Mar  3 15:30:32 sd1a gunicorn[298169]:     compat.raise_(
Mar  3 15:30:32 sd1a gunicorn[298169]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/util/compat.py", line 208, in raise_
Mar  3 15:30:32 sd1a gunicorn[298169]:     raise exception
Mar  3 15:30:32 sd1a gunicorn[298169]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 3483, in _flush
Mar  3 15:30:32 sd1a gunicorn[298169]:     flush_context.execute()
Mar  3 15:30:32 sd1a gunicorn[298169]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/orm/unitofwork.py", line 456, in execute
Mar  3 15:30:32 sd1a gunicorn[298169]:     rec.execute(self)
Mar  3 15:30:32 sd1a gunicorn[298169]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/orm/unitofwork.py", line 630, in execute
Mar  3 15:30:32 sd1a gunicorn[298169]:     util.preloaded.orm_persistence.save_obj(
Mar  3 15:30:32 sd1a gunicorn[298169]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/orm/persistence.py", line 237, in save_obj
Mar  3 15:30:32 sd1a gunicorn[298169]:     _emit_update_statements(
Mar  3 15:30:32 sd1a gunicorn[298169]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/orm/persistence.py", line 1001, in _emit_update_statements
Mar  3 15:30:32 sd1a gunicorn[298169]:     c = connection._execute_20(
Mar  3 15:30:32 sd1a gunicorn[298169]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1705, in _execute_20
Mar  3 15:30:32 sd1a gunicorn[298169]:     return meth(self, args_10style, kwargs_10style, execution_options)
Mar  3 15:30:32 sd1a gunicorn[298169]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/sql/elements.py", line 333, in _execute_on_connection
Mar  3 15:30:32 sd1a gunicorn[298169]:     return connection._execute_clauseelement(
Mar  3 15:30:32 sd1a gunicorn[298169]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1572, in _execute_clauseelement
Mar  3 15:30:32 sd1a gunicorn[298169]:     ret = self._execute_context(
Mar  3 15:30:32 sd1a gunicorn[298169]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1943, in _execute_context
Mar  3 15:30:32 sd1a gunicorn[298169]:     self._handle_dbapi_exception(
Mar  3 15:30:32 sd1a gunicorn[298169]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 2124, in _handle_dbapi_exception
Mar  3 15:30:32 sd1a gunicorn[298169]:     util.raise_(
Mar  3 15:30:32 sd1a gunicorn[298169]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/util/compat.py", line 208, in raise_
Mar  3 15:30:32 sd1a gunicorn[298169]:     raise exception
Mar  3 15:30:32 sd1a gunicorn[298169]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1900, in _execute_context
Mar  3 15:30:32 sd1a gunicorn[298169]:     self.dialect.do_execute(
Mar  3 15:30:32 sd1a gunicorn[298169]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 732, in do_execute
Mar  3 15:30:32 sd1a gunicorn[298169]:     cursor.execute(statement, parameters)
Mar  3 15:30:32 sd1a gunicorn[298169]: sqlalchemy.exc.DataError: (psycopg2.errors.StringDataRightTruncation) value too long for type character varying(10000)
Mar  3 15:30:32 sd1a gunicorn[298169]: [SQL: UPDATE "user" SET description=%(description)s WHERE "user".id = %(user_id)s]
Mar  3 15:30:32 sd1a gunicorn[298169]: [parameters: {'description': "# How to Pay for Edgenuity Services?\r\n\r\nOver the past few years, the Edgenuity story has been the subject of intense discussion. While some educa ... (10897 characters truncated) ... 449502)\r\n\r\n[Why It Would Be Imprudent to Pay Someone to Attend My Class](https://boosty.to/henrysmith/posts/5b520a3f-9b06-4c6f-a65b-6d78efce45f4)", 'user_id': 104518}]
Mar  3 15:30:32 sd1a gunicorn[298169]: (Background on this error at: https://sqlalche.me/e/14/9h9h)
Mar  3 15:30:44 sd1a celery[298111]: [2023-03-03 15:30:44,024: INFO/MainProcess] Task KerbalStuff.celery.send_mail[ce25cea9-b6d5-4706-9658-8c18fb344920] received
Mar  3 15:30:44 sd1a celery[298179]: [2023-03-03 15:30:44,042: INFO/ForkPoolWorker-2] Sending email from support@spacedock.info to 3 recipients
Mar  3 15:31:17 sd1a gunicorn[298157]: 2023-03-03 15:31:17,956 ERROR SpaceDock:298157 (psycopg2.errors.StringDataRightTruncation) value too long for type character varying(10000)
Mar  3 15:31:17 sd1a gunicorn[298157]: [SQL: UPDATE "user" SET description=%(description)s WHERE "user".id = %(user_id)s]
Mar  3 15:31:17 sd1a gunicorn[298157]: [parameters: {'description': "# How to Pay for Edgenuity Services?\r\n\r\nOver the past few years, the Edgenuity story has been the subject of intense discussion. While some educa ... (10832 characters truncated) ... 449502)\r\n\r\n[Why It Would Be Imprudent to Pay Someone to Attend My Class](https://boosty.to/henrysmith/posts/5b520a3f-9b06-4c6f-a65b-6d78efce45f4)", 'user_id': 104518}]
Mar  3 15:31:17 sd1a gunicorn[298157]: (Background on this error at: https://sqlalche.me/e/14/9h9h)
Mar  3 15:31:17 sd1a gunicorn[298157]: Traceback (most recent call last):
Mar  3 15:31:17 sd1a gunicorn[298157]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1900, in _execute_context
Mar  3 15:31:17 sd1a gunicorn[298157]:     self.dialect.do_execute(
Mar  3 15:31:17 sd1a gunicorn[298157]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 732, in do_execute
Mar  3 15:31:17 sd1a gunicorn[298157]:     cursor.execute(statement, parameters)
Mar  3 15:31:17 sd1a gunicorn[298157]: psycopg2.errors.StringDataRightTruncation: value too long for type character varying(10000)
Mar  3 15:31:18 sd1a gunicorn[298157]: The above exception was the direct cause of the following exception:
Mar  3 15:31:18 sd1a gunicorn[298157]: Traceback (most recent call last):
Mar  3 15:31:18 sd1a gunicorn[298157]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/flask/app.py", line 1820, in full_dispatch_request
Mar  3 15:31:18 sd1a gunicorn[298157]:     rv = self.dispatch_request()
Mar  3 15:31:18 sd1a gunicorn[298157]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/flask/app.py", line 1796, in dispatch_request
Mar  3 15:31:18 sd1a gunicorn[298157]:     return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
Mar  3 15:31:18 sd1a gunicorn[298157]:   File "/var/www/htdocs/SpaceDock/KerbalStuff/common.py", line 93, in wrapper
Mar  3 15:31:18 sd1a gunicorn[298157]:     return f(*args, **kwargs)
Mar  3 15:31:18 sd1a gunicorn[298157]:   File "/var/www/htdocs/SpaceDock/KerbalStuff/common.py", line 77, in go
Mar  3 15:31:18 sd1a gunicorn[298157]:     db.commit()
Mar  3 15:31:18 sd1a gunicorn[298157]:   File "<string>", line 2, in commit
Mar  3 15:31:18 sd1a gunicorn[298157]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 1451, in commit
Mar  3 15:31:18 sd1a gunicorn[298157]:     self._transaction.commit(_to_root=self.future)
Mar  3 15:31:18 sd1a gunicorn[298157]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 829, in commit
Mar  3 15:31:18 sd1a gunicorn[298157]:     self._prepare_impl()
Mar  3 15:31:18 sd1a gunicorn[298157]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 808, in _prepare_impl
Mar  3 15:31:18 sd1a gunicorn[298157]:     self.session.flush()
Mar  3 15:31:18 sd1a gunicorn[298157]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 3383, in flush
Mar  3 15:31:18 sd1a gunicorn[298157]:     self._flush(objects)
Mar  3 15:31:18 sd1a gunicorn[298157]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 3523, in _flush
Mar  3 15:31:18 sd1a gunicorn[298157]:     transaction.rollback(_capture_exception=True)
Mar  3 15:31:18 sd1a gunicorn[298157]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/util/langhelpers.py", line 70, in __exit__
Mar  3 15:31:18 sd1a gunicorn[298157]:     compat.raise_(
Mar  3 15:31:18 sd1a gunicorn[298157]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/util/compat.py", line 208, in raise_
Mar  3 15:31:18 sd1a gunicorn[298157]:     raise exception
Mar  3 15:31:18 sd1a gunicorn[298157]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 3483, in _flush
Mar  3 15:31:18 sd1a gunicorn[298157]:     flush_context.execute()
Mar  3 15:31:18 sd1a gunicorn[298157]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/orm/unitofwork.py", line 456, in execute
Mar  3 15:31:18 sd1a gunicorn[298157]:     rec.execute(self)
Mar  3 15:31:18 sd1a gunicorn[298157]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/orm/unitofwork.py", line 630, in execute
Mar  3 15:31:18 sd1a gunicorn[298157]:     util.preloaded.orm_persistence.save_obj(
Mar  3 15:31:18 sd1a gunicorn[298157]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/orm/persistence.py", line 237, in save_obj
Mar  3 15:31:18 sd1a gunicorn[298157]:     _emit_update_statements(
Mar  3 15:31:18 sd1a gunicorn[298157]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/orm/persistence.py", line 1001, in _emit_update_statements
Mar  3 15:31:18 sd1a gunicorn[298157]:     c = connection._execute_20(
Mar  3 15:31:18 sd1a gunicorn[298157]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1705, in _execute_20
Mar  3 15:31:18 sd1a gunicorn[298157]:     return meth(self, args_10style, kwargs_10style, execution_options)
Mar  3 15:31:18 sd1a gunicorn[298157]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/sql/elements.py", line 333, in _execute_on_connection
Mar  3 15:31:18 sd1a gunicorn[298157]:     return connection._execute_clauseelement(
Mar  3 15:31:18 sd1a gunicorn[298157]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1572, in _execute_clauseelement
Mar  3 15:31:18 sd1a gunicorn[298157]:     ret = self._execute_context(
Mar  3 15:31:18 sd1a gunicorn[298157]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1943, in _execute_context
Mar  3 15:31:18 sd1a gunicorn[298157]:     self._handle_dbapi_exception(
Mar  3 15:31:18 sd1a gunicorn[298157]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 2124, in _handle_dbapi_exception
Mar  3 15:31:18 sd1a gunicorn[298157]:     util.raise_(
Mar  3 15:31:18 sd1a gunicorn[298157]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/util/compat.py", line 208, in raise_
Mar  3 15:31:18 sd1a gunicorn[298157]:     raise exception
Mar  3 15:31:18 sd1a gunicorn[298157]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1900, in _execute_context
Mar  3 15:31:18 sd1a gunicorn[298157]:     self.dialect.do_execute(
Mar  3 15:31:18 sd1a gunicorn[298157]:   File "/var/www/htdocs/SpaceDock/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 732, in do_execute
Mar  3 15:31:18 sd1a gunicorn[298157]:     cursor.execute(statement, parameters)
Mar  3 15:31:18 sd1a gunicorn[298157]: sqlalchemy.exc.DataError: (psycopg2.errors.StringDataRightTruncation) value too long for type character varying(10000)
Mar  3 15:31:18 sd1a gunicorn[298157]: [SQL: UPDATE "user" SET description=%(description)s WHERE "user".id = %(user_id)s]
Mar  3 15:31:18 sd1a gunicorn[298157]: [parameters: {'description': "# How to Pay for Edgenuity Services?\r\n\r\nOver the past few years, the Edgenuity story has been the subject of intense discussion. While some educa ... (10832 characters truncated) ... 449502)\r\n\r\n[Why It Would Be Imprudent to Pay Someone to Attend My Class](https://boosty.to/henrysmith/posts/5b520a3f-9b06-4c6f-a65b-6d78efce45f4)", 'user_id': 104518}]
Mar  3 15:31:18 sd1a gunicorn[298157]: (Background on this error at: https://sqlalche.me/e/14/9h9h)
HebaruSan commented 1 year ago

The actual error is:

psycopg2.errors.StringDataRightTruncation: value too long for type character varying(10000)

So it looks like one of the spammers is trying to enter a description that's too long.

HebaruSan commented 1 year ago

@V1TA5 can you block that IP? There may not be a loop, they may just have their bot submitting the same thing over and over.

HebaruSan commented 1 year ago

Checking the recently created users list, we really badly need user deletion. The spammers are now posting things of dubious legality and I wouldn't want you to get in trouble for hosting it.

HebaruSan commented 1 year ago

The user description field is now exclusively used by spammers. Going through the most recent five pages of users, the legit ones don't enter a description. Maybe the spammers would go away if we got rid of that field.