akiver / cs-demo-manager

Companion application for your Counter-Strike demos.
https://cs-demo-manager.com
MIT License
1.44k stars 195 forks source link

Postgresql match insertion error on 3.7.1 #909

Closed K-orne closed 2 months ago

K-orne commented 3 months ago

Describe the bug

Analying and inserting a match on 3.7.1 leads to the following insertion error in the logfile:

Sat, 10 Aug 2024 12:59:39 GMT | ERROR | server | Error while inserting match
Sat, 10 Aug 2024 12:59:39 GMT | ERROR | server | Error: PSQL timeout
    at C:\Users\rover\AppData\Local\Programs\cs-demo-manager\resources\src\node\database\psql\execute-psql.ts:31:27
    at ChildProcess.exithandler (node:child_process:430:5)
    at ChildProcess.emit (node:events:519:28)
    at maybeClose (node:internal/child_process:1105:16)
    at Process.ChildProcess._handle.onexit (node:internal/child_process:305:5)

Downgrading to 3.7.0 by reinstalling and reanalyzing the same demo file succeeds without issue. No other configuration changes between upgrades.

Demo links

No response

Steps to reproduce

Update from 3.7.0 to 3.7.1 Analyze a demo The demo fails to be inserted after analysis

Expected behavior

Demo data is correctly inserted

How often does this bug happen?

Every time

Log file

No response

Environment information

Version: 3.7.1 OS: win32 x64 10.0.22631 Electron: 31.2.0 Chrome: 126.0.6478.127 Last database migrations: v4 - 2024-06-29T09:57:38.715Z v3 - 2024-06-16T20:52:29.482Z v2 - 2024-04-03T22:03:40.987Z v1 - 2023-12-11T11:07:54.990Z

Additional context

No response

akiver commented 3 months ago

Could you upload the demo please? It seems like your database process stopped/timeout that's why the insertion failed.

K-orne commented 3 months ago

Sure, I uploaded one here: https://pb.khorne.me/f/tv5rt3

akiver commented 3 months ago

Thanks, the demo is OK, the problem comes from your database server which stops responding. It's hard to tell what's the reason, you may look at your postgresql logs to find more information.

K-orne commented 3 months ago

That unfortunately makes little sense to me when just reinstalling 3.7.0 without touching the DB "fixes" the issue.

I'll have a look at the logs tomorrow however.

K-orne commented 3 months ago

Alright, now it's actually funky. I was able to analyze and add some demos, but not others and the only error message in the psql log is the following:

2024-08-15 19:10:47 CEST [4155324-1] csdm@csdm ERROR:  permission denied to create database
2024-08-15 19:10:47 CEST [4155324-2] csdm@csdm STATEMENT:  CREATE DATABASE csdm WITH ENCODING 'UTF8'

which makes..not a lot of sense? The DB already exists and the connection works. The analysis log shows:

{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
Grenade nil in decoy start event
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
{unknown event "bullet_damage" 0}
PSQL timeout
Error: PSQL timeout
    at C:\Users\rover\AppData\Local\Programs\cs-demo-manager\resources\src\node\database\psql\execute-psql.ts:31:27
    at ChildProcess.exithandler (node:child_process:430:5)
    at ChildProcess.emit (node:events:519:28)
    at maybeClose (node:internal/child_process:1105:16)
    at Process.ChildProcess._handle.onexit (node:internal/child_process:305:5)
akiver commented 3 months ago

Could you:

  1. Clear the log file (from Settings -> About)
  2. Reproduce the error
  3. Send the full log file

I think the real problem is your database process stopping responding (hence the timeout and the insertion failure)

K-orne commented 3 months ago

Can certainly do:

csdm.log

I can naturally see the log file saying there's a PSQL timeout, but the behavior doesn't make much sense to me when just downgrading csdm to the previous version fixes a timeout error, as in, I don't see how the issue can stem from anything but a change in csdm. Is there a way to get more verbose logging?

akiver commented 3 months ago

Thanks, the timeout error happens only with the v3.7.1 because since this version we don't wait indefinitely for the psql connection to be established (see #890). The next version will wait for 10s instead of 5s while connecting to the database, it may help.

Are you using a remote database?

K-orne commented 3 months ago

Hm, interesting. I do use a remote database, connected over a wireguard/tailscale tunnel. But I'm not quite sure why a connection would take 5s to be established.

K-orne commented 2 months ago

Seems to be fixed in 3.8.0 :)

Thank you!