PennyDreadfulMTG / Penny-Dreadful-Tools

A suite of tools for the Penny Dreadful MTGO community
https://pennydreadfulmagic.com
MIT License
40 stars 28 forks source link

Multiple 500 errors at /api/upload #5883

Closed bakert closed 4 years ago

bakert commented 5 years ago

https://github.com/PennyDreadfulMTG/perf-reports/issues/42385

bakert commented 5 years ago
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '212783687' for key 'PRIMARY'") [SQL: 'INSERT INTO match (id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (212783687, 1, 'PD League', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)

Reported on logsite by logged_out

            --------------------------------------------------------------------------------
            Request Method: POST
            Path: /api/upload?
            Cookies: {}
            Endpoint: upload
            View Args: {}
            Person: logged_out
            Referrer: None
            Request Data: {'match_id': '212783687', 'lines': "PennyDreadful\r\nPD League\r\nBuggedCardObserver, LeagueObserver, PennyDreadfulLegality\r\nRareProducts,LasersDuFutur\r\n\r\n== Game 1 (654304018) ==\r\n[Time] 1544490931\r\n[12:15:31] PDBot has started watching.\r\n[12:15:31] RareProducts joined the game.\r\n[12:15:32] LasersDuFutur joined the game.\r\n[League] Goblin Midrange by rareproducts (30443) vs Beasties by lasersdufutur (30427)\r\n[12:15:36] [CHAT] PDBot: [sD] Good luck in your League match!\r\n[12:15:36] [CHAT] PDBot: [sD] Due to a Magic Online bug, PDBot is unable to tell which player is which.  Please report this league match manually.\r\n[12:15:38] RareProducts chooses to play first.\r\n[12:15:45] RareProducts mulligans to 6 cards.\r\n[12:15:47] LasersDuFutur keeps this hand.\r\n[12:15:49] RareProducts mulligans to 5 cards.\r\n[12:15:56] RareProducts keeps this hand.\r\n[12:15:59] RareProducts puts 1 card on top of their library.\r\n[12:15:59] Turn 1: RareProducts\r\n[12:15:59] RareProducts skips their draw step.\r\n[12:16:03] RareProducts plays [Mountain].\r\n[12:16:06] Turn 1: LasersDuFutur\r\n[12:16:11] LasersDuFutur plays [Mountain Valley].\r\n[12:16:13] Turn 2: RareProducts\r\n[12:16:15] RareProducts plays [Swamp].\r\n[12:16:17] RareProducts casts [Frogtosser Banneret].\r\n[12:16:24] LasersDuFutur is being attacked by [Frogtosser Banneret].\r\n[12:16:26] Turn 2: LasersDuFutur\r\n[12:16:28] LasersDuFutur activates an ability of [Mountain Valley] ( Search your library for a Mountain or Forest card, put it onto the battlefield, then shuffle your...).\r\n[12:16:49] LasersDuFutur plays [Mountain Valley].\r\n[12:16:53] Turn 3: RareProducts\r\n[12:17:00] RareProducts casts [Mad Auntie].\r\n[12:17:07] LasersDuFutur is being attacked by [Frogtosser Banneret].\r\n[12:17:40] Turn 3: LasersDuFutur\r\n[12:17:41] LasersDuFutur activates an ability of [Mountain Valley] ( Search your library for a Mountain or Forest card, put it onto the battlefield, then shuffle your...).\r\n[12:17:41] LasersDuFutur plays [Mountain].\r\n[12:17:41] LasersDuFutur casts [Electrostatic Pummeler].\r\n[12:17:42] LasersDuFutur puts triggered ability from [Electrostatic Pummeler] onto the stack (When Electrostatic Pummeler enters the battlefield, you get {EEE}.).\r\n[12:17:42] LasersDuFutur gains 3 energy from [Electrostatic Pummeler]'s ability.\r\n[12:17:45] Turn 4: RareProducts\r\n[12:17:47] RareProducts plays [Cinder Barrens].\r\n[12:17:51] RareProducts casts [Mad Auntie].\r\n[12:18:07] LasersDuFutur is being attacked by [Frogtosser Banneret].\r\n[12:18:14] Turn 4: LasersDuFutur\r\n[12:18:18] LasersDuFutur plays [Forest].\r\n[12:18:35] LasersDuFutur casts [Fanatic of Xenagos].\r\n[12:18:41] The chosen player is RareProducts\r\n[12:18:43] RareProducts didn't pay the tribute for [Fanatic of Xenagos].\r\n[12:18:44] LasersDuFutur puts triggered ability from [Fanatic of Xenagos] onto the stack (When Fanatic of Xenagos enters the battlefield, if tribute wasn't paid, it gets +1/+1 and gains ha...).\r\n[12:19:05] RareProducts is being attacked by [Fanatic of Xenagos].\r\n[12:19:13] [Mad Auntie] blocks [Fanatic of Xenagos].\r\n[12:19:20] RareProducts activates an ability of [Mad Auntie] targeting [Mad Auntie] ( Regenerate another target Goblin.).\r\n[12:19:31] LasersDuFutur casts [Pillar of Flame] targeting RareProducts.\r\n[12:19:37] Turn 5: RareProducts\r\n[12:19:48] RareProducts casts [Frogtosser Banneret].\r\n[12:19:58] RareProducts casts [Goblin Warchief].\r\n[12:20:12] LasersDuFutur is being attacked by [Goblin Warchief], [Frogtosser Banneret], [Mad Auntie], [Mad Auntie], and [Frogtosser Banneret].\r\n[12:20:20] [Electrostatic Pummeler] blocks [Goblin Warchief].\r\n[12:20:39] Turn 5: LasersDuFutur\r\n[12:20:45] LasersDuFutur plays [Mountain].\r\n[12:20:48] LasersDuFutur has conceded from the game.\r\nWinner: RareProducts\r\nGame 1 Completed.\r\n[12:20:52] RareProducts has left the game.\r\n== Game 2 (654304684) ==\r\n[Time] 1544491290\r\n[12:21:30] PDBot has started watching.\r\n[12:21:39] LasersDuFutur chooses to play first.\r\n[12:21:43] LasersDuFutur keeps this hand.\r\n[12:21:46] RareProducts keeps this hand.\r\n[12:21:46] Turn 1: LasersDuFutur\r\n[12:21:52] LasersDuFutur skips their draw step.\r\n[12:21:53] LasersDuFutur plays [Forest].\r\n[12:21:56] LasersDuFutur casts [Attune with Aether].\r\n[12:21:59] LasersDuFutur reveals [Mountain].\r\n[12:21:59] LasersDuFutur gains 2 energy from [Attune with Aether]'s ability.\r\n[12:22:05] Turn 1: RareProducts\r\n[12:22:06] RareProducts plays [Cinder Barrens].\r\n[12:22:09] Turn 2: LasersDuFutur\r\n[12:22:22] LasersDuFutur plays [Rugged Highlands].\r\n[12:22:22] LasersDuFutur puts triggered ability from [Rugged Highlands] onto the stack (When Rugged Highlands enters the battlefield, you gain 1 life.).\r\n[12:22:31] LasersDuFutur casts [Attune with Aether].\r\n[12:22:34] LasersDuFutur reveals [Forest].\r\n[12:22:34] LasersDuFutur gains 2 energy from [Attune with Aether]'s ability.\r\n[12:22:39] Turn 2: RareProducts\r\n[12:22:41] RareProducts plays [Foreboding Ruins].\r\n[12:22:47] RareProducts casts [Frogtosser Banneret].\r\n[12:22:59] LasersDuFutur is being attacked by [Frogtosser Banneret].\r\n[12:23:02] Turn 3: LasersDuFutur\r\n[12:23:10] LasersDuFutur plays [Mountain].\r\n[12:23:24] LasersDuFutur casts [Fanatic of Xenagos].\r\n[12:23:26] The chosen player is RareProducts\r\n[12:23:31] RareProducts didn't pay the tribute for [Fanatic of Xenagos].\r\n[12:23:31] LasersDuFutur puts triggered ability from [Fanatic of Xenagos] onto the stack (When Fanatic of Xenagos enters the battlefield, if tribute wasn't paid, it gets +1/+1 and gains ha...).\r\n[12:23:39] RareProducts is being attacked by [Fanatic of Xenagos].\r\n[12:23:43] Turn 3: RareProducts\r\n[12:23:47] RareProducts plays [Mountain].\r\n[12:24:07] RareProducts casts [Goblin Warchief].\r\n[12:24:13] RareProducts casts [Goblin Cratermaker].\r\n[12:24:27] LasersDuFutur is being attacked by [Goblin Warchief] and [Frogtosser Banneret].\r\n[12:24:35] Turn 4: LasersDuFutur\r\n[12:24:41] LasersDuFutur plays [Forest].\r\n[12:25:23] LasersDuFutur casts [Electrostatic Pummeler].\r\n[12:25:28] LasersDuFutur puts triggered ability from [Electrostatic Pummeler] onto the stack (When Electrostatic Pummeler enters the battlefield, you get {EEE}.).\r\n[12:25:30] LasersDuFutur gains 3 energy from [Electrostatic Pummeler]'s ability.\r\n[12:25:37] Turn 4: RareProducts\r\n[12:25:45] RareProducts plays [Mountain].\r\n[12:25:52] RareProducts casts [Boggart Harbinger].\r\n[12:25:58] RareProducts puts triggered ability from [Boggart Harbinger] onto the stack (When Boggart Harbinger enters the battlefield, you may search your library for a Goblin card, reve...).\r\n[12:26:21] RareProducts reveals [Warren Weirding].\r\n[12:26:27] RareProducts casts [Goblin Ringleader].\r\n[12:26:34] RareProducts puts triggered ability from [Goblin Ringleader] onto the stack (When Goblin Ringleader enters the battlefield, reveal the top four cards of your library. Put all ...).\r\n[12:26:37] RareProducts reveals 4 cards with [Goblin Ringleader]'s ability: [Wort, Boggart Auntie], [Foreboding Ruins], [Warren Weirding], and [Warren Weirding].\r\n[12:26:41] RareProducts puts [Wort, Boggart Auntie], [Warren Weirding], and [Warren Weirding] into their hand with with [Goblin Ringleader]'s ability.\r\n[12:26:45] RareProducts casts [Warren Weirding] targeting LasersDuFutur.\r\n[12:27:04] LasersDuFutur sacrifices [Fanatic of Xenagos].\r\n[12:27:15] LasersDuFutur is being attacked by [Goblin Ringleader] and [Boggart Harbinger].\r\n[12:27:20] Turn 5: LasersDuFutur\r\n[12:27:39] LasersDuFutur casts [Voltaic Brawler].\r\n[12:27:43] LasersDuFutur puts triggered ability from [Voltaic Brawler] onto the stack (When Voltaic Brawler enters the battlefield, you get {EE}.).\r\n[12:27:52] LasersDuFutur gains 2 energy from [Voltaic Brawler]'s ability.\r\n[12:28:14] RareProducts is being attacked by [Electrostatic Pummeler].\r\n[12:28:23] [Goblin Cratermaker] blocks [Electrostatic Pummeler].\r\n[12:28:29] LasersDuFutur discards [Ghor-Clan Rampager].\r\n[12:28:29] LasersDuFutur activates an ability of [Ghor-Clan Rampager] targeting [Electrostatic Pummeler] ( Target attacking creature gets +4/+4 and gains trample until end of turn.).\r\n[12:28:42] LasersDuFutur activates an ability of [Electrostatic Pummeler] ( Electrostatic Pummeler gets +X/+X until end of turn, where X is Electrostatic Pummeler's power.).\r\n[12:28:45] RareProducts has conceded from the game.\r\nWinner: LasersDuFutur\r\nGame 2 Completed.\r\n[12:28:49] RareProducts has left the game.\r\n== Game 3 (654305616) ==\r\n[Time] 1544491760\r\n[12:29:20] PDBot has started watching.\r\n[12:29:28] RareProducts keeps this hand.\r\n[12:29:32] LasersDuFutur keeps this hand.\r\n[12:29:32] Turn 1: RareProducts\r\n[12:29:32] RareProducts skips their draw step.\r\n[12:29:33] RareProducts plays [Foreboding Ruins].\r\n[12:29:38] Turn 1: LasersDuFutur\r\n[12:29:41] LasersDuFutur plays [Mountain Valley].\r\n[12:29:44] Turn 2: RareProducts\r\n", 'start_time_utc': '1544490931', 'end_time_utc': '1544491784'}
Host: logs.pennydreadfulmagic.com
Accept-Encoding: gzip
Cf-Ipcountry: XX
X-Forwarded-For: 35.205.164.196, 141.101.69.23
Cf-Ray: 48742e9c781da8cf-CDG
X-Forwarded-Proto: https
Cf-Visitor: {"scheme":"https"}
Content-Type: application/x-www-form-urlencoded
Cf-Connecting-Ip: 35.205.164.196
X-Forwarded-Host: logs.pennydreadfulmagic.com
X-Forwarded-Server: logs.pennydreadfulmagic.com
Connection: Keep-Alive
Content-Length: 11115
IntegrityError
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '212783687' for key 'PRIMARY'") [SQL: 'INSERT INTO match (id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (212783687, 1, 'PD League', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)
Stack Trace:

  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2309, in __call__
    return self.wsgi_app(environ, start_response)
  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2295, in wsgi_app
    response = self.handle_exception(e)
  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/discord/.local/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
    raise value
  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "./logsite/api.py", line 26, in upload
    importing.import_log(lines.split('\n'), match_id)
  File "./logsite/importing.py", line 30, in import_log
    local = import_header(lines, match_id)
  File "./logsite/importing.py", line 75, in import_header
    local = match.create_match(match_id, format_name, comment, modules, players)
  File "./logsite/data/match.py", line 81, in create_match
    db.commit()
  File "./logsite/db.py", line 52, in commit
    return DB.session.commit()
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/scoping.py", line 153, in do
    return getattr(self.registry(), name)(*args, **kwargs)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 954, in commit
    self.transaction.commit()
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 467, in commit
    self._prepare_impl()
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 447, in _prepare_impl
    self.session.flush()
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2313, in flush
    self._flush(objects)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2440, in _flush
    transaction.rollback(_capture_exception=True)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 66, in __exit__
    compat.reraise(exc_type, exc_value, exc_tb)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 249, in reraise
    raise value
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2404, in _flush
    flush_context.execute()
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 395, in execute
    rec.execute(self)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 560, in execute
    uow
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 181, in save_obj
    mapper, table, insert)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 836, in _emit_insert_statements
    execute(statement, multiparams)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 948, in execute
    return meth(self, multiparams, params)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", line 269, in _execute_on_connection
    return connection._execute_clauseelement(self, multiparams, params)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1060, in _execute_clauseelement
    compiled_sql, distilled_params
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1200, in _execute_context
    context)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1413, in _handle_dbapi_exception
    exc_info
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 265, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb, cause=cause)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 248, in reraise
    raise value.with_traceback(tb)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1193, in _execute_context
    context)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 509, in do_execute
    cursor.execute(statement, parameters)
  File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 255, in execute
    self.errorhandler(self, exc, value)
  File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler
    raise errorvalue
  File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 252, in execute
    res = self._query(query)
  File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 378, in _query
    db.query(q)
  File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 280, in query
    _mysql.connection.query(self, query)

Exception_hash: f357d481da0134eecd408416561d5c738dbdf1d5
bakert commented 5 years ago
500 error at /api/upload

(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '212849646' for key 'PRIMARY'") [SQL: 'INSERT INTO match (id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (212849646, 4, 'CLL Rd 1 vs blavantasian', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)

Reported on logsite by logged_out

            --------------------------------------------------------------------------------
            Request Method: POST
            Path: /api/upload?
            Cookies: {}
            Endpoint: upload
            View Args: {}
            Person: logged_out
            Referrer: None
            Request Data: {'match_id': '212849646', 'lines': "Legacy\r\nCLL Rd 1 vs blavantasian\r\nTourney, BuggedCardObserver\r\ntomsimons,blavantasian\r\n\r\n== Game 1 (654561630) ==\r\n[Time] 1544665131\r\n[12:38:51] PDBot has started watching.\r\n[Gatherling] Event=Community Legacy League 6.50\r\n[Gatherling] Round=1\r\n[12:38:54] tomsimons chooses to play first.\r\n[12:38:58] tomsimons keeps this hand.\r\n[12:39:01] blavantasian keeps this hand.\r\n[12:39:01] Turn 1: tomsimons\r\n[12:39:03] tomsimons skips their draw step.\r\n[12:39:05] tomsimons plays [Volcanic Island].\r\n[12:39:07] tomsimons casts [Ponder].\r\n[12:39:28] tomsimons chooses to not shuffle his or her library.\r\n[12:39:28] tomsimons draws a card with [Ponder].\r\n[12:39:33] Turn 1: blavantasian\r\n[12:39:37] blavantasian plays [Mountain].\r\n[12:39:39] blavantasian casts [Monastery Swiftspear].\r\n[12:39:45] tomsimons is being attacked by [Monastery Swiftspear].\r\n[12:39:49] Turn 2: tomsimons\r\n[12:39:56] tomsimons plays [Ancient Tomb].\r\n[12:39:58] tomsimons casts [Lotus Petal].\r\n[12:40:03] tomsimons casts [Show and Tell].\r\n[12:40:25] Turn 2: blavantasian\r\n[12:40:25] blavantasian puts triggered ability from [Sulfuric Vortex] onto the stack (At the beginning of each player's upkeep, Sulfuric Vortex deals 2 damage to that player.).\r\n[12:40:32] blavantasian plays [Mountain].\r\n[12:40:48] blavantasian has conceded from the game.\r\nWinner: tomsimons\r\nGame 1 Completed.\r\n[12:40:50] blavantasian draws their next card.\r\n[12:40:52] tomsimons has left the game.\r\n", 'start_time_utc': '1544665131', 'end_time_utc': '1544665252'}
Host: logs.pennydreadfulmagic.com
Accept-Encoding: gzip
Cf-Ipcountry: XX
X-Forwarded-For: 35.205.164.196, 172.69.226.115
Cf-Ray: 4884bb022d5da8cf-CDG
X-Forwarded-Proto: https
Cf-Visitor: {"scheme":"https"}
Content-Type: application/x-www-form-urlencoded
Cf-Connecting-Ip: 35.205.164.196
X-Forwarded-Host: logs.pennydreadfulmagic.com
X-Forwarded-Server: logs.pennydreadfulmagic.com
Connection: Keep-Alive
Content-Length: 1984
IntegrityError
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '212849646' for key 'PRIMARY'") [SQL: 'INSERT INTO match (id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (212849646, 4, 'CLL Rd 1 vs blavantasian', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)
Stack Trace:

Labels: logsite; IntegrityError
bakert commented 5 years ago

500 error at /api/upload

(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '212849667' for key 'PRIMARY'") [SQL: 'INSERT INTO match (id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (212849667, 4, 'CLL R1 vs Eggy216', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)

Reported on logsite by logged_out

        --------------------------------------------------------------------------------
        Request Method: POST
        Path: /api/upload?
        Cookies: {}
        Endpoint: upload
        View Args: {}
        Person: logged_out
        Referrer: None
        Request Data: {'match_id': '212849667', 'lines': "Legacy\r\nCLL R1 vs Eggy216\r\nTourney, BuggedCardObserver\r\nIronicGentleman,Eggy216\r\n\r\n== Game 1 (654561650) ==\r\n[Time] 1544665151\r\n[12:39:11] PDBot has started watching.\r\n[Gatherling] Event=Community Legacy League 6.50\r\n[Gatherling] Round=1\r\n[12:39:23] [CHAT] Eggy216: hiya scruffy\r\n[12:39:23] [CHAT] Eggy216: gl\r\n[12:39:25] Eggy216 chooses to play first.\r\n[12:39:31] Eggy216 keeps this hand.\r\n[12:39:33] [CHAT] IronicGentleman: lol hey\r\n[12:39:37] [CHAT] IronicGentleman: gl :D\r\n[12:39:39] IronicGentleman keeps this hand.\r\n[12:39:39] Turn 1: Eggy216\r\n[12:39:40] Eggy216 skips their draw step.\r\n[12:39:52] Eggy216 plays [Mutavault].\r\n[12:39:55] Turn 1: IronicGentleman\r\n[12:39:58] IronicGentleman plays [Tundra].\r\n[12:40:01] IronicGentleman casts [Delver of Secrets].\r\n[12:40:06] Turn 2: Eggy216\r\n[12:40:08] Eggy216 plays [Cavern of Souls].\r\n[12:40:09] [CHAT] PDBot: [sU]Cavern of Souls[sU] has an unclassified bug.\nWhen casting a spell, if there is any mana already in the player's pool, the most recently produced colored mana is automatically applied to the spell first. For example, if a player taps a Cavern of Souls (naming Human), then an Island, then casts Delver of Secrets, the blue mana applied to the Delver's mana cost will be that from the Island. If the player tapped the Island, then the Cavern, the Cavern's mana would be applied to the spell, and it would be appropriately uncounterable.\r\nOur data about this bug is out of date.  Please let us know if this card is still bugged (or if it's been fixed).\r\nYou can do so by PM'ing this bot, or by typing `!stillbugged Cavern of Souls` or `!notbugged Cavern of Souls`\r\n[12:40:11] Eggy216 chooses Merfolk for [Cavern of Souls].\r\n[12:40:15] Eggy216 casts [Chalice of the Void]. (X is 1).\r\n[12:40:20] IronicGentleman returns [Tundra] to its owner's hand with with [Daze]'s ability.\r\n[12:40:20] IronicGentleman casts [Daze] using an alternate cost targeting [Chalice of the Void].\r\n[12:40:25] Turn 2: IronicGentleman\r\n[12:40:25] IronicGentleman puts triggered ability from [Delver of Secrets] onto the stack (At the beginning of your upkeep, look at the top card of your library. You may reveal that card. I...).\r\n[12:40:29] IronicGentleman reveals [Forked Bolt].\r\n[12:40:31] IronicGentleman plays [Tundra].\r\n[12:40:35] Eggy216 is being attacked by [Insectile Aberration].\r\n[12:40:39] Turn 3: Eggy216\r\n[12:40:48] Eggy216 reveals [Silvergill Adept] with [Silvergill Adept]'s ability.\r\n[12:40:48] Eggy216 casts [Silvergill Adept] (revealing [Silvergill Adept]).\r\n[12:40:51] Eggy216 puts triggered ability from [Silvergill Adept] onto the stack (When Silvergill Adept enters the battlefield, draw a card.).\r\n[12:40:54] Eggy216 draws a card with [Silvergill Adept]'s ability.\r\n[12:40:59] Turn 3: IronicGentleman\r\n[12:41:04] Eggy216 is being attacked by [Insectile Aberration].\r\n[12:41:10] IronicGentleman plays [Misty Rainforest].\r\n[12:41:12] IronicGentleman activates an ability of [Misty Rainforest] ( Search your library for a Forest or Island card, put it onto the battlefield, then shuffle your l...).\r\n[12:41:18] IronicGentleman casts [Young Pyromancer].\r\n[12:41:23] Turn 4: Eggy216\r\n[12:41:31] IronicGentleman is being attacked by [Silvergill Adept].\r\n[12:41:41] Eggy216 reveals [Lord of Atlantis] with [Silvergill Adept]'s ability.\r\n[12:41:41] Eggy216 casts [Silvergill Adept] (revealing [Lord of Atlantis]).\r\n[12:41:42] Eggy216 puts triggered ability from [Silvergill Adept] onto the stack (When Silvergill Adept enters the battlefield, draw a card.).\r\n[12:41:46] Eggy216 draws a card with [Silvergill Adept]'s ability.\r\n[12:41:47] Turn 4: IronicGentleman\r\n[12:41:55] IronicGentleman plays [Tundra].\r\n[12:42:01] IronicGentleman casts [Forked Bolt] targeting [Silvergill Adept] for 1, and [Silvergill Adept] for 1.\r\n[12:42:01] IronicGentleman puts triggered ability from [Young Pyromancer] onto the stack (Whenever you cast an instant or sorcery spell, create a 1/1 red Elemental creature token.).\r\n[12:42:07] IronicGentleman's [Young Pyromancer] creates an Elemental token.\r\n[12:42:13] Eggy216 is being attacked by [Young Pyromancer] and [Insectile Aberration].\r\n[12:42:17] Turn 5: Eggy216\r\n[12:42:25] Eggy216 has conceded from the game.\r\nWinner: IronicGentleman\r\nGame 1 Completed.\r\n[12:42:29] IronicGentleman has left the game.\r\n", 'start_time_utc': '1544665151', 'end_time_utc': '1544665349'}

Host: logs.pennydreadfulmagic.com Accept-Encoding: gzip Cf-Ipcountry: XX X-Forwarded-For: 35.205.164.196, 172.69.226.19 Cf-Ray: 4884bd5e8fc6b75f-CDG X-Forwarded-Proto: https Cf-Visitor: {"scheme":"https"} Content-Type: application/x-www-form-urlencoded Cf-Connecting-Ip: 35.205.164.196 X-Forwarded-Host: logs.pennydreadfulmagic.com X-Forwarded-Server: logs.pennydreadfulmagic.com Connection: Keep-Alive Content-Length: 5437 IntegrityError (_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '212849667' for key 'PRIMARY'") [SQL: 'INSERT INTO match (id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (212849667, 4, 'CLL R1 vs Eggy216', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj) Stack Trace:

Labels: logsite; IntegrityError

bakert commented 5 years ago
500 error at /api/upload

(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '212849356' for key 'PRIMARY'") [SQL: 'INSERT INTO match (id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (212849356, 1, 'PD League', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)

Reported on logsite by logged_out

            --------------------------------------------------------------------------------
            Request Method: POST
            Path: /api/upload?
            Cookies: {}
            Endpoint: upload
            View Args: {}
            Person: logged_out
            Referrer: None
            Request Data: {'match_id': '212849356', 'lines': "PennyDreadful\r\nPD League\r\nBuggedCardObserver, LeagueObserver, PennyDreadfulLegality\r\nRareProducts,Nappz007\r\n\r\n== Game 1 (654560614) ==\r\n[Time] 1544664591\r\n[12:29:51] PDBot has started watching.\r\n[12:29:51] Nappz007 joined the game.\r\n[12:29:52] Your strconst is out of date (server: 415f6281470cbf13240590552e935014 / client: 1377cce3c4f8956933760ae456ad13f4)\r\n[League] Nappz007 doesn't have active run\r\n[12:29:55] [CHAT] PDBot: [sD][sR] This is not a valid League pairing!\r\n[12:29:55] [CHAT] PDBot: [sD][sR] Nappz007, you do not have an active run.\r\n[12:29:59] RareProducts chooses to play first.\r\n[12:30:08] RareProducts keeps this hand.\r\n[12:30:21] Nappz007 mulligans to 6 cards.\r\n[12:30:27] Nappz007 mulligans to 5 cards.\r\n[12:30:32] Nappz007 keeps this hand.\r\n[12:30:36] Nappz007 puts 1 card on the bottom of their library.\r\n[12:30:36] Turn 1: RareProducts\r\n[12:30:36] RareProducts skips their draw step.\r\n[12:30:39] RareProducts plays [Mountain].\r\n[12:30:46] Turn 1: Nappz007\r\n[12:30:49] Nappz007 plays [Plains].\r\n[12:30:54] Nappz007 casts [Hunted Witness].\r\n[12:31:02] Turn 2: RareProducts\r\n[12:31:10] RareProducts plays [Swamp].\r\n[12:31:13] RareProducts casts [Goblin Cratermaker].\r\n[12:31:26] Turn 2: Nappz007\r\n[12:31:35] Nappz007 plays [Memorial to Glory].\r\n[12:31:52] Nappz007 casts [Haazda Marshal].\r\n[12:32:04] RareProducts is being attacked by [Hunted Witness].\r\n[12:32:08] [Goblin Cratermaker] blocks [Hunted Witness].\r\n[12:32:12] Nappz007 puts triggered ability from [Hunted Witness] onto the stack (When Hunted Witness dies, create a 1/1 white Soldier creature token with lifelink.).\r\n[12:32:16] Nappz007's [Hunted Witness] creates a Soldier token.\r\n[12:32:21] Turn 3: RareProducts\r\n[12:32:29] RareProducts plays [Swamp].\r\n[12:32:41] Nappz007 is being attacked by [Goblin Cratermaker].\r\n[12:33:03] RareProducts casts [Grenzo, Dungeon Warden]. (X is 1).\r\n[12:33:04] [CHAT] PDBot: [sU]Grenzo, Dungeon Warden[sU] has an unclassified bug.\nAbilities that generate replacement effects preventing specific cards from being put into graveyards (such as those found on Progenitus or Blightsteel Colossus) do not function properly while resolving Grenzo, Dungeon Warden's activated ability.\r\nOur data about this bug is out of date.  Please let us know if this card is still bugged (or if it's been fixed).\r\nYou can do so by PM'ing this bot, or by typing `!stillbugged Grenzo, Dungeon Warden` or `!notbugged Grenzo, Dungeon Warden`\r\n[12:33:19] Turn 3: Nappz007\r\n[12:34:02] Turn 4: RareProducts\r\n[12:34:09] RareProducts plays [Swamp].\r\n[12:34:24] Nappz007 is being attacked by [Grenzo, Dungeon Warden].\r\n[12:34:36] [Soldier] token blocks [Grenzo, Dungeon Warden].\r\n[12:34:53] RareProducts casts [Frogtosser Banneret].\r\n[12:34:59] Turn 4: Nappz007\r\n[12:35:15] RareProducts activates an ability of [Grenzo, Dungeon Warden] ( Put the bottom card of your library into your graveyard. If it's a creature card with power less ...).\r\n[12:35:19] Turn 5: RareProducts\r\n[12:35:22] RareProducts plays [Mountain].\r\n[12:35:26] RareProducts casts [Goblin Warchief].\r\n[12:35:32] RareProducts casts [Boggart Harbinger].\r\n[12:35:34] RareProducts puts triggered ability from [Boggart Harbinger] onto the stack (When Boggart Harbinger enters the battlefield, you may search your library for a Goblin card, reve...).\r\n[12:35:43] RareProducts reveals [Goblin Ringleader].\r\n[12:35:49] RareProducts activates an ability of [Grenzo, Dungeon Warden] ( Put the bottom card of your library into your graveyard. If it's a creature card with power less ...).\r\n[12:36:05] Nappz007 is being attacked by [Goblin Warchief], [Boggart Harbinger], [Goblin Warchief], [Grenzo, Dungeon Warden], and [Goblin Cratermaker].\r\n[12:36:21] Turn 5: Nappz007\r\n[12:36:41] Nappz007 has conceded from the game.\r\nWinner: RareProducts\r\nGame 1 Completed.\r\n== Game 2 (654561472) ==\r\n[Time] 1544665052\r\n[12:37:32] PDBot has started watching.\r\n[12:37:36] Nappz007 chooses to play first.\r\n", 'start_time_utc': '1544664591', 'end_time_utc': '1544665056'}
Host: logs.pennydreadfulmagic.com
Accept-Encoding: gzip
Cf-Ipcountry: XX
X-Forwarded-For: 35.205.164.196, 108.162.229.30
Cf-Ray: 4884b4f7c89bb76b-CDG
X-Forwarded-Proto: https
Cf-Visitor: {"scheme":"https"}
Content-Type: application/x-www-form-urlencoded
Cf-Connecting-Ip: 35.205.164.196
X-Forwarded-Host: logs.pennydreadfulmagic.com
X-Forwarded-Server: logs.pennydreadfulmagic.com
Connection: Keep-Alive
Content-Length: 5076
IntegrityError
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '212849356' for key 'PRIMARY'") [SQL: 'INSERT INTO match (id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (212849356, 1, 'PD League', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)
Stack Trace:

Labels: logsite; IntegrityError
bakert commented 5 years ago
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry 'Community Legacy League 6.50' for key 'ix_tournament_name'") [SQL: 'INSERT INTO tournament (name, active) VALUES (%s, %s)'] [parameters: ('Community Legacy League 6.50', 1)] (Background on this error at: http://sqlalche.me/e/gkpj)

Reported on logsite by logged_out

            --------------------------------------------------------------------------------

            Request Method: POST

            Path: /api/upload?

            Cookies: {}

            Endpoint: upload

            View Args: {}

            Person: logged_out

            Referrer: None

            Request Data: {'match_id': '212849646', 'lines': "Legacy\r\nCLL Rd 1 vs blavantasian\r\nTourney, BuggedCardObserver\r\ntomsimons,blavantasian\r\n\r\n== Game 1 (654561630) ==\r\n[Time] 1544665131\r\n[12:38:51] PDBot has started watching.\r\n[Gatherling] Event=Community Legacy League 6.50\r\n[Gatherling] Round=1\r\n[12:38:54] tomsimons chooses to play first.\r\n[12:38:58] tomsimons keeps this hand.\r\n[12:39:01] blavantasian keeps this hand.\r\n[12:39:01] Turn 1: tomsimons\r\n[12:39:03] tomsimons skips their draw step.\r\n[12:39:05] tomsimons plays [Volcanic Island].\r\n[12:39:07] tomsimons casts [Ponder].\r\n[12:39:28] tomsimons chooses to not shuffle his or her library.\r\n[12:39:28] tomsimons draws a card with [Ponder].\r\n[12:39:33] Turn 1: blavantasian\r\n[12:39:37] blavantasian plays [Mountain].\r\n[12:39:39] blavantasian casts [Monastery Swiftspear].\r\n[12:39:45] tomsimons is being attacked by [Monastery Swiftspear].\r\n[12:39:49] Turn 2: tomsimons\r\n[12:39:56] tomsimons plays [Ancient Tomb].\r\n[12:39:58] tomsimons casts [Lotus Petal].\r\n[12:40:03] tomsimons casts [Show and Tell].\r\n[12:40:25] Turn 2: blavantasian\r\n[12:40:25] blavantasian puts triggered ability from [Sulfuric Vortex] onto the stack (At the beginning of each player's upkeep, Sulfuric Vortex deals 2 damage to that player.).\r\n[12:40:32] blavantasian plays [Mountain].\r\n[12:40:48] blavantasian has conceded from the game.\r\nWinner: tomsimons\r\nGame 1 Completed.\r\n[12:40:50] blavantasian draws their next card.\r\n[12:40:52] tomsimons has left the game.\r\n== Game 2 (654561988) ==\r\n[Time] 1544665331\r\n[12:42:12] PDBot has started watching.\r\n[12:42:19] blavantasian mulligans to 6 cards.\r\n[12:42:22] tomsimons keeps this hand.\r\n[12:42:23] blavantasian keeps this hand.\r\n[12:42:26] blavantasian puts 1 card on the bottom of their library.\r\n[12:42:26] Turn 1: blavantasian\r\n[12:42:27] blavantasian skips their draw step.\r\n[12:42:28] blavantasian plays [Mountain].\r\n[12:42:30] blavantasian casts [Monastery Swiftspear].\r\n[12:42:36] tomsimons is being attacked by [Monastery Swiftspear].\r\n[12:42:40] Turn 1: tomsimons\r\n[12:42:43] tomsimons plays [Scalding Tarn].\r\n[12:42:45] tomsimons activates an ability of [Scalding Tarn] ( Search your library for an Island or Mountain card, put it onto the battlefield, then shuffle you...).\r\n[12:42:51] tomsimons casts [Ponder].\r\n[12:43:00] tomsimons chooses to shuffle his or her library.\r\n[12:43:00] tomsimons draws a card with [Ponder].\r\n[12:43:04] tomsimons casts [Lotus Petal].\r\n[12:43:08] Turn 2: blavantasian\r\n[12:43:12] blavantasian plays [Mountain].\r\n[12:43:16] blavantasian casts [Lava Spike] targeting tomsimons.\r\n[12:43:16] blavantasian puts triggered ability from [Monastery Swiftspear] onto the stack (Prowess (Whenever you cast a noncreature spell, this creature gets +1/+1 until end of turn.)).\r\n[12:43:27] tomsimons is being attacked by [Monastery Swiftspear].\r\n[12:43:32] Turn 2: tomsimons\r\n[12:43:36] tomsimons plays [Volcanic Island].\r\n[12:43:43] Turn 3: blavantasian\r\n[12:43:47] blavantasian casts [Pyrostatic Pillar].\r\n[12:43:47] blavantasian puts triggered ability from [Monastery Swiftspear] onto the stack (Prowess (Whenever you cast a noncreature spell, this creature gets +1/+1 until end of turn.)).\r\n[12:44:14] tomsimons is being attacked by [Monastery Swiftspear].\r\n[12:44:19] Turn 3: tomsimons\r\n[12:44:24] tomsimons plays [Mountain].\r\n[12:44:30] tomsimons casts [Sneak Attack].\r\n[12:44:37] Turn 4: blavantasian\r\n[12:45:07] tomsimons is being attacked by [Monastery Swiftspear].\r\n[12:45:13] Turn 4: tomsimons\r\n[12:45:19] tomsimons activates an ability of [Sneak Attack] ( You may put a creature card from your hand onto the battlefield. That creature gains haste. Sacri...).\r\n[12:45:25] tomsimons activates an ability of [Sneak Attack] ( You may put a creature card from your hand onto the battlefield. That creature gains haste. Sacri...).\r\n[12:45:33] blavantasian has conceded from the game.\r\nWinner: tomsimons\r\nGame 2 Completed.\r\nMatch Winner: tomsimons: 2–0\r\n[12:45:36] blavantasian draws their next card.\r\n[12:45:42] blavantasian has left the game.\r\n", 'start_time_utc': '1544665131', 'end_time_utc': '1544665542'}

Host: logs.pennydreadfulmagic.com

Accept-Encoding: gzip

Cf-Ipcountry: XX

X-Forwarded-For: 35.205.164.196, 172.69.226.115

Cf-Ray: 4884c1f8ec77a851-CDG

X-Forwarded-Proto: https

Cf-Visitor: {"scheme":"https"}

Content-Type: application/x-www-form-urlencoded

Cf-Connecting-Ip: 35.205.164.196

X-Forwarded-Host: logs.pennydreadfulmagic.com

X-Forwarded-Server: logs.pennydreadfulmagic.com

Connection: Keep-Alive

Content-Length: 5212

IntegrityError
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry 'Community Legacy League 6.50' for key 'ix_tournament_name'") [SQL: 'INSERT INTO tournament (name, active) VALUES (%s, %s)'] [parameters: ('Community Legacy League 6.50', 1)] (Background on this error at: http://sqlalche.me/e/gkpj)
Stack Trace:

  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2309, in __call__

    return self.wsgi_app(environ, start_response)

  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2295, in wsgi_app

    response = self.handle_exception(e)

  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app

    response = self.full_dispatch_request()

  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request

    rv = self.handle_user_exception(e)

  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception

    reraise(exc_type, exc_value, tb)

  File "/home/discord/.local/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise

    raise value

  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request

    rv = self.dispatch_request()

  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request

    return self.view_functions[rule.endpoint](**req.view_args)

  File "./logsite/api.py", line 26, in upload

    importing.import_log(lines.split('\n'), match_id)

  File "./logsite/importing.py", line 56, in import_log

    process_tourney_info(local, tname=tname)

  File "./logsite/importing.py", line 82, in process_tourney_info

    tourney = match.create_tournament(tname)

  File "./logsite/data/match.py", line 102, in create_tournament

    db.commit()

  File "./logsite/db.py", line 52, in commit

    return DB.session.commit()

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/scoping.py", line 153, in do

    return getattr(self.registry(), name)(*args, **kwargs)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 954, in commit

    self.transaction.commit()

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 467, in commit

    self._prepare_impl()

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 447, in _prepare_impl

    self.session.flush()

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2313, in flush

    self._flush(objects)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2440, in _flush

    transaction.rollback(_capture_exception=True)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 66, in __exit__

    compat.reraise(exc_type, exc_value, exc_tb)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 249, in reraise

    raise value

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2404, in _flush

    flush_context.execute()

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 395, in execute

    rec.execute(self)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 560, in execute

    uow

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 181, in save_obj

    mapper, table, insert)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 872, in _emit_insert_statements

    execute(statement, params)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 948, in execute

    return meth(self, multiparams, params)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", line 269, in _execute_on_connection

    return connection._execute_clauseelement(self, multiparams, params)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1060, in _execute_clauseelement

    compiled_sql, distilled_params

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1200, in _execute_context

    context)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1413, in _handle_dbapi_exception

    exc_info

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 265, in raise_from_cause

    reraise(type(exception), exception, tb=exc_tb, cause=cause)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 248, in reraise

    raise value.with_traceback(tb)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1193, in _execute_context

    context)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 509, in do_execute

    cursor.execute(statement, parameters)

  File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 255, in execute

    self.errorhandler(self, exc, value)

  File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler

    raise errorvalue

  File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 252, in execute

    res = self._query(query)

  File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 378, in _query

    db.query(q)

  File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 280, in query

    _mysql.connection.query(self, query)

Exception_hash: 65d671be41b9bcd7e40426c568ec997728be129b
bakert commented 5 years ago
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry 'Community Legacy League 6.50' for key 'ix_tournament_name'") [SQL: 'INSERT INTO tournament (name, active) VALUES (%s, %s)'] [parameters: ('Community Legacy League 6.50', 1)] (Background on this error at: http://sqlalche.me/e/gkpj)

Reported on logsite by logged_out

            --------------------------------------------------------------------------------
            Request Method: POST
            Path: /api/upload?
            Cookies: {}
            Endpoint: upload
            View Args: {}
            Person: logged_out
            Referrer: None
            Request Data: {'match_id': '212849774', 'lines': "Legacy\r\nRound 1 CLL \r\nTourney, BuggedCardObserver\r\nBandit Keith,morpphling\r\n\r\n== Game 1 (654562174) ==\r\n[Time] 1544665421\r\n[12:43:42] PDBot has started watching.\r\n[Gatherling] Event=Community Legacy League 6.50\r\n[Gatherling] Round=1\r\n[12:43:44] Bandit Keith chooses to play first.\r\n[12:43:48] [CHAT] morpphling: GL HF \r\n[12:43:51] lowman02 has started watching.\r\n[12:43:55] lowman02 has stopped watching.\r\n[12:44:13] Bandit Keith keeps this hand.\r\n[12:44:15] morpphling keeps this hand.\r\n[12:44:15] Turn 1: Bandit Keith\r\n[12:44:18] Bandit Keith skips their draw step.\r\n[12:44:29] Bandit Keith plays [Plains].\r\n[12:44:31] Bandit Keith casts [Aether Vial].\r\n[12:44:33] Turn 1: morpphling\r\n[12:44:35] morpphling plays [Mountain].\r\n[12:44:37] morpphling casts [Goblin Guide].\r\n[12:44:39] Bandit Keith is being attacked by [Goblin Guide].\r\n[12:44:39] morpphling puts triggered ability from [Goblin Guide] onto the stack (Whenever Goblin Guide attacks, defending player reveals the top card of their library. If it's a l...).\r\n[12:44:39] Bandit Keith reveals [Mother of Runes] with [Goblin Guide]'s ability.\r\n[12:44:39] Turn 2: Bandit Keith\r\n[12:44:44] Bandit Keith puts triggered ability from [Aether Vial] onto the stack (At the beginning of your upkeep, you may put a charge counter on Aether Vial.).\r\n[12:44:54] Bandit Keith plays [Karakas].\r\n[12:45:04] Turn 2: morpphling\r\n[12:45:06] morpphling plays [Mountain].\r\n[12:45:09] morpphling casts [Goblin Guide].\r\n[12:45:22] Bandit Keith is being attacked by [Goblin Guide] and [Goblin Guide].\r\n[12:45:23] morpphling puts triggered ability from [Goblin Guide] onto the stack (Whenever Goblin Guide attacks, defending player reveals the top card of their library. If it's a l...).\r\n[12:45:23] morpphling puts triggered ability from [Goblin Guide] onto the stack (Whenever Goblin Guide attacks, defending player reveals the top card of their library. If it's a l...).\r\n[12:45:25] Bandit Keith reveals [Karakas] with [Goblin Guide]'s ability.\r\n[12:45:30] Bandit Keith reveals [Karakas] with [Goblin Guide]'s ability.\r\n[12:45:34] Bandit Keith activates an ability of [Aether Vial] ( You may put a creature card with converted mana cost equal to the number of charge counters on Ae...).\r\n[12:45:48] Bandit Keith casts [Path to Exile] targeting [Goblin Guide].\r\n[12:46:19] morpphling casts [Chain Lightning] targeting [Mother of Runes].\r\n[12:46:26] Turn 3: Bandit Keith\r\n[12:46:28] Bandit Keith puts triggered ability from [Aether Vial] onto the stack (At the beginning of your upkeep, you may put a charge counter on Aether Vial.).\r\n[12:46:37] Bandit Keith plays [Plains].\r\n[12:46:40] Bandit Keith casts [Recruiter of the Guard].\r\n[12:46:40] Bandit Keith puts triggered ability from [Recruiter of the Guard] onto the stack (When Recruiter of the Guard enters the battlefield, you may search your library for a creature car...).\r\n[12:46:54] lovetapsmtg has started watching.\r\n[12:47:05] lovetapsmtg has stopped watching.\r\n[12:47:12] Bandit Keith reveals [Stoneforge Mystic].\r\n[12:47:17] Turn 3: morpphling\r\n[12:47:19] morpphling plays [Mountain].\r\n[12:47:29] Bandit Keith is being attacked by [Goblin Guide].\r\n[12:47:29] morpphling puts triggered ability from [Goblin Guide] onto the stack (Whenever Goblin Guide attacks, defending player reveals the top card of their library. If it's a l...).\r\n[12:47:32] Bandit Keith reveals [Thalia, Guardian of Thraben] with [Goblin Guide]'s ability.\r\n[12:47:39] [Recruiter of the Guard] blocks [Goblin Guide].\r\n[12:47:46] morpphling casts [Sulfuric Vortex].\r\n[12:47:54] morpphling casts [Lava Spike] targeting Bandit Keith.\r\n[12:47:58] Bandit Keith activates an ability of [Aether Vial] ( You may put a creature card with converted mana cost equal to the number of charge counters on Ae...).\r\n[12:48:02] Bandit Keith puts triggered ability from [Stoneforge Mystic] onto the stack (When Stoneforge Mystic enters the battlefield, you may search your library for an Equipment card, ...).\r\n[12:48:10] Bandit Keith reveals [Batterskull].\r\n[12:48:13] Turn 4: Bandit Keith\r\n[12:48:17] Bandit Keith puts triggered ability from [Aether Vial] onto the stack (At the beginning of your upkeep, you may put a charge counter on Aether Vial.).\r\n[12:48:17] morpphling puts triggered ability from [Sulfuric Vortex] onto the stack (At the beginning of each player's upkeep, Sulfuric Vortex deals 2 damage to that player.).\r\n[12:48:54] Bandit Keith plays [Wasteland].\r\n[12:49:22] Turn 4: morpphling\r\n[12:49:22] morpphling puts triggered ability from [Sulfuric Vortex] onto the stack (At the beginning of each player's upkeep, Sulfuric Vortex deals 2 damage to that player.).\r\n[12:49:43] morpphling casts [Chain Lightning] targeting Bandit Keith.\r\n[12:50:04] morpphling casts [Exquisite Firecraft] targeting Bandit Keith.\r\n[12:50:37] Bandit Keith activates an ability of [Stoneforge Mystic] ( You may put an Equipment card from your hand onto the battlefield.).\r\n[12:50:39] Bandit Keith puts triggered ability from [Batterskull] onto the stack (Living weapon (When this Equipment enters the battlefield, create a 0/0 black Germ creature toke...).\r\n[12:50:42] Bandit Keith's [Batterskull] creates a Germ token.\r\n[12:50:46] Bandit Keith activates an ability of [Aether Vial] ( You may put a creature card with converted mana cost equal to the number of charge counters on Ae...).\r\n[12:50:53] Bandit Keith puts triggered ability from [Flickerwisp] onto the stack targeting [Sulfuric Vortex] (When Flickerwisp enters the battlefield, exile another target permanent. Return that card to the b...).\r\n[12:50:58] Turn 5: Bandit Keith\r\n[12:50:59] Bandit Keith puts triggered ability from [Aether Vial] onto the stack (At the beginning of your upkeep, you may put a charge counter on Aether Vial.).\r\n[12:51:12] Bandit Keith chooses not to use [Aether Vial]'s ability.\r\n[12:51:14] Bandit Keith plays [Plains].\r\n[12:51:21] morpphling is being attacked by [Flickerwisp] and [Germ] token.\r\n[12:51:24] [Goblin Guide] blocks [Germ] token.\r\n[12:51:36] Bandit Keith casts [Recruiter of the Guard].\r\n[12:51:36] Bandit Keith puts triggered ability from [Recruiter of the Guard] onto the stack (When Recruiter of the Guard enters the battlefield, you may search your library for a creature car...).\r\n[12:51:51] Bandit Keith reveals [Flickerwisp].\r\n[12:51:54] Bandit Keith puts triggered ability from [Flickerwisp] onto the stack (Return Sulfuric Vortex to the battlefield under its owner's control at the beginning of the next e...).\r\n[12:51:55] Turn 5: morpphling\r\n[12:51:56] morpphling puts triggered ability from [Sulfuric Vortex] onto the stack (At the beginning of each player's upkeep, Sulfuric Vortex deals 2 damage to that player.).\r\n[12:52:04] morpphling casts [Monastery Swiftspear].\r\n[12:52:10] morpphling has conceded from the game.\r\nWinner: Bandit Keith\r\nGame 1 Completed.\r\n", 'start_time_utc': '1544665421', 'end_time_utc': '1544665930'}
Host: logs.pennydreadfulmagic.com
Accept-Encoding: gzip
Cf-Ipcountry: XX
X-Forwarded-For: 35.205.164.196, 172.69.226.43
Cf-Ray: 4884cbaa482c3c11-CDG
X-Forwarded-Proto: https
Cf-Visitor: {"scheme":"https"}
Content-Type: application/x-www-form-urlencoded
Cf-Connecting-Ip: 35.205.164.196
X-Forwarded-Host: logs.pennydreadfulmagic.com
X-Forwarded-Server: logs.pennydreadfulmagic.com
Connection: Keep-Alive
Content-Length: 8389
IntegrityError
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry 'Community Legacy League 6.50' for key 'ix_tournament_name'") [SQL: 'INSERT INTO tournament (name, active) VALUES (%s, %s)'] [parameters: ('Community Legacy League 6.50', 1)] (Background on this error at: http://sqlalche.me/e/gkpj)
Stack Trace:

  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2309, in __call__
    return self.wsgi_app(environ, start_response)
  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2295, in wsgi_app
    response = self.handle_exception(e)
  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/discord/.local/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
    raise value
  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "./logsite/api.py", line 26, in upload
    importing.import_log(lines.split('\n'), match_id)
  File "./logsite/importing.py", line 56, in import_log
    process_tourney_info(local, tname=tname)
  File "./logsite/importing.py", line 82, in process_tourney_info
    tourney = match.create_tournament(tname)
  File "./logsite/data/match.py", line 102, in create_tournament
    db.commit()
  File "./logsite/db.py", line 52, in commit
    return DB.session.commit()
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/scoping.py", line 153, in do
    return getattr(self.registry(), name)(*args, **kwargs)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 954, in commit
    self.transaction.commit()
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 467, in commit
    self._prepare_impl()
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 447, in _prepare_impl
    self.session.flush()
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2313, in flush
    self._flush(objects)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2440, in _flush
    transaction.rollback(_capture_exception=True)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 66, in __exit__
    compat.reraise(exc_type, exc_value, exc_tb)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 249, in reraise
    raise value
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2404, in _flush
    flush_context.execute()
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 395, in execute
    rec.execute(self)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 560, in execute
    uow
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 181, in save_obj
    mapper, table, insert)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 872, in _emit_insert_statements
    execute(statement, params)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 948, in execute
    return meth(self, multiparams, params)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", line 269, in _execute_on_connection
    return connection._execute_clauseelement(self, multiparams, params)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1060, in _execute_clauseelement
    compiled_sql, distilled_params
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1200, in _execute_context
    context)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1413, in _handle_dbapi_exception
    exc_info
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 265, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb, cause=cause)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 248, in reraise
    raise value.with_traceback(tb)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1193, in _execute_context
    context)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 509, in do_execute
    cursor.execute(statement, parameters)
  File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 255, in execute
    self.errorhandler(self, exc, value)
  File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler
    raise errorvalue
  File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 252, in execute
    res = self._query(query)
  File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 378, in _query
    db.query(q)
  File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 280, in query
    _mysql.connection.query(self, query)

Exception_hash: 65d671be41b9bcd7e40426c568ec997728be129b
bakert commented 5 years ago

(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '212880506' for key 'PRIMARY'") [SQL: 'INSERT INTO match (id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (212880506, 1, 'PDT R3 vs.mynameiseg', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)

Reported on logsite by logged_out

            --------------------------------------------------------------------------------

            Request Method: POST

            Path: /api/upload?

            Cookies: {}

            Endpoint: upload

            View Args: {}

            Person: logged_out

            Referrer: None

            Request Data: {'match_id': '212880506', 'lines': 'PennyDreadful\r\nPDT R3 vs.mynameiseg\r\nTourney, BuggedCardObserver, PennyDreadfulLegality\r\nnanaiper,mynameiseg\r\n\r\n== Game 1 (654681422) ==\r\n[Time] 1544750532\r\n[12:22:13] PDBot has started watching.\r\n[Gatherling] Event=Penny Dreadful Thursdays 10.10\r\n[Gatherling] Round=3\r\nWinner: nanaiper\r\nGame 1 Completed.\r\n== Game 2 (654683472) ==\r\n[Time] 1544751762\r\n[12:42:42] PDBot has started watching.\r\nWinner: nanaiper\r\nGame 2 Completed.\r\nMatch Winner: nanaiper: 2–0\r\n', 'start_time_utc': '1544750532', 'end_time_utc': '1544752134'}

Host: logs.pennydreadfulmagic.com

Accept-Encoding: gzip

Cf-Ipcountry: XX

X-Forwarded-For: 35.205.164.196, 141.101.69.77

Cf-Ray: 488d043eecbdb76b-CDG

X-Forwarded-Proto: https

Cf-Visitor: {"scheme":"https"}

Content-Type: application/x-www-form-urlencoded

Cf-Connecting-Ip: 35.205.164.196

X-Forwarded-Host: logs.pennydreadfulmagic.com

X-Forwarded-Server: logs.pennydreadfulmagic.com

Connection: Keep-Alive

Content-Length: 730

IntegrityError
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '212880506' for key 'PRIMARY'") [SQL: 'INSERT INTO match (id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (212880506, 1, 'PDT R3 vs.mynameiseg', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)
Stack Trace:

  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2309, in __call__

    return self.wsgi_app(environ, start_response)

  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2295, in wsgi_app

    response = self.handle_exception(e)

  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app

    response = self.full_dispatch_request()

  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request

    rv = self.handle_user_exception(e)

  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception

    reraise(exc_type, exc_value, tb)

  File "/home/discord/.local/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise

    raise value

  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request

    rv = self.dispatch_request()

  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request

    return self.view_functions[rule.endpoint](**req.view_args)

  File "./logsite/api.py", line 26, in upload

    importing.import_log(lines.split('\n'), match_id)

  File "./logsite/importing.py", line 30, in import_log

    local = import_header(lines, match_id)

  File "./logsite/importing.py", line 75, in import_header

    local = match.create_match(match_id, format_name, comment, modules, players)

  File "./logsite/data/match.py", line 69, in create_match

    db.commit()

  File "./logsite/db.py", line 52, in commit

    return DB.session.commit()

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/scoping.py", line 153, in do

    return getattr(self.registry(), name)(*args, **kwargs)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 954, in commit

    self.transaction.commit()

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 467, in commit

    self._prepare_impl()

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 447, in _prepare_impl

    self.session.flush()

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2313, in flush

    self._flush(objects)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2440, in _flush

    transaction.rollback(_capture_exception=True)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 66, in __exit__

    compat.reraise(exc_type, exc_value, exc_tb)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 249, in reraise

    raise value

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2404, in _flush

    flush_context.execute()

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 395, in execute

    rec.execute(self)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 560, in execute

    uow

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 181, in save_obj

    mapper, table, insert)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 836, in _emit_insert_statements

    execute(statement, multiparams)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 948, in execute

    return meth(self, multiparams, params)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", line 269, in _execute_on_connection

    return connection._execute_clauseelement(self, multiparams, params)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1060, in _execute_clauseelement

    compiled_sql, distilled_params

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1200, in _execute_context

    context)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1413, in _handle_dbapi_exception

    exc_info

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 265, in raise_from_cause

    reraise(type(exception), exception, tb=exc_tb, cause=cause)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 248, in reraise

    raise value.with_traceback(tb)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1193, in _execute_context

    context)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 509, in do_execute

    cursor.execute(statement, parameters)

  File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 255, in execute

    self.errorhandler(self, exc, value)

  File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler

    raise errorvalue

  File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 252, in execute

    res = self._query(query)

  File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 378, in _query

    db.query(q)

  File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 280, in query

    _mysql.connection.query(self, query)

Exception_hash: 3d4a33dc317809052825f5cb38be1ab073a60c39
bakert commented 5 years ago
500 error at /api/upload

(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '212880486' for key 'PRIMARY'") [SQL: 'INSERT INTO match (id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (212880486, 1, 'PDT Round 3 vs diamond dust', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)

Reported on logsite by logged_out

            --------------------------------------------------------------------------------
            Request Method: POST
            Path: /api/upload?
            Cookies: {}
            Endpoint: upload
            View Args: {}
            Person: logged_out
            Referrer: None
            Request Data: {'match_id': '212880486', 'lines': "PennyDreadful\r\nPDT Round 3 vs diamond dust\r\nTourney, BuggedCardObserver, PennyDreadfulLegality\r\nRakura,-DiamondDust-\r\n\r\n== Game 1 (654681258) ==\r\n[Time] 1544750447\r\n[12:20:48] PDBot has started watching.\r\n[Gatherling] Event=Penny Dreadful Thursdays 10.10\r\n[Gatherling] Round=3\r\n[12:21:02] -DiamondDust- chooses to play first.\r\n[12:21:06] -DiamondDust- keeps this hand.\r\n[12:21:50] Rakura keeps this hand.\r\n[12:21:50] Turn 1: -DiamondDust-\r\n[12:21:50] -DiamondDust- skips their draw step.\r\n[12:21:51] -DiamondDust- plays [Swamp].\r\n[12:21:53] -DiamondDust- casts [Night Market Lookout].\r\n[12:21:55] Turn 1: Rakura\r\n[12:21:56] Rakura plays [Selesnya Guildgate].\r\n[12:21:56] Turn 2: -DiamondDust-\r\n[12:22:00] -DiamondDust- plays [Swamp].\r\n[12:22:03] Rakura is being attacked by [Night Market Lookout].\r\n[12:22:03] -DiamondDust- puts triggered ability from [Night Market Lookout] onto the stack (Whenever Night Market Lookout becomes tapped, each opponent loses 1 life and you gain 1 life.).\r\n[12:22:09] -DiamondDust- casts [Pulse Tracker].\r\n[12:22:11] -DiamondDust- casts [Bloodsoaked Champion].\r\n[12:22:11] Turn 2: Rakura\r\n[12:22:12] Rakura plays [Forest].\r\n[12:22:14] Rakura casts [Call of the Conclave].\r\n[12:22:15] Rakura's [Call of the Conclave] creates a Centaur token.\r\n[12:22:16] Turn 3: -DiamondDust-\r\n[12:22:18] -DiamondDust- plays [Swamp].\r\n[12:22:22] Rakura is being attacked by [Bloodsoaked Champion], [Pulse Tracker], and [Night Market Lookout].\r\n[12:22:23] -DiamondDust- puts triggered ability from [Pulse Tracker] onto the stack (Whenever Pulse Tracker attacks, each opponent loses 1 life.).\r\n[12:22:23] -DiamondDust- puts triggered ability from [Night Market Lookout] onto the stack (Whenever Night Market Lookout becomes tapped, each opponent loses 1 life and you gain 1 life.).\r\n[12:22:27] [Centaur] token blocks [Night Market Lookout].\r\n[12:22:32] -DiamondDust- casts [Supernatural Stamina] targeting [Night Market Lookout].\r\n[12:22:33] -DiamondDust- puts triggered ability from [Night Market Lookout] onto the stack (When this creature dies, return it to the battlefield tapped under its owner's control.).\r\n[12:22:38] -DiamondDust- casts [Vicious Conquistador].\r\n[12:22:39] Turn 3: Rakura\r\n[12:22:40] Rakura plays [Forest].\r\n[12:22:43] Rakura casts [Rampant Growth].\r\n[12:22:51] Turn 4: -DiamondDust-\r\n[12:22:56] Rakura is being attacked by [Vicious Conquistador], [Night Market Lookout], [Bloodsoaked Champion], and [Pulse Tracker].\r\n[12:22:57] -DiamondDust- puts triggered ability from [Pulse Tracker] onto the stack (Whenever Pulse Tracker attacks, each opponent loses 1 life.).\r\n[12:22:58] -DiamondDust- puts triggered ability from [Vicious Conquistador] onto the stack (Whenever Vicious Conquistador attacks, each opponent loses 1 life.).\r\n[12:22:58] -DiamondDust- puts triggered ability from [Night Market Lookout] onto the stack (Whenever Night Market Lookout becomes tapped, each opponent loses 1 life and you gain 1 life.).\r\n[12:23:09] Turn 4: Rakura\r\n[12:23:13] Rakura plays [Selesnya Guildgate].\r\n[12:23:20] Turn 5: -DiamondDust-\r\n[12:23:59] Rakura is being attacked by [Vicious Conquistador], [Night Market Lookout], [Bloodsoaked Champion], and [Pulse Tracker].\r\n[12:24:00] -DiamondDust- puts triggered ability from [Vicious Conquistador] onto the stack (Whenever Vicious Conquistador attacks, each opponent loses 1 life.).\r\n[12:24:01] -DiamondDust- puts triggered ability from [Pulse Tracker] onto the stack (Whenever Pulse Tracker attacks, each opponent loses 1 life.).\r\n[12:24:01] -DiamondDust- puts triggered ability from [Night Market Lookout] onto the stack (Whenever Night Market Lookout becomes tapped, each opponent loses 1 life and you gain 1 life.).\r\n[12:24:08] Rakura has conceded from the game.\r\nWinner: -DiamondDust-\r\nGame 1 Completed.\r\n[12:24:12] Rakura has left the game.\r\n== Game 2 (654681682) ==\r\n[Time] 1544750700\r\n[12:25:01] PDBot has started watching.\r\n[12:25:02] Rakura mulligans to 6 cards.\r\n[12:25:08] -DiamondDust- keeps this hand.\r\n", 'start_time_utc': '1544750447', 'end_time_utc': '1544750708'}
Host: logs.pennydreadfulmagic.com
Accept-Encoding: gzip
Cf-Ipcountry: XX
X-Forwarded-For: 35.205.164.196, 108.162.229.186
Cf-Ray: 488cdff74f24a875-CDG
X-Forwarded-Proto: https
Cf-Visitor: {"scheme":"https"}
Content-Type: application/x-www-form-urlencoded
Cf-Connecting-Ip: 35.205.164.196
X-Forwarded-Host: logs.pennydreadfulmagic.com
X-Forwarded-Server: logs.pennydreadfulmagic.com
Connection: Keep-Alive
Content-Length: 5056
IntegrityError
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '212880486' for key 'PRIMARY'") [SQL: 'INSERT INTO match (id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (212880486, 1, 'PDT Round 3 vs diamond dust', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)
Stack Trace:

Labels: logsite; IntegrityError
bakert commented 5 years ago
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '212880448' for key 'PRIMARY'") [SQL: 'INSERT INTO match (id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (212880448, 8, '', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)

Reported on logsite by logged_out

            --------------------------------------------------------------------------------

            Request Method: POST

            Path: /api/upload?

            Cookies: {}

            Endpoint: upload

            View Args: {}

            Person: logged_out

            Referrer: None

            Request Data: {'match_id': '212880448', 'lines': "Freeform\r\n\r\nTourney, BuggedCardObserver\r\nMr_Grim,Rhispin\r\n\r\n== Game 1 (654681052) ==\r\n[Time] 1544750323\r\n[12:18:43] PDBot has started watching.\r\n[12:18:44] Rhispin joined the game.\r\n[Gatherling] Event=Penny Dreadful Thursdays 10.10\r\n[Gatherling] Round=3\r\n[12:19:12] Rhispin chooses to play first.\r\n[12:19:12] Rhispin mulligans to 6 cards.\r\n[12:19:12] Mr_Grim keeps this hand.\r\n[12:19:12] Rhispin keeps this hand.\r\n[12:19:23] Rhispin puts 1 card on the bottom of their library.\r\n[12:19:23] Turn 1: Rhispin\r\n[12:19:25] Rhispin skips their draw step.\r\n[12:19:26] Rhispin plays [Plains].\r\n[12:19:28] Rhispin casts [Court Homunculus].\r\n[12:19:35] Turn 1: Mr_Grim\r\n[12:19:42] Mr_Grim plays [Plains].\r\n[12:19:49] Turn 2: Rhispin\r\n[12:19:52] Rhispin plays [Plains].\r\n[12:19:54] Rhispin casts [Servo Exhibition].\r\n[12:19:57] Rhispin's [Servo Exhibition] creates two Servo tokens.\r\n[12:20:03] Mr_Grim is being attacked by [Court Homunculus].\r\n[12:20:12] Turn 2: Mr_Grim\r\n[12:20:14] Mr_Grim plays [Plains].\r\n[12:20:21] Mr_Grim casts [Servo Exhibition].\r\n[12:20:22] Mr_Grim's [Servo Exhibition] creates two Servo tokens.\r\n[12:20:29] Turn 3: Rhispin\r\n[12:20:33] Rhispin plays [Dread Statuary].\r\n[12:20:36] Rhispin casts [Chief of the Foundry].\r\n[12:20:43] Mr_Grim is being attacked by [Servo] token, [Servo] token, and [Court Homunculus].\r\n[12:21:00] Turn 3: Mr_Grim\r\n[12:21:03] Mr_Grim plays [Plains].\r\n[12:21:24] Mr_Grim casts [Chief of the Foundry].\r\n[12:21:39] Turn 4: Rhispin\r\n[12:21:43] Rhispin plays [Plains].\r\n[12:21:49] Rhispin casts [Sram's Expertise].\r\n[12:21:52] Rhispin's [Sram's Expertise] creates three Servo tokens.\r\n[12:22:29] Mr_Grim is being attacked by [Servo] token, [Servo] token, and [Court Homunculus].\r\n[12:22:42] [Servo] token blocks [Court Homunculus].\r\n[12:23:22] Turn 4: Mr_Grim\r\n[12:23:25] Mr_Grim plays [Plains].\r\n[12:23:38] Mr_Grim casts [Servo Exhibition].\r\n[12:23:40] Mr_Grim's [Servo Exhibition] creates two Servo tokens.\r\n[12:23:42] Mr_Grim casts [Toolcraft Exemplar].\r\n[12:23:56] Mr_Grim puts triggered ability from [Toolcraft Exemplar] onto the stack (At the beginning of combat on your turn, if you control an artifact, Toolcraft Exemplar gets +2/+1...).\r\n[12:24:08] Turn 5: Rhispin\r\n[12:24:13] Rhispin plays [Plains].\r\n[12:25:22] Rhispin activates an ability of [Dread Statuary] ( Dread Statuary becomes a 4/2 Golem artifact creature until end of turn. It's still a land.).\r\n[12:25:40] Mr_Grim is being attacked by [Servo] token, [Servo] token, [Servo] token, [Chief of the Foundry], [Dread Statuary], [Servo] token, [Servo] token, and [Court Homunculus].\r\n[12:25:55] [Chief of the Foundry] blocks [Dread Statuary].\r\n[12:25:59] [Toolcraft Exemplar] blocks [Court Homunculus].\r\n[12:26:01] [Servo] token blocks [Chief of the Foundry].\r\n[12:26:03] [Servo] token blocks [Servo] token.\r\n[12:26:04] [Servo] token blocks [Servo] token.\r\n[12:26:05] [Servo] token blocks [Servo] token.\r\n[12:26:07] [Servo] token stops blocking.\r\n[12:26:10] [Servo] token blocks [Servo] token.\r\nWinner: Rhispin\r\nGame 1 Completed.\r\n== Game 2 (654681918) ==\r\n[Time] 1544750830\r\n[12:27:11] PDBot has started watching.\r\n[12:27:54] Mr_Grim chooses to play first.\r\n[12:27:59] Mr_Grim keeps this hand.\r\n[12:28:06] Rhispin mulligans to 6 cards.\r\n[12:28:08] Rhispin keeps this hand.\r\n[12:28:15] Rhispin puts 1 card on the bottom of their library.\r\n[12:28:15] Turn 1: Mr_Grim\r\n[12:28:17] Mr_Grim skips their draw step.\r\n[12:28:33] Mr_Grim plays [Plains].\r\n[12:28:36] Mr_Grim casts [Court Homunculus].\r\n[12:28:42] Turn 1: Rhispin\r\n[12:28:45] Rhispin plays [Plains].\r\n[12:28:50] Rhispin casts [Court Homunculus].\r\n[12:28:58] Turn 2: Mr_Grim\r\n[12:29:02] Mr_Grim plays [Plains].\r\n[12:29:06] Mr_Grim casts [Court Homunculus].\r\n[12:29:10] Mr_Grim casts [Toolcraft Exemplar].\r\n[12:29:13] Mr_Grim puts triggered ability from [Toolcraft Exemplar] onto the stack (At the beginning of combat on your turn, if you control an artifact, Toolcraft Exemplar gets +2/+1...).\r\n[12:29:22] Rhispin is being attacked by [Court Homunculus].\r\n[12:29:32] Turn 2: Rhispin\r\n[12:29:40] Rhispin plays [Dread Statuary].\r\n[12:29:53] Rhispin casts [Declaration in Stone] targeting [Court Homunculus].\r\n[12:30:00] Rhispin's [Declaration in Stone] creates two Clue tokens under Mr_Grim's control.\r\n[12:30:26] Mr_Grim is being attacked by [Court Homunculus].\r\n[12:30:43] Turn 3: Mr_Grim\r\n[12:30:46] Mr_Grim plays [Plains].\r\n[12:30:55] Mr_Grim casts [Servo Exhibition].\r\n[12:30:57] Mr_Grim's [Servo Exhibition] creates two Servo tokens.\r\n[12:31:02] Mr_Grim puts triggered ability from [Toolcraft Exemplar] onto the stack (At the beginning of combat on your turn, if you control an artifact, Toolcraft Exemplar gets +2/+1...).\r\n[12:31:08] Rhispin is being attacked by [Toolcraft Exemplar].\r\n[12:31:19] Turn 3: Rhispin\r\n[12:31:23] Rhispin plays [Plains].\r\n[12:31:32] Turn 4: Mr_Grim\r\n[12:31:40] Mr_Grim casts [Chief of the Foundry].\r\n[12:31:47] Mr_Grim puts triggered ability from [Toolcraft Exemplar] onto the stack (At the beginning of combat on your turn, if you control an artifact, Toolcraft Exemplar gets +2/+1...).\r\n[12:31:54] Rhispin is being attacked by [Servo] token, [Servo] token, and [Toolcraft Exemplar].\r\n[12:32:07] Turn 4: Rhispin\r\n[12:32:16] Rhispin plays [Plains].\r\n[12:32:19] Rhispin casts [Sram's Expertise].\r\n[12:32:23] Rhispin's [Sram's Expertise] creates three Servo tokens.\r\n[12:32:29] Rhispin casts [Sundering Growth] with [Sram's Expertise] targeting [Chief of the Foundry].\r\n[12:32:34] Rhispin's [Sundering Growth] creates a Servo token.\r\n[12:33:00] Mr_Grim is being attacked by [Court Homunculus].\r\n[12:33:09] Turn 5: Mr_Grim\r\n[12:33:17] Mr_Grim casts [Servo Exhibition].\r\n[12:33:18] Mr_Grim's [Servo Exhibition] creates two Servo tokens.\r\n[12:33:24] Mr_Grim casts [Toolcraft Exemplar].\r\n[12:33:28] Mr_Grim puts triggered ability from [Toolcraft Exemplar] onto the stack (At the beginning of combat on your turn, if you control an artifact, Toolcraft Exemplar gets +2/+1...).\r\n[12:33:28] Mr_Grim puts triggered ability from [Toolcraft Exemplar] onto the stack (At the beginning of combat on your turn, if you control an artifact, Toolcraft Exemplar gets +2/+1...).\r\n[12:33:48] Rhispin is being attacked by [Servo] token, [Servo] token, and [Toolcraft Exemplar].\r\n[12:33:54] [Servo] token blocks [Servo] token.\r\n[12:33:56] [Servo] token blocks [Servo] token.\r\n[12:34:10] Turn 5: Rhispin\r\n[12:34:18] Rhispin plays [Plains].\r\n[12:34:22] Rhispin casts [Sram's Expertise].\r\n[12:34:24] Rhispin's [Sram's Expertise] creates three Servo tokens.\r\n[12:34:26] Rhispin casts [Spined Thopter] with [Sram's Expertise].\r\n[12:34:47] Turn 6: Mr_Grim\r\n[12:35:08] Mr_Grim casts [Sundering Growth] targeting [Court Homunculus].\r\n[12:35:14] Mr_Grim's [Sundering Growth] creates a Servo token.\r\n[12:35:19] Mr_Grim puts triggered ability from [Toolcraft Exemplar] onto the stack (At the beginning of combat on your turn, if you control an artifact, Toolcraft Exemplar gets +2/+1...).\r\n[12:35:19] Mr_Grim puts triggered ability from [Toolcraft Exemplar] onto the stack (At the beginning of combat on your turn, if you control an artifact, Toolcraft Exemplar gets +2/+1...).\r\n[12:35:45] Rhispin is being attacked by [Toolcraft Exemplar], [Servo] token, [Servo] token, and [Toolcraft Exemplar].\r\n[12:35:53] [Servo] token blocks [Toolcraft Exemplar].\r\n[12:35:54] [Servo] token blocks [Toolcraft Exemplar].\r\n[12:35:57] [Servo] token blocks [Servo] token.\r\n[12:35:59] [Servo] token blocks [Servo] token.\r\n[12:36:16] Turn 6: Rhispin\r\n[12:36:25] Rhispin casts [Glint Hawk Idol].\r\n[12:36:52] Turn 7: Mr_Grim\r\n[12:36:57] Mr_Grim plays [Plains].\r\n[12:37:01] Mr_Grim casts [Fleetwheel Cruiser].\r\n[12:37:04] Rhispin has conceded from the game.\r\nWinner: Mr_Grim\r\nGame 2 Completed.\r\n== Game 3 (654683054) ==\r\n[Time] 1544751501\r\n[12:38:21] PDBot has started watching.\r\n[12:38:22] Rhispin chooses to play first.\r\n[12:38:27] Rhispin keeps this hand.\r\n[12:38:31] Mr_Grim mulligans to 6 cards.\r\n[12:38:42] Mr_Grim keeps this hand.\r\n[12:38:54] Mr_Grim puts 1 card on top of their library.\r\n[12:38:54] Turn 1: Rhispin\r\n[12:38:58] Rhispin skips their draw step.\r\n[12:38:59] Rhispin plays [Plains].\r\n[12:39:07] Turn 1: Mr_Grim\r\n[12:39:10] Mr_Grim plays [Plains].\r\n[12:39:13] Mr_Grim casts [Court Homunculus].\r\n[12:39:19] Turn 2: Rhispin\r\n[12:39:24] Rhispin plays [Dread Statuary].\r\n[12:39:31] Turn 2: Mr_Grim\r\n[12:39:34] Mr_Grim plays [Plains].\r\n[12:39:43] Mr_Grim casts [Glint Hawk Idol].\r\n[12:39:51] Rhispin is being attacked by [Court Homunculus].\r\n[12:39:59] Turn 3: Rhispin\r\n[12:40:04] Rhispin plays [Plains].\r\n[12:40:45] Turn 3: Mr_Grim\r\n[12:40:50] Mr_Grim plays [Plains].\r\n[12:40:54] Mr_Grim activates an ability of [Glint Hawk Idol] ( Glint Hawk Idol becomes a 2/2 Bird artifact creature with flying until end of turn.).\r\n[12:41:17] Rhispin is being attacked by [Glint Hawk Idol] and [Court Homunculus].\r\n[12:41:33] Rhispin casts [Sundering Growth] targeting [Glint Hawk Idol].\r\n[12:41:36] Rhispin has no creature tokens to copy.\r\n[12:41:50] Turn 4: Rhispin\r\n[12:41:52] Rhispin plays [Plains].\r\n[12:41:57] Rhispin casts [Sram's Expertise].\r\n[12:41:59] Rhispin's [Sram's Expertise] creates three Servo tokens.\r\n[12:42:02] Rhispin casts [Tempered Steel] with [Sram's Expertise].\r\n[12:42:16] Turn 4: Mr_Grim\r\n[12:42:22] Mr_Grim plays [Plains].\r\n[12:42:27] Mr_Grim casts [Sunlance] targeting [Servo] token.\r\n[12:42:49] Turn 5: Rhispin\r\n[12:43:06] Rhispin casts [Tempered Steel].\r\n[12:43:14] Mr_Grim is being attacked by [Servo] token and [Servo] token.\r\n[12:43:26] Turn 5: Mr_Grim\r\n[12:43:29] Mr_Grim plays [Plains].\r\n[12:43:42] Mr_Grim casts [Sram's Expertise].\r\n[12:43:45] Mr_Grim's [Sram's Expertise] creates three Servo tokens.\r\n[12:43:58] Turn 6: Rhispin\r\n[12:44:09] Rhispin casts [Declaration in Stone] targeting [Servo] token.\r\n[12:44:17] Rhispin casts [Sundering Growth] targeting [Court Homunculus].\r\n[12:44:20] Rhispin's [Sundering Growth] creates a Servo token.\r\n[12:44:27] Mr_Grim is being attacked by [Servo] token and [Servo] token.\r\nWinner: Rhispin\r\nGame 3 Completed.\r\nMatch Winner: Rhispin: 2–1\r\n[12:44:36] Mr_Grim has left the game.\r\n", 'start_time_utc': '1544750323', 'end_time_utc': '1544751876'}

Host: logs.pennydreadfulmagic.com

Accept-Encoding: gzip

Cf-Ipcountry: XX

X-Forwarded-For: 35.205.164.196, 141.101.69.131

Cf-Ray: 488cfdd98c9ab76b-CDG

X-Forwarded-Proto: https

Cf-Visitor: {"scheme":"https"}

Content-Type: application/x-www-form-urlencoded

Cf-Connecting-Ip: 35.205.164.196

X-Forwarded-Host: logs.pennydreadfulmagic.com

X-Forwarded-Server: logs.pennydreadfulmagic.com

Connection: Keep-Alive

Content-Length: 13369

IntegrityError
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '212880448' for key 'PRIMARY'") [SQL: 'INSERT INTO match (id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (212880448, 8, '', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)
Stack Trace:

  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2309, in __call__

    return self.wsgi_app(environ, start_response)

  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2295, in wsgi_app

    response = self.handle_exception(e)

  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app

    response = self.full_dispatch_request()

  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request

    rv = self.handle_user_exception(e)

  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception

    reraise(exc_type, exc_value, tb)

  File "/home/discord/.local/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise

    raise value

  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request

    rv = self.dispatch_request()

  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request

    return self.view_functions[rule.endpoint](**req.view_args)

  File "./logsite/api.py", line 26, in upload

    importing.import_log(lines.split('\n'), match_id)

  File "./logsite/importing.py", line 30, in import_log

    local = import_header(lines, match_id)

  File "./logsite/importing.py", line 75, in import_header

    local = match.create_match(match_id, format_name, comment, modules, players)

  File "./logsite/data/match.py", line 69, in create_match

    db.commit()

  File "./logsite/db.py", line 52, in commit

    return DB.session.commit()

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/scoping.py", line 153, in do

    return getattr(self.registry(), name)(*args, **kwargs)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 954, in commit

    self.transaction.commit()

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 467, in commit

    self._prepare_impl()

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 447, in _prepare_impl

    self.session.flush()

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2313, in flush

    self._flush(objects)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2440, in _flush

    transaction.rollback(_capture_exception=True)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 66, in __exit__

    compat.reraise(exc_type, exc_value, exc_tb)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 249, in reraise

    raise value

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2404, in _flush

    flush_context.execute()

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 395, in execute

    rec.execute(self)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 560, in execute

    uow

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 181, in save_obj

    mapper, table, insert)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 836, in _emit_insert_statements

    execute(statement, multiparams)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 948, in execute

    return meth(self, multiparams, params)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", line 269, in _execute_on_connection

    return connection._execute_clauseelement(self, multiparams, params)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1060, in _execute_clauseelement

    compiled_sql, distilled_params

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1200, in _execute_context

    context)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1413, in _handle_dbapi_exception

    exc_info

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 265, in raise_from_cause

    reraise(type(exception), exception, tb=exc_tb, cause=cause)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 248, in reraise

    raise value.with_traceback(tb)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1193, in _execute_context

    context)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 509, in do_execute

    cursor.execute(statement, parameters)

  File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 255, in execute

    self.errorhandler(self, exc, value)

  File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler

    raise errorvalue

  File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 252, in execute

    res = self._query(query)

  File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 378, in _query

    db.query(q)

  File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 280, in query

    _mysql.connection.query(self, query)

Exception_hash: 3d4a33dc317809052825f5cb38be1ab073a60c39
bakert commented 5 years ago
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '212880448' for key 'PRIMARY'") [SQL: 'INSERT INTO match (id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (212880448, 8, '', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)

Reported on logsite by logged_out

            --------------------------------------------------------------------------------
            Request Method: POST
            Path: /api/upload?
            Cookies: {}
            Endpoint: upload
            View Args: {}
            Person: logged_out
            Referrer: None
            Request Data: {'match_id': '212880448', 'lines': "Freeform\r\n\r\nTourney, BuggedCardObserver\r\nMr_Grim,Rhispin\r\n\r\n== Game 1 (654681052) ==\r\n[Time] 1544750323\r\n[12:18:43] PDBot has started watching.\r\n[12:18:44] Rhispin joined the game.\r\n[Gatherling] Event=Penny Dreadful Thursdays 10.10\r\n[Gatherling] Round=3\r\n[12:19:12] Rhispin chooses to play first.\r\n[12:19:12] Rhispin mulligans to 6 cards.\r\n[12:19:12] Mr_Grim keeps this hand.\r\n[12:19:12] Rhispin keeps this hand.\r\n[12:19:23] Rhispin puts 1 card on the bottom of their library.\r\n[12:19:23] Turn 1: Rhispin\r\n[12:19:25] Rhispin skips their draw step.\r\n[12:19:26] Rhispin plays [Plains].\r\n[12:19:28] Rhispin casts [Court Homunculus].\r\n[12:19:35] Turn 1: Mr_Grim\r\n[12:19:42] Mr_Grim plays [Plains].\r\n[12:19:49] Turn 2: Rhispin\r\n[12:19:52] Rhispin plays [Plains].\r\n[12:19:54] Rhispin casts [Servo Exhibition].\r\n[12:19:57] Rhispin's [Servo Exhibition] creates two Servo tokens.\r\n[12:20:03] Mr_Grim is being attacked by [Court Homunculus].\r\n[12:20:12] Turn 2: Mr_Grim\r\n[12:20:14] Mr_Grim plays [Plains].\r\n[12:20:21] Mr_Grim casts [Servo Exhibition].\r\n[12:20:22] Mr_Grim's [Servo Exhibition] creates two Servo tokens.\r\n[12:20:29] Turn 3: Rhispin\r\n[12:20:33] Rhispin plays [Dread Statuary].\r\n[12:20:36] Rhispin casts [Chief of the Foundry].\r\n[12:20:43] Mr_Grim is being attacked by [Servo] token, [Servo] token, and [Court Homunculus].\r\n[12:21:00] Turn 3: Mr_Grim\r\n[12:21:03] Mr_Grim plays [Plains].\r\n[12:21:24] Mr_Grim casts [Chief of the Foundry].\r\n[12:21:39] Turn 4: Rhispin\r\n[12:21:43] Rhispin plays [Plains].\r\n[12:21:49] Rhispin casts [Sram's Expertise].\r\n[12:21:52] Rhispin's [Sram's Expertise] creates three Servo tokens.\r\n[12:22:29] Mr_Grim is being attacked by [Servo] token, [Servo] token, and [Court Homunculus].\r\n[12:22:42] [Servo] token blocks [Court Homunculus].\r\n[12:23:22] Turn 4: Mr_Grim\r\n[12:23:25] Mr_Grim plays [Plains].\r\n[12:23:38] Mr_Grim casts [Servo Exhibition].\r\n[12:23:40] Mr_Grim's [Servo Exhibition] creates two Servo tokens.\r\n[12:23:42] Mr_Grim casts [Toolcraft Exemplar].\r\n[12:23:56] Mr_Grim puts triggered ability from [Toolcraft Exemplar] onto the stack (At the beginning of combat on your turn, if you control an artifact, Toolcraft Exemplar gets +2/+1...).\r\n[12:24:08] Turn 5: Rhispin\r\n[12:24:13] Rhispin plays [Plains].\r\n[12:25:22] Rhispin activates an ability of [Dread Statuary] ( Dread Statuary becomes a 4/2 Golem artifact creature until end of turn. It's still a land.).\r\n[12:25:40] Mr_Grim is being attacked by [Servo] token, [Servo] token, [Servo] token, [Chief of the Foundry], [Dread Statuary], [Servo] token, [Servo] token, and [Court Homunculus].\r\n[12:25:55] [Chief of the Foundry] blocks [Dread Statuary].\r\n[12:25:59] [Toolcraft Exemplar] blocks [Court Homunculus].\r\n[12:26:01] [Servo] token blocks [Chief of the Foundry].\r\n[12:26:03] [Servo] token blocks [Servo] token.\r\n[12:26:04] [Servo] token blocks [Servo] token.\r\n[12:26:05] [Servo] token blocks [Servo] token.\r\n[12:26:07] [Servo] token stops blocking.\r\n[12:26:10] [Servo] token blocks [Servo] token.\r\nWinner: Rhispin\r\nGame 1 Completed.\r\n== Game 2 (654681918) ==\r\n[Time] 1544750830\r\n[12:27:11] PDBot has started watching.\r\n[12:27:54] Mr_Grim chooses to play first.\r\n[12:27:59] Mr_Grim keeps this hand.\r\n[12:28:06] Rhispin mulligans to 6 cards.\r\n[12:28:08] Rhispin keeps this hand.\r\n[12:28:15] Rhispin puts 1 card on the bottom of their library.\r\n[12:28:15] Turn 1: Mr_Grim\r\n[12:28:17] Mr_Grim skips their draw step.\r\n[12:28:33] Mr_Grim plays [Plains].\r\n[12:28:36] Mr_Grim casts [Court Homunculus].\r\n[12:28:42] Turn 1: Rhispin\r\n[12:28:45] Rhispin plays [Plains].\r\n[12:28:50] Rhispin casts [Court Homunculus].\r\n[12:28:58] Turn 2: Mr_Grim\r\n[12:29:02] Mr_Grim plays [Plains].\r\n[12:29:06] Mr_Grim casts [Court Homunculus].\r\n[12:29:10] Mr_Grim casts [Toolcraft Exemplar].\r\n[12:29:13] Mr_Grim puts triggered ability from [Toolcraft Exemplar] onto the stack (At the beginning of combat on your turn, if you control an artifact, Toolcraft Exemplar gets +2/+1...).\r\n[12:29:22] Rhispin is being attacked by [Court Homunculus].\r\n[12:29:32] Turn 2: Rhispin\r\n[12:29:40] Rhispin plays [Dread Statuary].\r\n[12:29:53] Rhispin casts [Declaration in Stone] targeting [Court Homunculus].\r\n[12:30:00] Rhispin's [Declaration in Stone] creates two Clue tokens under Mr_Grim's control.\r\n[12:30:26] Mr_Grim is being attacked by [Court Homunculus].\r\n[12:30:43] Turn 3: Mr_Grim\r\n[12:30:46] Mr_Grim plays [Plains].\r\n[12:30:55] Mr_Grim casts [Servo Exhibition].\r\n[12:30:57] Mr_Grim's [Servo Exhibition] creates two Servo tokens.\r\n[12:31:02] Mr_Grim puts triggered ability from [Toolcraft Exemplar] onto the stack (At the beginning of combat on your turn, if you control an artifact, Toolcraft Exemplar gets +2/+1...).\r\n[12:31:08] Rhispin is being attacked by [Toolcraft Exemplar].\r\n[12:31:19] Turn 3: Rhispin\r\n[12:31:23] Rhispin plays [Plains].\r\n[12:31:32] Turn 4: Mr_Grim\r\n[12:31:40] Mr_Grim casts [Chief of the Foundry].\r\n[12:31:47] Mr_Grim puts triggered ability from [Toolcraft Exemplar] onto the stack (At the beginning of combat on your turn, if you control an artifact, Toolcraft Exemplar gets +2/+1...).\r\n[12:31:54] Rhispin is being attacked by [Servo] token, [Servo] token, and [Toolcraft Exemplar].\r\n[12:32:07] Turn 4: Rhispin\r\n[12:32:16] Rhispin plays [Plains].\r\n[12:32:19] Rhispin casts [Sram's Expertise].\r\n[12:32:23] Rhispin's [Sram's Expertise] creates three Servo tokens.\r\n[12:32:29] Rhispin casts [Sundering Growth] with [Sram's Expertise] targeting [Chief of the Foundry].\r\n[12:32:34] Rhispin's [Sundering Growth] creates a Servo token.\r\n[12:33:00] Mr_Grim is being attacked by [Court Homunculus].\r\n[12:33:09] Turn 5: Mr_Grim\r\n[12:33:17] Mr_Grim casts [Servo Exhibition].\r\n[12:33:18] Mr_Grim's [Servo Exhibition] creates two Servo tokens.\r\n[12:33:24] Mr_Grim casts [Toolcraft Exemplar].\r\n[12:33:28] Mr_Grim puts triggered ability from [Toolcraft Exemplar] onto the stack (At the beginning of combat on your turn, if you control an artifact, Toolcraft Exemplar gets +2/+1...).\r\n[12:33:28] Mr_Grim puts triggered ability from [Toolcraft Exemplar] onto the stack (At the beginning of combat on your turn, if you control an artifact, Toolcraft Exemplar gets +2/+1...).\r\n[12:33:48] Rhispin is being attacked by [Servo] token, [Servo] token, and [Toolcraft Exemplar].\r\n[12:33:54] [Servo] token blocks [Servo] token.\r\n[12:33:56] [Servo] token blocks [Servo] token.\r\n[12:34:10] Turn 5: Rhispin\r\n[12:34:18] Rhispin plays [Plains].\r\n[12:34:22] Rhispin casts [Sram's Expertise].\r\n[12:34:24] Rhispin's [Sram's Expertise] creates three Servo tokens.\r\n[12:34:26] Rhispin casts [Spined Thopter] with [Sram's Expertise].\r\n[12:34:47] Turn 6: Mr_Grim\r\n[12:35:08] Mr_Grim casts [Sundering Growth] targeting [Court Homunculus].\r\n[12:35:14] Mr_Grim's [Sundering Growth] creates a Servo token.\r\n[12:35:19] Mr_Grim puts triggered ability from [Toolcraft Exemplar] onto the stack (At the beginning of combat on your turn, if you control an artifact, Toolcraft Exemplar gets +2/+1...).\r\n[12:35:19] Mr_Grim puts triggered ability from [Toolcraft Exemplar] onto the stack (At the beginning of combat on your turn, if you control an artifact, Toolcraft Exemplar gets +2/+1...).\r\n[12:35:45] Rhispin is being attacked by [Toolcraft Exemplar], [Servo] token, [Servo] token, and [Toolcraft Exemplar].\r\n[12:35:53] [Servo] token blocks [Toolcraft Exemplar].\r\n[12:35:54] [Servo] token blocks [Toolcraft Exemplar].\r\n[12:35:57] [Servo] token blocks [Servo] token.\r\n[12:35:59] [Servo] token blocks [Servo] token.\r\n[12:36:16] Turn 6: Rhispin\r\n[12:36:25] Rhispin casts [Glint Hawk Idol].\r\n[12:36:52] Turn 7: Mr_Grim\r\n[12:36:57] Mr_Grim plays [Plains].\r\n[12:37:01] Mr_Grim casts [Fleetwheel Cruiser].\r\n[12:37:04] Rhispin has conceded from the game.\r\nWinner: Mr_Grim\r\nGame 2 Completed.\r\n", 'start_time_utc': '1544750323', 'end_time_utc': '1544751424'}
Host: logs.pennydreadfulmagic.com
Accept-Encoding: gzip
Cf-Ipcountry: XX
X-Forwarded-For: 35.205.164.196, 141.101.88.228
Cf-Ray: 488cf2eb1bac3c11-CDG
X-Forwarded-Proto: https
Cf-Visitor: {"scheme":"https"}
Content-Type: application/x-www-form-urlencoded
Cf-Connecting-Ip: 35.205.164.196
X-Forwarded-Host: logs.pennydreadfulmagic.com
X-Forwarded-Server: logs.pennydreadfulmagic.com
Connection: Keep-Alive
Content-Length: 10208
IntegrityError
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '212880448' for key 'PRIMARY'") [SQL: 'INSERT INTO match (id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (212880448, 8, '', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)
Stack Trace:

  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2309, in __call__
    return self.wsgi_app(environ, start_response)
  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2295, in wsgi_app
    response = self.handle_exception(e)
  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/discord/.local/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
    raise value
  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "./logsite/api.py", line 26, in upload
    importing.import_log(lines.split('\n'), match_id)
  File "./logsite/importing.py", line 30, in import_log
    local = import_header(lines, match_id)
  File "./logsite/importing.py", line 75, in import_header
    local = match.create_match(match_id, format_name, comment, modules, players)
  File "./logsite/data/match.py", line 69, in create_match
    db.commit()
  File "./logsite/db.py", line 52, in commit
    return DB.session.commit()
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/scoping.py", line 153, in do
    return getattr(self.registry(), name)(*args, **kwargs)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 954, in commit
    self.transaction.commit()
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 467, in commit
    self._prepare_impl()
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 447, in _prepare_impl
    self.session.flush()
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2313, in flush
    self._flush(objects)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2440, in _flush
    transaction.rollback(_capture_exception=True)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 66, in __exit__
    compat.reraise(exc_type, exc_value, exc_tb)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 249, in reraise
    raise value
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2404, in _flush
    flush_context.execute()
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 395, in execute
    rec.execute(self)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 560, in execute
    uow
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 181, in save_obj
    mapper, table, insert)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 836, in _emit_insert_statements
    execute(statement, multiparams)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 948, in execute
    return meth(self, multiparams, params)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", line 269, in _execute_on_connection
    return connection._execute_clauseelement(self, multiparams, params)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1060, in _execute_clauseelement
    compiled_sql, distilled_params
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1200, in _execute_context
    context)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1413, in _handle_dbapi_exception
    exc_info
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 265, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb, cause=cause)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 248, in reraise
    raise value.with_traceback(tb)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1193, in _execute_context
    context)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 509, in do_execute
    cursor.execute(statement, parameters)
  File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 255, in execute
    self.errorhandler(self, exc, value)
  File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler
    raise errorvalue
  File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 252, in execute
    res = self._query(query)
  File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 378, in _query
    db.query(q)
  File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 280, in query
    _mysql.connection.query(self, query)

Exception_hash: 3d4a33dc317809052825f5cb38be1ab073a60c39
bakert commented 5 years ago
500 error at /api/upload

(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '654800640' for key 'PRIMARY'") [SQL: 'INSERT INTO game (id, match_id, winner_id, log) VALUES (%s, %s, %s, %s)'] [parameters: (654800640, 212911402, None, "\n[Time] 1544836735\n[12:18:56] PDBot has started watching.\n[League] Golgari Infect by jitterbeans (30544) vs Azorius Birds by killa_0909 (30041)\n[ ... (6509 characters truncated) ... ith [Corpse Cur]'s ability.\n[12:27:15] Turn 7: killa_0909\n[12:27:17] jitterbeans has conceded from the game.\nWinner: killa_0909\nGame 1 Completed.")] (Background on this error at: http://sqlalche.me/e/gkpj)

Reported on logsite by logged_out

            --------------------------------------------------------------------------------

            Request Method: POST

            Path: /api/upload?

            Cookies: {}

            Endpoint: upload

            View Args: {}

            Person: logged_out

            Referrer: None

            Request Data: {'match_id': '212911402', 'lines': "PennyDreadful\r\nPD League\r\nBuggedCardObserver, LeagueObserver, PennyDreadfulLegality\r\njitterbeans,killa_0909\r\n\r\n== Game 1 (654800640) ==\r\n[Time] 1544836735\r\n[12:18:56] PDBot has started watching.\r\n[League] Golgari Infect by jitterbeans (30544) vs Azorius Birds by killa_0909 (30041)\r\n[12:18:59] [CHAT] PDBot: [sD] Good luck in your League match!\r\n[12:19:03] jitterbeans chooses to play first.\r\n[12:19:11] jitterbeans mulligans to 6 cards.\r\n[12:19:15] killa_0909 keeps this hand.\r\n[12:19:15] [CHAT] jitterbeans: glhf\r\n[12:19:17] jitterbeans keeps this hand.\r\n[12:19:19] jitterbeans puts 1 card on top of their library.\r\n[12:19:19] Turn 1: jitterbeans\r\n[12:19:19] jitterbeans skips their draw step.\r\n[12:19:23] jitterbeans plays [Forest].\r\n[12:19:26] jitterbeans casts [Vector Asp].\r\n[12:19:27] Turn 1: killa_0909\r\n[12:19:34] [CHAT] killa_0909: thanks u2\r\n[12:19:41] killa_0909 plays [Meandering River].\r\n[12:19:49] Turn 2: jitterbeans\r\n[12:20:24] jitterbeans plays [Swamp].\r\n[12:20:25] jitterbeans casts [Shuko].\r\n[12:20:27] jitterbeans activates an ability of [Vector Asp] ( Vector Asp gains infect until end of turn.).\r\n[12:20:28] jitterbeans activates an ability of [Shuko] targeting [Vector Asp] (Equip {0}).\r\n[12:20:31] killa_0909 is being attacked by [Vector Asp].\r\n[12:20:32] killa_0909 has 2 poison counters.\r\n[12:20:34] Turn 2: killa_0909\r\n[12:20:40] killa_0909 plays [Island].\r\n[12:20:43] killa_0909 casts [Palace Familiar].\r\n[12:20:46] Turn 3: jitterbeans\r\n[12:21:11] jitterbeans plays [Swamp].\r\n[12:21:13] jitterbeans casts [Rot Wolf].\r\n[12:21:16] jitterbeans activates an ability of [Shuko] targeting [Rot Wolf] (Equip {0}).\r\n[12:21:20] Turn 3: killa_0909\r\n[12:21:23] killa_0909 plays [Plains].\r\n[12:21:27] killa_0909 casts [Soulcatchers' Aerie].\r\n[12:21:33] killa_0909 casts [Healer's Hawk].\r\n[12:21:41] Turn 4: jitterbeans\r\n[12:21:43] jitterbeans plays [Forest].\r\n[12:21:54] killa_0909 is being attacked by [Rot Wolf] and [Vector Asp].\r\n[12:21:58] [Palace Familiar] blocks [Vector Asp].\r\n[12:22:06] killa_0909 has 5 poison counters.\r\n[12:22:08] killa_0909 puts triggered ability from [Soulcatchers' Aerie] onto the stack (Whenever a Bird is put into your graveyard from the battlefield, put a feather counter on Soulcatc...).\r\n[12:22:08] killa_0909 puts triggered ability from [Palace Familiar] onto the stack (When Palace Familiar dies, draw a card.).\r\n[12:22:11] killa_0909 draws a card with [Palace Familiar]'s ability.\r\n[12:22:16] jitterbeans casts [Septic Rats].\r\n[12:22:18] jitterbeans activates an ability of [Shuko] targeting [Septic Rats] (Equip {0}).\r\n[12:22:20] Turn 4: killa_0909\r\n[12:22:28] killa_0909 plays [Seaside Haven].\r\n[12:22:33] killa_0909 casts [Palace Familiar].\r\n[12:22:48] killa_0909 casts [Soulcatchers' Aerie].\r\n[12:22:58] Turn 5: jitterbeans\r\n[12:23:23] killa_0909 is being attacked by [Septic Rats] and [Rot Wolf].\r\n[12:23:23] jitterbeans puts triggered ability from [Septic Rats] onto the stack (Whenever Septic Rats attacks, if defending player is poisoned, it gets +1/+1 until end of turn.).\r\n[12:23:53] [Palace Familiar] blocks [Septic Rats].\r\n[12:23:57] killa_0909 has 7 poison counters.\r\n[12:24:00] killa_0909 puts triggered ability from [Soulcatchers' Aerie] onto the stack (Whenever a Bird is put into your graveyard from the battlefield, put a feather counter on Soulcatc...).\r\n[12:24:02] killa_0909 puts triggered ability from [Soulcatchers' Aerie] onto the stack (Whenever a Bird is put into your graveyard from the battlefield, put a feather counter on Soulcatc...).\r\n[12:24:02] killa_0909 puts triggered ability from [Palace Familiar] onto the stack (When Palace Familiar dies, draw a card.).\r\n[12:24:05] killa_0909 draws a card with [Palace Familiar]'s ability.\r\n[12:24:15] jitterbeans casts [Ichor Rats].\r\n[12:24:21] jitterbeans puts triggered ability from [Ichor Rats] onto the stack (When Ichor Rats enters the battlefield, each player gets a poison counter.).\r\n[12:24:24] jitterbeans has 1 poison counter.\r\n[12:24:24] killa_0909 has 8 poison counters.\r\n[12:24:26] Turn 5: killa_0909\r\n[12:24:29] killa_0909 plays [Plains].\r\n[12:24:34] killa_0909 casts [Palace Familiar].\r\n[12:25:06] killa_0909 casts [Squadron Hawk].\r\n[12:25:07] killa_0909 puts triggered ability from [Squadron Hawk] onto the stack (When Squadron Hawk enters the battlefield, you may search your library for up to three cards named...).\r\n[12:25:07] killa_0909 reveals [Squadron Hawk].\r\n[12:25:07] killa_0909 reveals [Squadron Hawk].\r\n[12:25:08] killa_0909 reveals [Squadron Hawk].\r\n[12:25:08] Turn 6: jitterbeans\r\n[12:25:08] jitterbeans casts [Vector Asp].\r\n[12:25:19] killa_0909 is being attacked by [Ichor Rats], [Septic Rats], and [Rot Wolf].\r\n[12:25:19] jitterbeans puts triggered ability from [Septic Rats] onto the stack (Whenever Septic Rats attacks, if defending player is poisoned, it gets +1/+1 until end of turn.).\r\n[12:25:30] [Palace Familiar] blocks [Septic Rats].\r\n[12:25:32] [Squadron Hawk] blocks [Ichor Rats].\r\n[12:25:33] [Healer's Hawk] blocks [Rot Wolf].\r\n[12:25:41] killa_0909 puts triggered ability from [Soulcatchers' Aerie] onto the stack (Whenever a Bird is put into your graveyard from the battlefield, put a feather counter on Soulcatc...).\r\n[12:25:45] killa_0909 puts triggered ability from [Soulcatchers' Aerie] onto the stack (Whenever a Bird is put into your graveyard from the battlefield, put a feather counter on Soulcatc...).\r\n[12:25:45] killa_0909 puts triggered ability from [Palace Familiar] onto the stack (When Palace Familiar dies, draw a card.).\r\n[12:25:49] killa_0909 draws a card with [Palace Familiar]'s ability.\r\n[12:25:54] jitterbeans activates an ability of [Shuko] targeting [Vector Asp] (Equip {0}).\r\n[12:26:02] Turn 6: killa_0909\r\n[12:26:05] killa_0909 plays [Meandering River].\r\n[12:26:14] killa_0909 casts [Squadron Hawk].\r\n[12:26:29] killa_0909 puts triggered ability from [Squadron Hawk] onto the stack (When Squadron Hawk enters the battlefield, you may search your library for up to three cards named...).\r\n[12:26:36] killa_0909 chooses not to use [Squadron Hawk]'s ability.\r\n[12:26:41] killa_0909 casts [Squadron Hawk].\r\n[12:26:41] killa_0909 puts triggered ability from [Squadron Hawk] onto the stack (When Squadron Hawk enters the battlefield, you may search your library for up to three cards named...).\r\n[12:26:44] killa_0909 chooses not to use [Squadron Hawk]'s ability.\r\n[12:26:49] jitterbeans is being attacked by [Squadron Hawk] and [Healer's Hawk].\r\n[12:26:55] Turn 7: jitterbeans\r\n[12:26:59] jitterbeans casts [Corpse Cur].\r\n[12:27:06] jitterbeans puts triggered ability from [Corpse Cur] onto the stack targeting [Septic Rats] (When Corpse Cur enters the battlefield, you may return target creature card with infect from your ...).\r\n[12:27:10] jitterbeans returns [Septic Rats] to its owner's hand with [Corpse Cur]'s ability.\r\n[12:27:15] Turn 7: killa_0909\r\n[12:27:17] jitterbeans has conceded from the game.\r\nWinner: killa_0909\r\nGame 1 Completed.\r\n== Game 2 (654801594) ==\r\n[Time] 1544837287\r\n[12:28:07] PDBot has started watching.\r\n[12:28:14] jitterbeans chooses to play first.\r\n[12:28:22] jitterbeans keeps this hand.\r\n[12:28:25] killa_0909 keeps this hand.\r\n[12:28:25] Turn 1: jitterbeans\r\n[12:28:25] jitterbeans skips their draw step.\r\n[12:28:29] jitterbeans plays [Desert of the Glorified].\r\n[12:28:36] Turn 1: killa_0909\r\n[12:28:39] killa_0909 plays [Meandering River].\r\n[12:28:48] LasersDuFutur has started watching.\r\n[12:28:49] Turn 2: jitterbeans\r\n[12:28:54] jitterbeans plays [Swamp].\r\n[12:28:57] jitterbeans casts [Plague Stinger].\r\n[12:28:58] jitterbeans casts [Bone Saw].\r\n[12:29:00] Turn 2: killa_0909\r\n[12:29:03] killa_0909 plays [Seaside Haven].\r\n[12:29:07] killa_0909 casts [Soulcatcher].\r\n[12:29:07] LasersDuFutur has stopped watching.\r\n[12:29:14] Turn 3: jitterbeans\r\n[12:29:18] jitterbeans plays [Desert of the Indomitable].\r\n[12:29:21] jitterbeans casts [Vector Asp].\r\n[12:29:25] jitterbeans activates an ability of [Bone Saw] targeting [Plague Stinger] (Equip {1}).\r\n[12:29:28] killa_0909 is being attacked by [Plague Stinger].\r\n[12:29:32] killa_0909 has 2 poison counters.\r\n[12:29:33] Turn 3: killa_0909\r\n[12:30:11] Turn 4: jitterbeans\r\n[12:30:18] jitterbeans casts [Rot Wolf].\r\n[12:30:26] killa_0909 is being attacked by [Plague Stinger].\r\n[12:30:33] [Soulcatcher] blocks [Plague Stinger].\r\n[12:30:41] killa_0909 casts [Harm's Way] targeting [Rot Wolf].\r\n[12:30:42] [CHAT] PDBot: [sU]Harm's Way[sU] has an unclassified bug.\nHarm's Way cannot redirect combat damage to planeswalkers.\r\n[12:31:00] killa_0909 chooses [Plague Stinger] as a damage source.\r\n[12:31:09] 2 damage caused by [Plague Stinger] is redirected from [Soulcatcher] to [Rot Wolf].\r\n[12:31:09] killa_0909 puts triggered ability from [Soulcatcher] onto the stack (Whenever a creature with flying dies, put a +1/+1 counter on Soulcatcher.).\r\n[12:31:21] Turn 4: killa_0909\r\n[12:31:23] killa_0909 plays [Meandering River].\r\n[12:31:26] killa_0909 casts [Healer's Hawk].\r\n[12:31:57] jitterbeans is being attacked by [Soulcatcher].\r\n[12:32:03] Turn 5: jitterbeans\r\n[12:32:11] jitterbeans casts [Rot Wolf].\r\n[12:32:17] killa_0909 is being attacked by [Vector Asp].\r\n[12:32:19] Turn 5: killa_0909\r\n[12:32:29] killa_0909 casts [Rustwing Falcon].\r\n[12:33:13] jitterbeans is being attacked by [Healer's Hawk] and [Soulcatcher].\r\n[12:33:18] Turn 6: jitterbeans\r\n[12:33:29] jitterbeans plays [Desert of the Indomitable].\r\n[12:33:32] jitterbeans casts [Vector Asp].\r\n[12:33:41] jitterbeans activates an ability of [Bone Saw] targeting [Rot Wolf] (Equip {1}).\r\n[12:33:47] jitterbeans activates an ability of [Vector Asp] ( Vector Asp gains infect until end of turn.).\r\n[12:33:59] killa_0909 is being attacked by [Rot Wolf] and [Vector Asp].\r\n[12:34:19] [Rustwing Falcon] blocks [Vector Asp].\r\n[12:34:22] killa_0909 has 5 poison counters.\r\n[12:34:25] Turn 6: killa_0909\r\n[12:34:56] jitterbeans is being attacked by [Healer's Hawk] and [Soulcatcher].\r\n[12:35:03] Turn 7: jitterbeans\r\n[12:35:10] jitterbeans plays [Desert of the Indomitable].\r\n[12:35:15] jitterbeans casts [Vector Asp].\r\n[12:35:23] killa_0909 is being attacked by [Vector Asp] and [Rot Wolf].\r\n[12:35:35] jitterbeans activates an ability of [Vector Asp] ( Vector Asp gains infect until end of turn.).\r\n[12:35:46] killa_0909 casts [Harm's Way] targeting [Rot Wolf].\r\n[12:35:53] killa_0909 chooses [Rot Wolf] as a damage source.\r\n[12:35:58] 2 damage caused by [Rot Wolf] is redirected from killa_0909 to [Rot Wolf].\r\n[12:35:58] killa_0909 has 6 poison counters.\r\n[12:35:58] killa_0909 has 7 poison counters.\r\n[12:35:58] jitterbeans puts triggered ability from [Rot Wolf] onto the stack (Whenever a creature dealt damage by Rot Wolf this turn dies, you may draw a card.).\r\n[12:36:02] jitterbeans draws a card with [Rot Wolf]'s ability.\r\n[12:36:11] Turn 7: killa_0909\r\n[12:36:13] killa_0909 plays [Plains].\r\n[12:36:26] jitterbeans is being attacked by [Healer's Hawk] and [Soulcatcher].\r\n[12:36:36] killa_0909 casts [High Sentinels of Arashin].\r\n[12:36:40] Turn 8: jitterbeans\r\n[12:36:45] jitterbeans casts [Shuko].\r\n[12:36:48] jitterbeans activates an ability of [Shuko] targeting [Vector Asp] (Equip {0}).\r\n[12:36:52] jitterbeans activates an ability of [Bone Saw] targeting [Vector Asp] (Equip {1}).\r\n[12:36:54] jitterbeans casts [Vector Asp].\r\n[12:37:03] killa_0909 is being attacked by [Vector Asp] and [Vector Asp].\r\n[12:37:08] [High Sentinels of Arashin] blocks [Vector Asp].\r\n[12:37:10] [Rustwing Falcon] blocks [Vector Asp].\r\n[12:37:17] Gased-up has started watching.\r\n[12:37:21] jitterbeans activates an ability of [Vector Asp] ( Vector Asp gains infect until end of turn.).\r\n[12:37:24] jitterbeans activates an ability of [Vector Asp] ( Vector Asp gains infect until end of turn.).\r\n[12:37:25] Gased-up has stopped watching.\r\n[12:37:25] killa_0909 puts triggered ability from [Soulcatcher] onto the stack (Whenever a creature with flying dies, put a +1/+1 counter on Soulcatcher.).\r\n[12:37:26] Turn 8: killa_0909\r\n[12:38:10] jitterbeans is being attacked by [High Sentinels of Arashin] and [Soulcatcher].\r\n[12:38:21] killa_0909 casts [Aven Sunstriker].\r\n[12:38:26] Turn 9: jitterbeans\r\n[12:38:32] jitterbeans casts [Septic Rats].\r\n[12:38:37] jitterbeans activates an ability of [Shuko] targeting [Vector Asp] (Equip {0}).\r\n[12:38:46] jitterbeans activates an ability of [Shuko] targeting [Septic Rats] (Equip {0}).\r\n[12:38:51] [CHAT] killa_0909: ggs\r\n[12:38:57] jitterbeans activates an ability of [Bone Saw] targeting [Septic Rats] (Equip {1}).\r\n[12:39:01] [CHAT] jitterbeans: ggs\r\n[12:39:08] Turn 9: killa_0909\r\n[12:39:15] killa_0909 plays [Island].\r\n[12:39:24] jitterbeans is being attacked by [Aven Sunstriker], [High Sentinels of Arashin], [Healer's Hawk], and [Soulcatcher].\r\nWinner: killa_0909\r\nGame 2 Completed.\r\nMatch Winner: killa_0909: 2–0\r\n[12:39:38] jitterbeans has left the game.\r\n", 'start_time_utc': '1544836735', 'end_time_utc': '1544837978'}

Host: logs.pennydreadfulmagic.com

Accept-Encoding: gzip

Cf-Ipcountry: XX

X-Forwarded-For: 35.205.164.196, 141.101.88.228

Cf-Ray: 489533f1eed9a881-CDG

X-Forwarded-Proto: https

Cf-Visitor: {"scheme":"https"}

Content-Type: application/x-www-form-urlencoded

Cf-Connecting-Ip: 35.205.164.196

X-Forwarded-Host: logs.pennydreadfulmagic.com

X-Forwarded-Server: logs.pennydreadfulmagic.com

Connection: Keep-Alive

Content-Length: 16483

IntegrityError
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '654800640' for key 'PRIMARY'") [SQL: 'INSERT INTO game (id, match_id, winner_id, log) VALUES (%s, %s, %s, %s)'] [parameters: (654800640, 212911402, None, "\n[Time] 1544836735\n[12:18:56] PDBot has started watching.\n[League] Golgari Infect by jitterbeans (30544) vs Azorius Birds by killa_0909 (30041)\n[ ... (6509 characters truncated) ... ith [Corpse Cur]'s ability.\n[12:27:15] Turn 7: killa_0909\n[12:27:17] jitterbeans has conceded from the game.\nWinner: killa_0909\nGame 1 Completed.")] (Background on this error at: http://sqlalche.me/e/gkpj)
Stack Trace:

Labels: logsite; IntegrityError

I'm going to stop posting these now but safe to assume they are still trickling in.

bakert commented 5 years ago

They are still coming in. Maybe more frequently than before. Example.

500 error at /api/upload

(_mysql_exceptions.OperationalError) (2013, 'Lost connection to MySQL server during query') [SQL: 'INSERT INTO match (id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (213046693, 1, 'pd league', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/e3q8)

Reported on logsite by logged_out

            --------------------------------------------------------------------------------
            Request Method: POST
            Path: /api/upload?
            Cookies: {}
            Endpoint: upload
            View Args: {}
            Person: logged_out
            Referrer: None
            Request Data: {'match_id': '213046693', 'lines': 'PennyDreadful\r\npd league\r\nBuggedCardObserver, LeagueObserver, PennyDreadfulLegality\r\nKarnonthebcob,Seven47\r\n\r\n== Game 1 (655326252) ==\r\n[Time] 1545184287\r\n[12:51:27] PDBot has started watching.\r\n', 'start_time_utc': '1545184186', 'end_time_utc': '1545184287'}
Host: logs.pennydreadfulmagic.com
Accept-Encoding: gzip
Cf-Ipcountry: XX
X-Forwarded-For: 35.205.164.196, 141.101.107.92
Cf-Ray: 48b6af933e553590-LHR
X-Forwarded-Proto: https
Cf-Visitor: {"scheme":"https"}
Content-Type: application/x-www-form-urlencoded
Cf-Connecting-Ip: 35.205.164.196
X-Forwarded-Host: logs.pennydreadfulmagic.com
X-Forwarded-Server: logs.pennydreadfulmagic.com
Connection: Keep-Alive
Content-Length: 375
OperationalError
(_mysql_exceptions.OperationalError) (2013, 'Lost connection to MySQL server during query') [SQL: 'INSERT INTO match (id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (213046693, 1, 'pd league', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/e3q8)
Stack Trace:

Labels: logsite; OperationalError
bakert commented 5 years ago

The cause here is 99.9% likely to be the upgrade of SQLAlchemy.

https://github.com/PennyDreadfulMTG/Penny-Dreadful-Tools/pull/5889

Timing is right and error message has an actual link to sql alchemy website in some/most cases.

Exception raised when the relational integrity of the database is affected, e.g. a foreign key check fails.

This error is a DBAPI Error and originates from the database driver (DBAPI), not SQLAlchemy itself.

Says https://docs.sqlalchemy.org/en/latest/errors.html#error-e3q8

Are we inserting something in the wrong order or something?

Tempted to downgrade SQL Alchemy until someone has time to look at this.

bakert commented 5 years ago

IntegrityError
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '213096620' for key 'PRIMARY'") [SQL: 'INSERT INTO match (id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (213096620, 1, 'pd league', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)
Stack Trace:

Labels: logsite; IntegrityError
bakert commented 5 years ago
500 error at /api/upload

list index out of range

Reported on logsite by logged_out

            --------------------------------------------------------------------------------
            Request Method: POST
            Path: /api/upload?
            Cookies: {}
            Endpoint: upload
            View Args: {}
            Person: logged_out
            Referrer: None
            Request Data: {'match_id': '213070846', 'lines': 'Winner: therealgoldartery\r\nGame 1 Completed.\r\n', 'start_time_utc': '1545259677', 'end_time_utc': '1545259677'}
Host: logs.pennydreadfulmagic.com
Accept-Encoding: gzip
Cf-Ipcountry: XX
X-Forwarded-For: 35.205.164.196, 172.69.226.19
Cf-Ray: 48bdc1fda9e43c05-CDG
X-Forwarded-Proto: https
Cf-Visitor: {"scheme":"https"}
Content-Type: application/x-www-form-urlencoded
Cf-Connecting-Ip: 35.205.164.196
X-Forwarded-Host: logs.pennydreadfulmagic.com
Labels: logsite; IndexError
bakert commented 5 years ago
500 error at /api/upload

(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '213995853' for key 'PRIMARY'") [SQL: 'INSERT INTO match (id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (213995853, 1, 'PD League', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)

Reported on logsite by logged_out

            --------------------------------------------------------------------------------
            Request Method: POST
            Path: /api/upload?
            Cookies: {}
            Endpoint: upload
            View Args: {}
            Person: logged_out
            Referrer: None
            Request Data: {'match_id': '213995853', 'lines': "PennyDreadful\r\nPD League\r\nBuggedCardObserver, LeagueObserver, PennyDreadfulLegality\r\nNASCA,Certini\r\n\r\n== Game 1 (659155502) ==\r\n[Time] 1547385054\r\n[00:10:54] PDBot has started watching.\r\n[00:10:54] NASCA joined the game.\r\n[00:10:54] Certini joined the game.\r\n[League] Tempered Steel by nasca (31161) vs Woohoo Nice Deck by certini (31168)\r\n[00:10:59] [CHAT] PDBot: [sD] Good luck in your League match!\r\n[00:11:01] Certini chooses to play first.\r\n[00:11:06] Certini mulligans to 6 cards.\r\n[00:11:19] NASCA keeps this hand.\r\n[00:11:26] Certini keeps this hand.\r\n[00:11:31] Certini puts 1 card on top of their library.\r\n[00:11:31] Turn 1: Certini\r\n[00:11:31] Certini skips their draw step.\r\n[00:11:33] Certini plays [Plains].\r\n[00:11:34] Certini casts [Expedition Envoy].\r\n[00:11:57] Turn 1: NASCA\r\n[00:12:00] NASCA plays [Plains].\r\n[00:12:09] Turn 2: Certini\r\n[00:12:11] Certini plays [Ally Encampment].\r\n[00:12:16] Certini casts [Captain's Claws].\r\n[00:12:37] NASCA is being attacked by [Expedition Envoy].\r\n[00:12:50] Turn 2: NASCA\r\n[00:12:52] NASCA plays [Plains].\r\n[00:12:56] NASCA casts [Servo Exhibition].\r\n[00:12:59] NASCA's [Servo Exhibition] creates two Servo tokens.\r\n[00:13:11] Turn 3: Certini\r\n[00:13:20] Certini casts [Kor Bladewhirl].\r\n[00:13:35] Certini puts triggered ability from [Kor Bladewhirl] onto the stack (Whenever Kor Bladewhirl or another Ally enters the battlefield under your control, creatures you c...).\r\n[00:14:05] NASCA is being attacked by [Expedition Envoy].\r\n[00:14:26] Turn 3: NASCA\r\n[00:14:29] NASCA plays [Plains].\r\n[00:14:39] NASCA casts [Declaration in Stone] targeting [Kor Bladewhirl].\r\n[00:14:41] NASCA's [Declaration in Stone] creates a Clue token under Certini's control.\r\n[00:14:47] NASCA casts [Toolcraft Exemplar].\r\n[00:14:53] NASCA puts triggered ability from [Toolcraft Exemplar] onto the stack (At the beginning of combat on your turn, if you control an artifact, Toolcraft Exemplar gets +2/+1...).\r\n[00:15:05] Certini is being attacked by [Servo] token and [Servo] token.\r\n[00:15:15] Turn 4: Certini\r\n[00:15:17] Certini plays [Nomad Outpost].\r\n[00:15:33] Certini casts [Kalastria Healer].\r\n[00:15:48] Certini puts triggered ability from [Kalastria Healer] onto the stack (Whenever Kalastria Healer or another Ally enters the battlefield under your control, each opponent...).\r\n[00:16:18] Turn 4: NASCA\r\n[00:16:24] NASCA plays [Dread Statuary].\r\n[00:16:34] NASCA casts [Sram's Expertise].\r\n[00:16:47] NASCA's [Sram's Expertise] creates three Servo tokens.\r\n[00:16:50] NASCA casts [Spined Thopter] with [Sram's Expertise].\r\n[00:16:58] NASCA puts triggered ability from [Toolcraft Exemplar] onto the stack (At the beginning of combat on your turn, if you control an artifact, Toolcraft Exemplar gets +2/+1...).\r\n[00:17:16] Certini is being attacked by [Toolcraft Exemplar].\r\n[00:17:27] Turn 5: Certini\r\n[00:17:37] Certini casts [Kor Bladewhirl].\r\n[00:17:44] Certini puts triggered ability from [Kor Bladewhirl] onto the stack (Whenever Kor Bladewhirl or another Ally enters the battlefield under your control, creatures you c...).\r\n[00:17:44] Certini puts triggered ability from [Kalastria Healer] onto the stack (Whenever Kalastria Healer or another Ally enters the battlefield under your control, each opponent...).\r\n[00:17:54] Certini activates an ability of [Captain's Claws] targeting [Kalastria Healer] (Equip {1}).\r\n[00:18:12] NASCA is being attacked by [Kalastria Healer] and [Expedition Envoy].\r\n[00:18:12] Certini puts triggered ability from [Captain's Claws] onto the stack (Whenever equipped creature attacks, create a 1/1 white Kor Ally creature token that's tapped and a...).\r\n[00:18:21] Certini's [Captain's Claws] creates a Kor Ally token.\r\n[00:18:21] Certini puts [Kor Ally] token onto the battlefield attacking NASCA\r\n[00:18:23] Certini puts triggered ability from [Kor Bladewhirl] onto the stack (Whenever Kor Bladewhirl or another Ally enters the battlefield under your control, creatures you c...).\r\n[00:18:23] Certini puts triggered ability from [Kalastria Healer] onto the stack (Whenever Kalastria Healer or another Ally enters the battlefield under your control, each opponent...).\r\n[00:18:43] [Servo] token blocks [Expedition Envoy].\r\n[00:18:46] [Servo] token blocks [Expedition Envoy].\r\n[00:18:50] [Servo] token blocks [Kor Ally] token.\r\n[00:18:53] [Servo] token blocks [Kor Ally] token.\r\n[00:19:02] [Servo] token blocks [Expedition Envoy].\r\n[00:19:10] Blockers for [Kor Ally] token are ordered as follows: [Servo] token, [Servo] token\r\n[00:19:11] Blockers for [Expedition Envoy] are ordered as follows: [Servo] token, [Servo] token, [Servo] token\r\n[00:19:35] Turn 5: NASCA\r\n[00:19:50] NASCA casts [Tempered Steel].\r\n[00:19:50] [CHAT] PDBot: [sU]Tempered Steel[sU] has a graphical bug.\nFleetwheel Cruiser does not correctly display changes in power and toughness with Tempered Steel.\r\n[00:20:04] NASCA puts triggered ability from [Toolcraft Exemplar] onto the stack (At the beginning of combat on your turn, if you control an artifact, Toolcraft Exemplar gets +2/+1...).\r\n[00:20:23] Certini is being attacked by [Spined Thopter], [Servo] token, [Servo] token, and [Toolcraft Exemplar].\r\n[00:20:35] Turn 6: Certini\r\n[00:20:38] Certini plays [Swamp].\r\n[00:20:41] Certini activates an ability of [Clue] token ( Draw a card.).\r\n[00:20:44] Certini draws a card with [Clue] token's ability.\r\n[00:20:54] Certini casts [Kalastria Healer].\r\n[00:20:58] Certini puts triggered ability from [Kor Bladewhirl] onto the stack (Whenever Kor Bladewhirl or another Ally enters the battlefield under your control, creatures you c...).\r\n[00:20:58] Certini puts triggered ability from [Kalastria Healer] onto the stack (Whenever Kalastria Healer or another Ally enters the battlefield under your control, each opponent...).\r\n[00:20:58] Certini puts triggered ability from [Kalastria Healer] onto the stack (Whenever Kalastria Healer or another Ally enters the battlefield under your control, each opponent...).\r\n[00:21:24] NASCA is being attacked by [Kalastria Healer].\r\n[00:21:24] Certini puts triggered ability from [Captain's Claws] onto the stack (Whenever equipped creature attacks, create a 1/1 white Kor Ally creature token that's tapped and a...).\r\n[00:21:27] Certini's [Captain's Claws] creates a Kor Ally token.\r\n[00:21:27] Certini puts [Kor Ally] token onto the battlefield attacking NASCA\r\n[00:21:30] Certini puts triggered ability from [Kor Bladewhirl] onto the stack (Whenever Kor Bladewhirl or another Ally enters the battlefield under your control, creatures you c...).\r\n[00:21:30] Certini puts triggered ability from [Kalastria Healer] onto the stack (Whenever Kalastria Healer or another Ally enters the battlefield under your control, each opponent...).\r\n[00:21:30] Certini puts triggered ability from [Kalastria Healer] onto the stack (Whenever Kalastria Healer or another Ally enters the battlefield under your control, each opponent...).\r\n[00:22:00] Turn 6: NASCA\r\n[00:22:09] NASCA casts [Fleetwheel Cruiser].\r\n[00:22:09] [CHAT] PDBot: [sU]Fleetwheel Cruiser[sU] has a graphical bug.\nFleetwheel Cruiser does not correctly display changes in power and toughness with Tempered Steel.\r\n[00:22:13] Certini has conceded from the game.\r\nWinner: NASCA\r\nGame 1 Completed.\r\n== Game 2 (659156502) ==\r\n[Time] 1547385809\r\n[00:23:30] PDBot has started watching.\r\n[00:23:36] Certini chooses to play first.\r\n[00:23:40] Certini keeps this hand.\r\n[00:23:42] NASCA keeps this hand.\r\n[00:23:42] Turn 1: Certini\r\n[00:23:42] Certini skips their draw step.\r\n[00:23:45] Certini plays [Plains].\r\n[00:23:47] Certini casts [Hada Freeblade].\r\n[00:23:47] [CHAT] PDBot: [sU]Hada Freeblade[sU] has a graphical bug.\nCertain cards, such as Hada Freeblade, do not display a legality error for the Pauper format in the collection scene.\r\nOur data about this bug is out of date.  Please let us know if this card is still bugged (or if it's been fixed).\r\nYou can do so by PM'ing this bot, or by typing `!stillbugged Hada Freeblade` or `!notbugged Hada Freeblade`\r\n[00:23:55] Certini puts triggered ability from [Hada Freeblade] onto the stack (Whenever Hada Freeblade or another Ally enters the battlefield under your control, you may put a +...).\r\n[00:24:21] Turn 1: NASCA\r\n[00:24:25] NASCA plays [Plains].\r\n[00:24:35] Turn 2: Certini\r\n[00:24:40] Certini plays [Nomad Outpost].\r\n[00:24:42] Certini casts [Expedition Envoy].\r\n[00:24:46] Certini puts triggered ability from [Hada Freeblade] onto the stack (Whenever Hada Freeblade or another Ally enters the battlefield under your control, you may put a +...).\r\n[00:24:59] NASCA is being attacked by [Hada Freeblade].\r\n[00:25:24] Turn 2: NASCA\r\n[00:25:26] NASCA plays [Plains].\r\n[00:25:39] NASCA casts [Declaration in Stone] targeting [Hada Freeblade].\r\n[00:25:41] NASCA's [Declaration in Stone] creates a Clue token under Certini's control.\r\n[00:25:51] Turn 3: Certini\r\n[00:25:53] Certini plays [Mountain].\r\n[00:25:56] Certini casts [Akoum Battlesinger].\r\n[00:26:05] Certini puts triggered ability from [Akoum Battlesinger] onto the stack (Whenever Akoum Battlesinger or another Ally enters the battlefield under your control, you may hav...).\r\n[00:26:27] NASCA is being attacked by [Akoum Battlesinger] and [Expedition Envoy].\r\n[00:26:46] Turn 3: NASCA\r\n[00:26:49] NASCA plays [Dread Statuary].\r\n[00:26:59] NASCA casts [Celestial Purge] targeting [Akoum Battlesinger].\r\n[00:27:09] Turn 4: Certini\r\n[00:27:11] Certini plays [Ally Encampment].\r\n[00:27:15] Certini activates an ability of [Clue] token ( Draw a card.).\r\n[00:27:18] Certini draws a card with [Clue] token's ability.\r\n[00:27:27] Certini casts [Bojuka Brigand].\r\n[00:27:35] Certini puts triggered ability from [Bojuka Brigand] onto the stack (Whenever Bojuka Brigand or another Ally enters the battlefield under your control, you may put a +...).\r\n[00:27:48] NASCA is being attacked by [Expedition Envoy].\r\n[00:28:12] Turn 4: NASCA\r\n[00:28:14] NASCA plays [Plains].\r\n[00:28:44] NASCA casts [Fleetwheel Cruiser].\r\n[00:28:47] NASCA puts triggered ability from [Fleetwheel Cruiser] onto the stack (When Fleetwheel Cruiser enters the battlefield, it becomes an artifact creature until end of turn.).\r\n[00:28:59] Certini is being attacked by [Fleetwheel Cruiser].\r\n[00:29:10] Turn 5: Certini\r\n[00:29:13] Certini plays [Mountain].\r\n[00:29:23] Certini casts [Kor Bladewhirl].\r\n[00:29:30] Certini puts triggered ability from [Kor Bladewhirl] onto the stack (Whenever Kor Bladewhirl or another Ally enters the battlefield under your control, creatures you c...).\r\n[00:29:30] Certini puts triggered ability from [Bojuka Brigand] onto the stack (Whenever Bojuka Brigand or another Ally enters the battlefield under your control, you may put a +...).\r\n[00:29:41] NASCA has conceded from the game.\r\nWinner: Certini\r\nGame 2 Completed.\r\n== Game 3 (659157096) ==\r\n[Time] 1547386240\r\n[00:30:41] PDBot has started watching.\r\n", 'start_time_utc': '1547385054', 'end_time_utc': '1547386241'}
Host: logs.pennydreadfulmagic.com
Accept-Encoding: gzip
Cf-Ipcountry: XX
X-Forwarded-For: 35.205.164.196, 141.101.88.120
Cf-Ray: 4988380cb908a89f-CDG
X-Forwarded-Proto: https
Cf-Visitor: {"scheme":"https"}
Content-Type: application/x-www-form-urlencoded
Cf-Connecting-Ip: 35.205.164.196
Cdn-Loop: cloudflare
X-Forwarded-Host: logs.pennydreadfulmagic.com
X-Forwarded-Server: logs.pennydreadfulmagic.com
Connection: Keep-Alive
Content-Length: 13575
IntegrityError
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '213995853' for key 'PRIMARY'") [SQL: 'INSERT INTO match (id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (213995853, 1, 'PD League', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)
Stack Trace:

Labels: logsite; IntegrityError
bakert commented 5 years ago
500 error at /api/upload

(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '655212320' for key 'PRIMARY'") [SQL: 'INSERT INTO game (id, match_id, winner_id, log) VALUES (%s, %s, %s, %s)'] [parameters: (655212320, 213017255, None, "[Time] 1545098278\n[12:57:59] PDBot has started watching.\n[12:58:03] nerdyjoe keeps this hand.\n[12:58:06] lovetapsmtg keeps this hand.\n[12:58:06] ... (9235 characters truncated) ... oined the game.\n[13:12:35] lovetapsmtg has conceded from the game.\nWinner: nerdyjoe\nGame 2 Completed.\n[13:12:40] lovetapsmtg has left the game.\n")] (Background on this error at: http://sqlalche.me/e/gkpj)

Reported on logsite by logged_out

            --------------------------------------------------------------------------------
            Request Method: POST
            Path: /api/upload?
            Cookies: {}
            Endpoint: upload
            View Args: {}
            Person: logged_out
            Referrer: None
            Request Data: {'match_id': '213017255', 'lines': "PennyDreadful\r\nPDM R4 vs lovetapsmtg\r\nTourney, BuggedCardObserver, PennyDreadfulLegality\r\nnerdyjoe,lovetapsmtg\r\n\r\n== Game 1 (655211752) ==\r\n[Time] 1545097955\r\n[12:52:35] PDBot has started watching.\r\n[Gatherling] Event=Penny Dreadful Mondays 10.11\r\n[Gatherling] Round=4\r\n[12:52:42] nerdyjoe chooses to play first.\r\n[12:52:48] nerdyjoe mulligans to 6 cards.\r\n[12:53:11] lovetapsmtg keeps this hand.\r\n[12:53:15] nerdyjoe keeps this hand.\r\n[12:53:18] nerdyjoe puts 1 card on the bottom of their library.\r\n[12:53:18] Turn 1: nerdyjoe\r\n[12:53:25] nerdyjoe skips their draw step.\r\n[12:53:27] nerdyjoe plays [Forest].\r\n[12:53:30] Turn 1: lovetapsmtg\r\n[12:53:33] lovetapsmtg plays [Swamp].\r\n[12:53:38] lovetapsmtg casts [Vampire Cutthroat].\r\n[12:53:42] Turn 2: nerdyjoe\r\n[12:53:46] nerdyjoe plays [Swamp].\r\n[12:53:47] Turn 2: lovetapsmtg\r\n[12:53:49] lovetapsmtg plays [Swamp].\r\n[12:53:53] lovetapsmtg casts [Duty-Bound Dead].\r\n[12:53:59] nerdyjoe is being attacked by [Vampire Cutthroat].\r\n[12:53:59] lovetapsmtg puts triggered ability from [Duty-Bound Dead] onto the stack (Exalted).\r\n[12:54:09] Turn 3: nerdyjoe\r\n[12:54:11] nerdyjoe plays [Forest].\r\n[12:54:16] Turn 3: lovetapsmtg\r\n[12:54:18] lovetapsmtg plays [Swamp].\r\n[12:54:23] nerdyjoe is being attacked by [Vampire Cutthroat].\r\n[12:54:23] lovetapsmtg puts triggered ability from [Duty-Bound Dead] onto the stack (Exalted).\r\n[12:54:33] lovetapsmtg casts [Sanitarium Skeleton].\r\n[12:54:43] lovetapsmtg casts [Thornbow Archer].\r\n[12:54:48] Turn 4: nerdyjoe\r\n[12:54:55] Turn 4: lovetapsmtg\r\n[12:55:09] nerdyjoe is being attacked by [Thornbow Archer], [Sanitarium Skeleton], and [Vampire Cutthroat].\r\n[12:55:10] lovetapsmtg puts triggered ability from [Thornbow Archer] onto the stack (Whenever Thornbow Archer attacks, each opponent who doesn't control an Elf loses 1 life.).\r\n[12:55:19] lovetapsmtg plays [Swamp].\r\n[12:55:22] lovetapsmtg casts [Vicious Conquistador].\r\n[12:55:25] Turn 5: nerdyjoe\r\n[12:55:32] nerdyjoe casts [Elixir of Immortality].\r\n[12:55:37] nerdyjoe activates an ability of [Elixir of Immortality] ( You gain 5 life. Shuffle Elixir of Immortality and your graveyard into their owner's library.).\r\n[12:55:42] Turn 5: lovetapsmtg\r\n[12:55:49] lovetapsmtg casts [Pilfering Imp].\r\n[12:56:03] nerdyjoe is being attacked by [Vicious Conquistador], [Thornbow Archer], [Sanitarium Skeleton], [Duty-Bound Dead], and [Vampire Cutthroat].\r\n[12:56:06] lovetapsmtg puts triggered ability from [Vicious Conquistador] onto the stack (Whenever Vicious Conquistador attacks, each opponent loses 1 life.).\r\n[12:56:06] lovetapsmtg puts triggered ability from [Thornbow Archer] onto the stack (Whenever Thornbow Archer attacks, each opponent who doesn't control an Elf loses 1 life.).\r\n[12:56:19] Turn 6: nerdyjoe\r\n[12:56:34] nerdyjoe has conceded from the game.\r\nWinner: lovetapsmtg\r\nGame 1 Completed.\r\n== Game 2 (655212320) ==\r\n[Time] 1545098278\r\n[12:57:59] PDBot has started watching.\r\n[12:58:03] nerdyjoe keeps this hand.\r\n[12:58:06] lovetapsmtg keeps this hand.\r\n[12:58:06] Turn 1: nerdyjoe\r\n[12:58:07] nerdyjoe skips their draw step.\r\n[12:58:09] nerdyjoe plays [Opulent Palace].\r\n[12:58:13] Turn 1: lovetapsmtg\r\n[12:58:17] lovetapsmtg plays [Swamp].\r\n[12:58:29] lovetapsmtg casts [Vampire Cutthroat].\r\n[12:58:33] Turn 2: nerdyjoe\r\n[12:58:42] nerdyjoe plays [Choked Estuary].\r\n[12:58:45] Turn 2: lovetapsmtg\r\n[12:59:10] lovetapsmtg plays [Swamp].\r\n[12:59:17] nerdyjoe is being attacked by [Vampire Cutthroat].\r\n[12:59:24] lovetapsmtg casts [Pilfering Imp].\r\n[12:59:33] lovetapsmtg casts [Cry of Contrition] targeting nerdyjoe.\r\n[12:59:46] nerdyjoe discards [Island].\r\n[12:59:54] lovetapsmtg puts triggered ability from [Cry of Contrition] onto the stack targeting [Pilfering Imp] (When Cry of Contrition is put into a graveyard after resolving, exile it haunting target creature.).\r\n[13:00:00] nerdyjoe casts [Moment of Craving] targeting [Pilfering Imp].\r\n[13:00:07] lovetapsmtg's Triggered ability from Cry of Contrition is countered because it has no legal targets.\r\n[13:00:10] Turn 3: nerdyjoe\r\n[13:00:13] nerdyjoe plays [Thawing Glaciers].\r\n[13:00:15] Turn 3: lovetapsmtg\r\n[13:00:30] nerdyjoe is being attacked by [Vampire Cutthroat].\r\n[13:00:37] lovetapsmtg casts [Pilfering Imp].\r\n[13:00:42] lovetapsmtg casts [Cry of Contrition] targeting nerdyjoe.\r\n[13:00:47] nerdyjoe discards [Bile Blight].\r\n[13:00:53] lovetapsmtg puts triggered ability from [Cry of Contrition] onto the stack targeting [Pilfering Imp] (When Cry of Contrition is put into a graveyard after resolving, exile it haunting target creature.).\r\n[13:00:59] nerdyjoe casts [Moment of Craving] targeting [Pilfering Imp].\r\n[13:01:00] lovetapsmtg's Triggered ability from Cry of Contrition is countered because it has no legal targets.\r\n[13:01:02] Turn 4: nerdyjoe\r\n[13:01:07] nerdyjoe activates an ability of [Thawing Glaciers] ( Search your library for a basic land card, put that card onto the battlefield tapped, then shuffl...).\r\n[13:01:21] nerdyjoe plays [Island].\r\n[13:01:28] nerdyjoe puts triggered ability from [Thawing Glaciers] onto the stack (Return Thawing Glaciers to its owner's hand at the beginning of the next cleanup step.).\r\n[13:01:31] Turn 4: lovetapsmtg\r\n[13:01:36] lovetapsmtg casts [Duty-Bound Dead].\r\n[13:01:42] nerdyjoe is being attacked by [Vampire Cutthroat].\r\n[13:01:42] lovetapsmtg puts triggered ability from [Duty-Bound Dead] onto the stack (Exalted).\r\n[13:01:56] lovetapsmtg casts [Cry of Contrition] targeting nerdyjoe.\r\n[13:02:01] nerdyjoe discards [Wretched Banquet].\r\n[13:02:09] lovetapsmtg puts triggered ability from [Cry of Contrition] onto the stack targeting [Duty-Bound Dead] (When Cry of Contrition is put into a graveyard after resolving, exile it haunting target creature.).\r\n[13:02:15] Turn 5: nerdyjoe\r\n[13:02:19] nerdyjoe plays [Thawing Glaciers].\r\n[13:02:21] Turn 5: lovetapsmtg\r\n[13:02:28] nerdyjoe is being attacked by [Vampire Cutthroat].\r\n[13:02:28] lovetapsmtg puts triggered ability from [Duty-Bound Dead] onto the stack (Exalted).\r\n[13:02:45] Turn 6: nerdyjoe\r\n[13:02:53] nerdyjoe plays [Choked Estuary].\r\n[13:02:57] nerdyjoe activates an ability of [Thawing Glaciers] ( Search your library for a basic land card, put that card onto the battlefield tapped, then shuffl...).\r\n[13:03:07] nerdyjoe puts triggered ability from [Thawing Glaciers] onto the stack (Return Thawing Glaciers to its owner's hand at the beginning of the next cleanup step.).\r\n[13:03:10] Turn 6: lovetapsmtg\r\n[13:03:17] nerdyjoe is being attacked by [Vampire Cutthroat].\r\n[13:03:17] lovetapsmtg puts triggered ability from [Duty-Bound Dead] onto the stack (Exalted).\r\n[13:03:26] Turn 7: nerdyjoe\r\n[13:03:29] nerdyjoe plays [Thawing Glaciers].\r\n[13:03:35] nerdyjoe casts [Curse of Death's Hold] targeting lovetapsmtg.\r\n[13:03:48] Turn 7: lovetapsmtg\r\n[13:03:54] lovetapsmtg casts [Vicious Conquistador].\r\n[13:04:03] Turn 8: nerdyjoe\r\n[13:04:05] nerdyjoe activates an ability of [Thawing Glaciers] ( Search your library for a basic land card, put that card onto the battlefield tapped, then shuffl...).\r\n[13:04:10] nerdyjoe plays [Forest].\r\n[13:04:18] nerdyjoe puts triggered ability from [Thawing Glaciers] onto the stack (Return Thawing Glaciers to its owner's hand at the beginning of the next cleanup step.).\r\n[13:04:21] Turn 8: lovetapsmtg\r\n[13:04:26] nerdyjoe is being attacked by [Vicious Conquistador].\r\n[13:04:28] lovetapsmtg puts triggered ability from [Vicious Conquistador] onto the stack (Whenever Vicious Conquistador attacks, each opponent loses 1 life.).\r\n[13:04:29] lovetapsmtg puts triggered ability from [Duty-Bound Dead] onto the stack (Exalted).\r\n[13:04:49] nerdyjoe casts [Sultai Charm] targeting [Vicious Conquistador] (Destroy target monocolored creature.).\r\n[13:04:56] lovetapsmtg casts [Supernatural Stamina] targeting [Vicious Conquistador].\r\n[13:05:02] lovetapsmtg puts triggered ability from [Vicious Conquistador] onto the stack (When this creature dies, return it to the battlefield tapped under its owner's control.).\r\n[13:05:08] Turn 9: nerdyjoe\r\n[13:05:13] nerdyjoe casts [Precognition Field].\r\n[13:05:36] nerdyjoe plays [Thawing Glaciers].\r\n[13:05:40] nerdyjoe casts [Wretched Banquet] targeting [Duty-Bound Dead].\r\n[13:05:50] lovetapsmtg puts triggered ability from [Cry of Contrition] onto the stack targeting nerdyjoe (When the creature Cry of Contrition haunts dies, target player discards a card.).\r\n[13:05:58] Turn 9: lovetapsmtg\r\n[13:06:21] nerdyjoe is being attacked by [Vicious Conquistador].\r\n[13:06:21] lovetapsmtg puts triggered ability from [Vicious Conquistador] onto the stack (Whenever Vicious Conquistador attacks, each opponent loses 1 life.).\r\n[13:06:30] lovetapsmtg casts [Thornbow Archer].\r\n[13:06:35] lovetapsmtg casts [Thornbow Archer].\r\n[13:06:43] nerdyjoe activates an ability of [Precognition Field] ( Exile the top card of your library.).\r\n[13:06:57] Turn 10: nerdyjoe\r\n[13:07:03] nerdyjoe casts [Sultai Charm] targeting [Vicious Conquistador] (Destroy target monocolored creature.).\r\n[13:07:17] nerdyjoe plays [Opulent Palace].\r\n[13:07:27] Turn 10: lovetapsmtg\r\n[13:07:29] nerdyjoe activates an ability of [Thawing Glaciers] ( Search your library for a basic land card, put that card onto the battlefield tapped, then shuffl...).\r\n[13:07:46] nerdyjoe is being attacked by [Thornbow Archer] and [Thornbow Archer].\r\n[13:07:46] lovetapsmtg puts triggered ability from [Thornbow Archer] onto the stack (Whenever Thornbow Archer attacks, each opponent who doesn't control an Elf loses 1 life.).\r\n[13:07:46] lovetapsmtg puts triggered ability from [Thornbow Archer] onto the stack (Whenever Thornbow Archer attacks, each opponent who doesn't control an Elf loses 1 life.).\r\n[13:07:58] nerdyjoe puts triggered ability from [Thawing Glaciers] onto the stack (Return Thawing Glaciers to its owner's hand at the beginning of the next cleanup step.).\r\n[13:08:01] Turn 11: nerdyjoe\r\n[13:08:06] nerdyjoe casts [Consume the Meek].\r\n[13:08:17] nerdyjoe plays [Thawing Glaciers].\r\n[13:08:26] Turn 11: lovetapsmtg\r\n[13:08:31] lovetapsmtg casts [Watchers of the Dead].\r\n[13:08:36] Turn 12: nerdyjoe\r\n[13:08:42] nerdyjoe casts [Wretched Banquet] targeting [Watchers of the Dead].\r\n[13:08:48] nerdyjoe plays [Forest].\r\n[13:08:51] Turn 12: lovetapsmtg\r\n[13:08:58] lovetapsmtg casts [Gatekeeper of Malakir].\r\n[13:09:06] Turn 13: nerdyjoe\r\n[13:09:11] nerdyjoe casts [Wretched Banquet] targeting [Gatekeeper of Malakir].\r\n[13:09:15] nerdyjoe casts [Compulsive Research] targeting nerdyjoe.\r\n[13:09:15] nerdyjoe draws three cards with [Compulsive Research].\r\n[13:09:16] [CHAT] PDBot: [sU]Compulsive Research[sU] has an advantageous bug.\nDredging rather than drawing can let you avoid discarding\r\nOur data about this bug is out of date.  Please let us know if this card is still bugged (or if it's been fixed).\r\nYou can do so by PM'ing this bot, or by typing `!stillbugged Compulsive Research` or `!notbugged Compulsive Research`\r\n[13:09:21] nerdyjoe discards [Choked Estuary].\r\n[13:09:26] nerdyjoe casts [Compulsive Research] targeting nerdyjoe.\r\n[13:09:26] nerdyjoe draws three cards with [Compulsive Research].\r\n[13:09:32] nerdyjoe discards [Island].\r\n[13:09:34] nerdyjoe casts [Scrabbling Claws].\r\n[13:09:37] Turn 13: lovetapsmtg\r\n[13:09:42] lovetapsmtg casts [Watchers of the Dead].\r\n[13:09:48] nerdyjoe casts [Void Shatter] targeting [Watchers of the Dead].\r\n[13:09:53] Turn 14: nerdyjoe\r\n[13:09:55] nerdyjoe activates an ability of [Thawing Glaciers] ( Search your library for a basic land card, put that card onto the battlefield tapped, then shuffl...).\r\n[13:10:02] nerdyjoe casts [Cremate] targeting [Watchers of the Dead].\r\n[13:10:03] nerdyjoe draws a card with [Cremate].\r\n[13:10:16] nerdyjoe casts [Anticipate].\r\n[13:10:23] nerdyjoe plays [Urza's Factory].\r\n[13:10:25] nerdyjoe casts [Elixir of Immortality].\r\n[13:10:28] nerdyjoe activates an ability of [Elixir of Immortality] ( You gain 5 life. Shuffle Elixir of Immortality and your graveyard into their owner's library.).\r\n[13:10:32] nerdyjoe puts triggered ability from [Thawing Glaciers] onto the stack (Return Thawing Glaciers to its owner's hand at the beginning of the next cleanup step.).\r\n[13:10:32] Turn 14: lovetapsmtg\r\n[13:11:05] lovetapsmtg has lost connection to the game.\r\n[13:11:35] lovetapsmtg joined the game.\r\n[13:12:35] lovetapsmtg has conceded from the game.\r\nWinner: nerdyjoe\r\nGame 2 Completed.\r\n[13:12:40] lovetapsmtg has left the game.\r\n", 'start_time_utc': '1545097955', 'end_time_utc': '1545099160'}
Host: logs.pennydreadfulmagic.com
Accept-Encoding: gzip
Cf-Ipcountry: XX
X-Forwarded-For: 35.205.164.196, 141.101.99.229
Cf-Ray: 48ae1c6f7aa4346a-LHR
X-Forwarded-Proto: https
Cf-Visitor: {"scheme":"https"}
Content-Type: application/x-www-form-urlencoded
Cf-Connecting-Ip: 35.205.164.196
X-Forwarded-Host: logs.pennydreadfulmagic.com
X-Forwarded-Server: logs.pennydreadfulmagic.com
Connection: Keep-Alive
Content-Length: 15535
IntegrityError
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '655212320' for key 'PRIMARY'") [SQL: 'INSERT INTO game (id, match_id, winner_id, log) VALUES (%s, %s, %s, %s)'] [parameters: (655212320, 213017255, None, "[Time] 1545098278\n[12:57:59] PDBot has started watching.\n[12:58:03] nerdyjoe keeps this hand.\n[12:58:06] lovetapsmtg keeps this hand.\n[12:58:06] ... (9235 characters truncated) ... oined the game.\n[13:12:35] lovetapsmtg has conceded from the game.\nWinner: nerdyjoe\nGame 2 Completed.\n[13:12:40] lovetapsmtg has left the game.\n")] (Background on this error at: http://sqlalche.me/e/gkpj)
Stack Trace:

Labels: logsite; IntegrityError

Vorpal Buildbot <notifications@github.com>
Mon, Dec 17, 2018, 7:45 PM
to PennyDreadfulMTG/perf-reports, Subscribed

500 error at /api/upload

(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '655218564' for key 'PRIMARY'") [SQL: 'INSERT INTO game (id, match_id, winner_id, log) VALUES (%s, %s, %s, %s)'] [parameters: (655218564, 213018486, None, '[Time] 1545101636\n[13:53:57] PDBot has started watching.\n')] (Background on this error at: http://sqlalche.me/e/gkpj)

Reported on logsite by logged_out

            --------------------------------------------------------------------------------
            Request Method: POST
            Path: /api/upload?
            Cookies: {}
            Endpoint: upload
            View Args: {}
            Person: logged_out
            Referrer: None
            Request Data: {'match_id': '213018486', 'lines': 'PennyDreadful\r\nPDM TOP4 vs mynameiseg\r\nTourney, BuggedCardObserver, PennyDreadfulLegality\r\nRhispin,mynameiseg\r\n\r\n== Game 1 (655216500) ==\r\n[Time] 1545100522\r\n[13:35:23] PDBot has started watching.\r\n[Gatherling] Event=Penny Dreadful Mondays 10.11\r\n[Gatherling] Round=5\r\nWinner: mynameiseg\r\nGame 1 Completed.\r\n== Game 2 (655217492) ==\r\n[Time] 1545101064\r\n[13:44:24] PDBot has started watching.\r\nWinner: Rhispin\r\nGame 2 Completed.\r\n== Game 3 (655218564) ==\r\n[Time] 1545101636\r\n[13:53:57] PDBot has started watching.\r\n', 'start_time_utc': '1545100522', 'end_time_utc': '1545101637'}
Host: logs.pennydreadfulmagic.com
Accept-Encoding: gzip
Cf-Ipcountry: XX
X-Forwarded-For: 35.205.164.196, 141.101.107.134
Cf-Ray: 48ae582c5e7f35b4-LHR
X-Forwarded-Proto: https
Cf-Visitor: {"scheme":"https"}
Content-Type: application/x-www-form-urlencoded
Cf-Connecting-Ip: 35.205.164.196
X-Forwarded-Host: logs.pennydreadfulmagic.com
X-Forwarded-Server: logs.pennydreadfulmagic.com
Connection: Keep-Alive
Content-Length: 806
IntegrityError
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '655218564' for key 'PRIMARY'") [SQL: 'INSERT INTO game (id, match_id, winner_id, log) VALUES (%s, %s, %s, %s)'] [parameters: (655218564, 213018486, None, '[Time] 1545101636\n[13:53:57] PDBot has started watching.\n')] (Background on this error at: http://sqlalche.me/e/gkpj)
Stack Trace:

Labels: logsite; IntegrityError

Vorpal Buildbot <notifications@github.com>
Mon, Jan 14, 5:33 PM (2 days ago)
to PennyDreadfulMTG/perf-reports, Subscribed

500 error at /api/upload

(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '659374514' for key 'PRIMARY'") [SQL: 'INSERT INTO game (id, match_id, winner_id, log) VALUES (%s, %s, %s, %s)'] [parameters: (659374514, 214051177, None, "[Time] 1547515534\n[12:25:34] PDBot has started watching.\n[12:25:55] memlin chooses to play first.\n[12:25:55] memlin keeps this hand.\n[12:25:55] k ... (2853 characters truncated) ... cards with [Treasure Cruise].\n[12:31:13] memlin has conceded from the game.\nWinner: killa_0909\nGame 2 Completed.\nMatch Winner: killa_0909: 2–0\n")] (Background on this error at: http://sqlalche.me/e/gkpj)

Reported on logsite by logged_out

            --------------------------------------------------------------------------------

            Request Method: POST

            Path: /api/upload?

            Cookies: {}

            Endpoint: upload

            View Args: {}

            Person: logged_out

            Referrer: None

            Request Data: {'match_id': '214051177', 'lines': "PennyDreadful\r\nPDM Round 3 vs killa_0909\r\nTourney, BuggedCardObserver, PennyDreadfulLegality\r\nmemlin,killa_0909\r\n\r\n== Game 1 (659373812) ==\r\n[Time] 1547515177\r\n[12:19:38] PDBot has started watching.\r\n[Gatherling] Event=Penny Dreadful Mondays 10.15\r\n[Gatherling] Round=3\r\n[12:19:46] memlin chooses to play first.\r\n[12:19:50] memlin mulligans to 6 cards.\r\n[12:19:55] killa_0909 keeps this hand.\r\n[12:19:57] memlin keeps this hand.\r\n[12:20:04] memlin puts 1 card on top of their library.\r\n[12:20:04] Turn 1: memlin\r\n[12:20:04] memlin skips their draw step.\r\n[12:20:08] memlin plays [Island].\r\n[12:20:09] Turn 1: killa_0909\r\n[12:20:11] killa_0909 plays [Plains].\r\n[12:20:17] Turn 2: memlin\r\n[12:20:18] memlin plays [Island].\r\n[12:20:21] Turn 2: killa_0909\r\n[12:20:25] killa_0909 plays [Plains].\r\n[12:20:29] killa_0909 casts [Servo Exhibition].\r\n[12:20:34] memlin casts [Anticipate].\r\n[12:20:44] killa_0909's [Servo Exhibition] creates two Servo tokens.\r\n[12:20:47] Turn 3: memlin\r\n[12:20:49] memlin plays [Island].\r\n[12:20:52] Turn 3: killa_0909\r\n[12:20:54] killa_0909 plays [Plains].\r\n[12:21:03] memlin is being attacked by [Servo] token and [Servo] token.\r\n[12:21:11] killa_0909 casts [Watchers of the Dead].\r\n[12:21:19] flac0 has started watching.\r\n[12:21:24] memlin casts [Power Sink] targeting [Watchers of the Dead]. (X is 2).\r\n[12:21:29] Turn 4: memlin\r\n[12:21:31] memlin plays [Island].\r\n[12:21:33] flac0 has stopped watching.\r\n[12:21:37] Turn 4: killa_0909\r\n[12:21:40] killa_0909 plays [Plains].\r\n[12:21:43] killa_0909 casts [Fleetwheel Cruiser].\r\n[12:21:44] [CHAT] PDBot: [sU]Fleetwheel Cruiser[sU] has a graphical bug.\nFleetwheel Cruiser does not correctly display changes in power and toughness with Tempered Steel.\r\n[12:21:54] killa_0909 puts triggered ability from [Fleetwheel Cruiser] onto the stack (When Fleetwheel Cruiser enters the battlefield, it becomes an artifact creature until end of turn.).\r\n[12:22:03] memlin casts [Perilous Voyage] targeting [Servo] token.\r\n[12:22:07] memlin returns [Servo] token to its owner's hand with [Perilous Voyage].\r\n[12:22:14] memlin puts 1 card on the bottom of their library and 1 card on top of their library.\r\n[12:22:29] memlin casts [Perilous Voyage] targeting [Fleetwheel Cruiser].\r\n[12:22:34] memlin returns [Fleetwheel Cruiser] to its owner's hand with [Perilous Voyage].\r\n[12:22:39] memlin is being attacked by [Servo] token.\r\n[12:22:46] Turn 5: memlin\r\n[12:22:48] memlin plays [Island].\r\n[12:22:54] memlin casts [Careful Consideration] (Enhanced) targeting memlin.\r\n[12:22:54] memlin draws four cards with [Careful Consideration].\r\n[12:22:54] [CHAT] PDBot: [sU]Careful Consideration[sU] has an unclassified bug.\nCopy spells that care about being cast during a main phase such as Careful Consideration sometimes do not confer the main phase bonus.\r\n[12:23:11] memlin discards [Power Sink].\r\n[12:23:11] memlin discards [Perilous Voyage].\r\n[12:23:16] Turn 5: killa_0909\r\n[12:23:24] killa_0909 plays [Plains].\r\n[12:23:27] killa_0909 casts [Fleetwheel Cruiser].\r\n[12:23:28] killa_0909 puts triggered ability from [Fleetwheel Cruiser] onto the stack (When Fleetwheel Cruiser enters the battlefield, it becomes an artifact creature until end of turn.).\r\n[12:23:38] memlin is being attacked by [Fleetwheel Cruiser] and [Servo] token.\r\n[12:23:45] killa_0909 casts [Court Homunculus].\r\n[12:23:49] Turn 6: memlin\r\n[12:23:51] memlin plays [Island].\r\n[12:24:04] memlin casts [Treasure Cruise].\r\n[12:24:04] memlin draws three cards with [Treasure Cruise].\r\n[12:24:24] memlin casts [Chromatic Lantern].\r\n[12:24:28] Turn 6: killa_0909\r\n[12:24:32] killa_0909 plays [Foundry of the Consuls].\r\n[12:24:41] killa_0909 casts [Fleetwheel Cruiser].\r\n[12:24:51] memlin casts [Anticipate].\r\n[12:24:59] memlin has conceded from the game.\r\nWinner: killa_0909\r\nGame 1 Completed.\r\n== Game 2 (659374514) ==\r\n[Time] 1547515534\r\n[12:25:34] PDBot has started watching.\r\n[12:25:55] memlin chooses to play first.\r\n[12:25:55] memlin keeps this hand.\r\n[12:25:55] killa_0909 keeps this hand.\r\n[12:25:55] Turn 1: memlin\r\n[12:25:55] memlin skips their draw step.\r\n[12:25:57] memlin plays [Island].\r\n[12:25:57] Turn 1: killa_0909\r\n[12:25:57] killa_0909 plays [Plains].\r\n[12:25:57] killa_0909 casts [Toolcraft Exemplar].\r\n[12:25:57] Turn 2: memlin\r\n[12:25:57] memlin plays [Island].\r\n[12:25:58] Turn 2: killa_0909\r\n[12:26:00] killa_0909 plays [Plains].\r\n[12:26:04] killa_0909 casts [Servo Exhibition].\r\n[12:26:13] memlin casts [Power Sink] targeting [Servo Exhibition]. (X is 1).\r\n[12:26:25] memlin is being attacked by [Toolcraft Exemplar].\r\n[12:26:30] Turn 3: memlin\r\n[12:26:33] memlin plays [Island].\r\n[12:26:38] Turn 3: killa_0909\r\n[12:26:41] killa_0909 plays [Plains].\r\n[12:26:49] killa_0909 casts [Spined Thopter].\r\n[12:26:55] killa_0909 casts [Court Homunculus].\r\n[12:26:57] killa_0909 puts triggered ability from [Toolcraft Exemplar] onto the stack (At the beginning of combat on your turn, if you control an artifact, Toolcraft Exemplar gets +2/+1...).\r\n[12:27:03] memlin casts [Perilous Voyage] targeting [Toolcraft Exemplar].\r\n[12:27:06] memlin returns [Toolcraft Exemplar] to its owner's hand with [Perilous Voyage].\r\n[12:27:13] memlin puts 1 card on the bottom of their library and 1 card on top of their library.\r\n[12:27:16] Turn 4: memlin\r\n[12:27:19] memlin plays [Island].\r\n[12:27:24] memlin casts [Chromatic Lantern].\r\n[12:27:26] Turn 4: killa_0909\r\n[12:27:28] killa_0909 plays [Plains].\r\n[12:27:34] memlin is being attacked by [Court Homunculus] and [Spined Thopter].\r\n[12:27:44] killa_0909 casts [Court Homunculus].\r\n[12:27:49] killa_0909 casts [Toolcraft Exemplar].\r\n[12:27:54] killa_0909 casts [Glint Hawk Idol].\r\n[12:28:01] memlin casts [Anticipate].\r\n[12:28:09] Turn 5: memlin\r\n[12:28:12] memlin plays [Island].\r\n[12:28:40] Turn 5: killa_0909\r\n[12:28:43] killa_0909 plays [Plains].\r\n[12:28:46] killa_0909 casts [Chief of the Foundry].\r\n[12:29:04] killa_0909 puts triggered ability from [Glint Hawk Idol] onto the stack (Whenever another artifact enters the battlefield under your control, you may have Glint Hawk Idol ...).\r\n[12:29:12] killa_0909 puts triggered ability from [Toolcraft Exemplar] onto the stack (At the beginning of combat on your turn, if you control an artifact, Toolcraft Exemplar gets +2/+1...).\r\n[12:29:26] memlin is being attacked by [Glint Hawk Idol], [Toolcraft Exemplar], [Court Homunculus], [Court Homunculus], and [Spined Thopter].\r\n[12:29:41] memlin casts [Vedalken Aethermage].\r\n[12:29:46] No legal targets to choose for [Vedalken Aethermage]'s triggered ability.\r\n[12:29:57] memlin discards [Vedalken Aethermage].\r\n[12:29:57] memlin cycles [Vedalken Aethermage].\r\n[12:30:05] memlin reveals [Realmwright].\r\n[12:30:17] [Vedalken Aethermage] blocks [Toolcraft Exemplar].\r\n[12:30:30] Turn 6: memlin\r\n[12:31:03] memlin casts [Treasure Cruise].\r\n[12:31:07] memlin draws three cards with [Treasure Cruise].\r\n[12:31:13] memlin has conceded from the game.\r\nWinner: killa_0909\r\nGame 2 Completed.\r\nMatch Winner: killa_0909: 2–0\r\n", 'start_time_utc': '1547515177', 'end_time_utc': '1547515873'}

Host: logs.pennydreadfulmagic.com

Accept-Encoding: gzip

Cf-Ipcountry: XX

X-Forwarded-For: 35.205.164.196, 108.162.229.222

Cf-Ray: 499496575957bd6a-CDG

X-Forwarded-Proto: https

Cf-Visitor: {"scheme":"https"}

Content-Type: application/x-www-form-urlencoded

Cf-Connecting-Ip: 35.205.164.196

Cdn-Loop: cloudflare

X-Forwarded-Host: logs.pennydreadfulmagic.com

X-Forwarded-Server: logs.pennydreadfulmagic.com

Connection: Keep-Alive

Content-Length: 9171

IntegrityError
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '659374514' for key 'PRIMARY'") [SQL: 'INSERT INTO game (id, match_id, winner_id, log) VALUES (%s, %s, %s, %s)'] [parameters: (659374514, 214051177, None, "[Time] 1547515534\n[12:25:34] PDBot has started watching.\n[12:25:55] memlin chooses to play first.\n[12:25:55] memlin keeps this hand.\n[12:25:55] k ... (2853 characters truncated) ... cards with [Treasure Cruise].\n[12:31:13] memlin has conceded from the game.\nWinner: killa_0909\nGame 2 Completed.\nMatch Winner: killa_0909: 2–0\n")] (Background on this error at: http://sqlalche.me/e/gkpj)
Stack Trace:

Labels: logsite; IntegrityError
bakert commented 5 years ago
500 error at /api/upload

(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '214051194' for key 'PRIMARY'") [SQL: 'INSERT INTO match (id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (214051194, 1, 'PDM R3 vs. karakusk', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)

Reported on logsite by logged_out

            --------------------------------------------------------------------------------
            Request Method: POST
            Path: /api/upload?
            Cookies: {}
            Endpoint: upload
            View Args: {}
            Person: logged_out
            Referrer: None
            Request Data: {'match_id': '214051194', 'lines': "PennyDreadful\r\nPDM R3 vs. karakusk\r\nTourney, BuggedCardObserver, PennyDreadfulLegality\r\nnanaiper,karakusk\r\n\r\n== Game 1 (659373910) ==\r\n[Time] 1547515227\r\n[12:20:27] PDBot has started watching.\r\n[12:20:27] nanaiper joined the game.\r\n[12:20:27] karakusk joined the game.\r\n[Gatherling] Event=Penny Dreadful Mondays 10.15\r\n[Gatherling] Round=3\r\n[12:20:38] karakusk chooses to play first.\r\n[12:20:55] karakusk keeps this hand.\r\n[12:20:59] nanaiper keeps this hand.\r\n[12:20:59] Turn 1: karakusk\r\n[12:20:59] karakusk skips their draw step.\r\n[12:21:01] karakusk plays [Choked Estuary].\r\n[12:21:07] Turn 1: nanaiper\r\n[12:21:09] nanaiper plays [Jwar Isle Refuge].\r\n[12:21:09] nanaiper puts triggered ability from [Jwar Isle Refuge] onto the stack (When Jwar Isle Refuge enters the battlefield, you gain 1 life.).\r\n[12:21:11] Turn 2: karakusk\r\n[12:21:13] karakusk plays [Choked Estuary].\r\n[12:21:17] karakusk casts [Cephalid Illusionist].\r\n[12:21:20] Turn 2: nanaiper\r\n[12:21:22] nanaiper plays [Choked Estuary].\r\n[12:21:32] nanaiper casts [Wretched Banquet] targeting [Cephalid Illusionist].\r\n[12:21:32] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[12:21:34] Turn 3: karakusk\r\n[12:21:38] karakusk plays [Island].\r\n[12:21:40] karakusk casts [Cephalid Illusionist].\r\n[12:21:43] karakusk casts [Shuko].\r\n[12:21:45] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[12:21:45] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[12:21:53] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[12:21:53] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[12:21:55] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[12:21:55] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[12:21:57] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[12:21:57] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[12:21:58] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[12:21:58] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[12:21:58] karakusk puts triggered ability from [Narcomoeba] onto the stack (When Narcomoeba is put into your graveyard from your library, you may put it onto the battlefield.).\r\n[12:22:04] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[12:22:05] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[12:22:05] karakusk puts triggered ability from [Narcomoeba] onto the stack (When Narcomoeba is put into your graveyard from your library, you may put it onto the battlefield.).\r\n[12:22:09] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[12:22:09] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[12:22:09] karakusk puts triggered ability from [Narcomoeba] onto the stack (When Narcomoeba is put into your graveyard from your library, you may put it onto the battlefield.).\r\n[12:22:18] karakusk casts [Dread Return] from the graveyard targeting [Flayer of the Hatebound].\r\n[12:22:21] karakusk puts triggered ability from [Flayer of the Hatebound] onto the stack targeting nanaiper (Whenever Flayer of the Hatebound or another creature enters the battlefield from your graveyard, t...).\r\n[12:22:26] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[12:22:26] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[12:22:28] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[12:22:28] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[12:22:29] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[12:22:29] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[12:22:31] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[12:22:31] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[12:22:33] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[12:22:33] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[12:22:35] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[12:22:35] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[12:22:37] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[12:22:37] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[12:22:39] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[12:22:39] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[12:22:41] karakusk activates an ability of [Shuko] targeting [Cephalid Illusionist] (Equip {0}).\r\n[12:22:41] karakusk puts triggered ability from [Cephalid Illusionist] onto the stack (Whenever Cephalid Illusionist becomes the target of a spell or ability, put the top three cards of...).\r\n[12:22:41] karakusk puts triggered ability from [Narcomoeba] onto the stack (When Narcomoeba is put into your graveyard from your library, you may put it onto the battlefield.).\r\n[12:22:45] nanaiper has conceded from the game.\r\nWinner: karakusk\r\nGame 1 Completed.\r\n== Game 2 (659374274) ==\r\n[Time] 1547515423\r\n[12:23:44] PDBot has started watching.\r\n[12:23:46] nanaiper chooses to play first.\r\n[12:23:48] nanaiper keeps this hand.\r\n[12:23:52] karakusk mulligans to 6 cards.\r\n[12:23:55] karakusk keeps this hand.\r\n[12:23:59] karakusk puts 1 card on the bottom of their library.\r\n[12:23:59] Turn 1: nanaiper\r\n[12:24:02] nanaiper skips their draw step.\r\n[12:24:03] nanaiper plays [Choked Estuary].\r\n[12:24:06] nanaiper casts [Scrabbling Claws].\r\n[12:24:08] Turn 1: karakusk\r\n[12:24:09] karakusk plays [Island].\r\n[12:24:12] Turn 2: nanaiper\r\n[12:24:15] nanaiper plays [Choked Estuary].\r\n[12:24:17] Turn 2: karakusk\r\n[12:24:19] karakusk plays [Island].\r\n[12:24:21] karakusk casts [Narcomoeba].\r\n[12:24:22] Turn 3: nanaiper\r\n[12:24:26] nanaiper plays [Swamp].\r\n[12:24:28] Turn 3: karakusk\r\n[12:24:29] karakusk plays [Choked Estuary].\r\n[12:24:36] nanaiper is being attacked by [Narcomoeba].\r\n[12:24:40] Turn 4: nanaiper\r\n[12:24:44] nanaiper plays [Jwar Isle Refuge].\r\n[12:24:44] nanaiper puts triggered ability from [Jwar Isle Refuge] onto the stack (When Jwar Isle Refuge enters the battlefield, you gain 1 life.).\r\n[12:24:50] Turn 4: karakusk\r\n[12:24:53] karakusk plays [Island].\r\n[12:24:57] nanaiper is being attacked by [Narcomoeba].\r\n[12:25:01] Turn 5: nanaiper\r\n[12:25:05] nanaiper plays [Choked Estuary].\r\n[12:25:12] Turn 5: karakusk\r\n[12:25:20] nanaiper is being attacked by [Narcomoeba].\r\n[12:25:27] Turn 6: nanaiper\r\n[12:25:30] nanaiper plays [Swamp].\r\n[12:25:34] Turn 6: karakusk\r\n[12:25:55] karakusk plays [Island].\r\n[12:25:55] nanaiper is being attacked by [Narcomoeba].\r\n[12:25:57] Turn 7: nanaiper\r\n[12:25:57] nanaiper plays [Island].\r\n[12:25:58] Turn 7: karakusk\r\n[12:25:59] karakusk plays [Island].\r\n[12:26:03] nanaiper is being attacked by [Narcomoeba].\r\n[12:26:08] Turn 8: nanaiper\r\n[12:26:10] nanaiper plays [Urza's Factory].\r\n[12:26:16] Turn 8: karakusk\r\n[12:26:23] nanaiper is being attacked by [Narcomoeba].\r\n[12:26:33] nanaiper activates an ability of [Urza's Factory] ( Create a 2/2 colorless Assembly-Worker artifact creature token.).\r\n[12:26:37] karakusk casts [Perilous Voyage] targeting [Scrabbling Claws].\r\n[12:26:39] karakusk returns [Scrabbling Claws] to its owner's hand with [Perilous Voyage].\r\n[12:26:44] karakusk puts 2 cards on the bottom of their library.\r\n[12:26:48] nanaiper's [Urza's Factory] creates an Assembly-Worker token.\r\n[12:26:49] Turn 9: nanaiper\r\n[12:26:52] nanaiper plays [Forest].\r\n[12:26:57] karakusk is being attacked by [Assembly-Worker] token.\r\n[12:27:08] nanaiper casts [Scrabbling Claws].\r\n[12:27:16] Turn 9: karakusk\r\n[12:27:18] karakusk plays [Choked Estuary].\r\n[12:27:24] nanaiper is being attacked by [Narcomoeba].\r\n[12:27:35] nanaiper activates an ability of [Urza's Factory] ( Create a 2/2 colorless Assembly-Worker artifact creature token.).\r\n[12:27:36] nanaiper's [Urza's Factory] creates an Assembly-Worker token.\r\n[12:27:40] nanaiper activates an ability of [Scrabbling Claws] targeting karakusk ( Target player exiles a card from their graveyard.).\r\n[12:27:43] karakusk exiles [Perilous Voyage].\r\n[12:27:44] Turn 10: nanaiper\r\n[12:27:49] karakusk is being attacked by [Assembly-Worker] token and [Assembly-Worker] token.\r\n[12:27:53] Turn 10: karakusk\r\n[12:27:58] karakusk has conceded from the game.\r\nWinner: nanaiper\r\nGame 2 Completed.\r\n[12:28:00] karakusk draws their next card.\r\n[12:28:00] karakusk draws their next card.\r\n[12:28:02] nanaiper has left the game.\r\n[12:28:02] karakusk draws their next card.\r\n[12:28:03] karakusk draws their next card.\r\n== Game 3 (659374822) ==\r\n[Time] 1547515695\r\n[12:28:16] PDBot has started watching.\r\n[12:28:16] nanaiper joined the game.\r\n[12:28:22] karakusk chooses to play first.\r\n[12:28:25] karakusk mulligans to 6 cards.\r\n[12:28:27] nanaiper keeps this hand.\r\n[12:28:28] karakusk keeps this hand.\r\n[12:28:30] karakusk puts 1 card on the bottom of their library.\r\n[12:28:30] Turn 1: karakusk\r\n[12:28:30] karakusk skips their draw step.\r\n[12:28:31] karakusk plays [Island].\r\n[12:28:33] karakusk casts [Shuko].\r\n[12:28:35] Turn 1: nanaiper\r\n[12:28:39] nanaiper plays [Jwar Isle Refuge].\r\n[12:28:40] nanaiper puts triggered ability from [Jwar Isle Refuge] onto the stack (When Jwar Isle Refuge enters the battlefield, you gain 1 life.).\r\n[12:28:41] Turn 2: karakusk\r\n[12:28:43] karakusk plays [Swamp].\r\n[12:28:45] karakusk casts [Anticipate].\r\n[12:28:53] Turn 2: nanaiper\r\n[12:28:55] nanaiper plays [Choked Estuary].\r\n", 'start_time_utc': '1547515227', 'end_time_utc': '1547515735'}
Host: logs.pennydreadfulmagic.com
Accept-Encoding: gzip
Cf-Ipcountry: XX
X-Forwarded-For: 35.205.164.196, 141.101.88.54
Cf-Ray: 49949193dceeb7d7-CDG
X-Forwarded-Proto: https
Cf-Visitor: {"scheme":"https"}
Content-Type: application/x-www-form-urlencoded
Cf-Connecting-Ip: 35.205.164.196
Cdn-Loop: cloudflare
X-Forwarded-Host: logs.pennydreadfulmagic.com
X-Forwarded-Server: logs.pennydreadfulmagic.com
Connection: Keep-Alive
Content-Length: 14556
IntegrityError
(_mysql_exceptions.IntegrityError) (1062, "Duplicate entry '214051194' for key 'PRIMARY'") [SQL: 'INSERT INTO match (id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (214051194, 1, 'PDM R3 vs. karakusk', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)
Stack Trace:

Labels: logsite; IntegrityError
bakert commented 5 years ago

These all happened Dec 11-Jan 15 and haven't been seen since.

I'm going to assume something amongst disk space, partition move of the db or changes on the pdbot side have fixed things. I'll reopen if there is another occurrence.

bakert commented 5 years ago

Possibly closed this prematurely.

(MySQLdb._exceptions.IntegrityError) (1062, "Duplicate entry '215113873' for key 'PRIMARY'") [SQL: 'INSERT INTO match (id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (215113873, 1, 'pd league', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)

Reported on logsite by logged_out

            --------------------------------------------------------------------------------
            Request Method: POST
            Path: /api/upload?
            Cookies: {}
            Endpoint: upload
            View Args: {}
            Person: logged_out
            Referrer: None
            Request Data: {'match_id': '215113873', 'lines': "PennyDreadful\r\npd league\r\nBuggedCardObserver, LeagueObserver, PennyDreadfulLegality\r\nmptn,silasary\r\n\r\n== Game 1 (663522740) ==\r\n[Time] 1550305016\r\n[19:16:57] PDBot has started watching.\r\n[19:16:57] silasary joined the game.\r\n[League] Selvala Tokens Verd by mptn (39790) vs Why Is This Deck So Good? by silasary (39126)\r\n[19:17:00] [CHAT] PDBot: [sD] Good luck in your League match!\r\n[19:17:00] [CHAT] PDBot: [sD] PDBot will be going down for scheduled maintenance.  Please report this league match manually.\r\n[19:17:07] silasary chooses to play first.\r\n[19:17:21] silasary keeps this hand.\r\n[19:17:26] mptn keeps this hand.\r\n[19:17:26] Turn 1: silasary\r\n[19:17:28] silasary skips their draw step.\r\n[19:17:30] silasary plays [Evolving Wilds].\r\n[19:17:31] Turn 1: mptn\r\n[19:17:34] mptn plays [Forest].\r\n[19:17:35] mptn casts [Avacyn's Pilgrim].\r\n[19:17:40] silasary activates an ability of [Evolving Wilds] ( Search your library for a basic land card, put it onto the battlefield tapped, then shuffle your ...).\r\n[19:17:53] Turn 2: silasary\r\n[19:17:58] silasary plays [Mountain].\r\n[19:18:02] silasary casts [Chain Lightning] targeting [Avacyn's Pilgrim].\r\n[19:18:07] Turn 2: mptn\r\n[19:18:10] mptn plays [Forest].\r\n[19:18:12] mptn casts [Jade Mage].\r\n[19:18:16] Turn 3: silasary\r\n[19:18:18] silasary plays [Mountain].\r\n[19:18:25] silasary casts [Frantic Search].\r\n[19:18:25] silasary draws two cards with [Frantic Search].\r\n[19:18:39] silasary discards [Deep Analysis].\r\n[19:18:39] silasary discards [Pyroclasm].\r\n[19:18:50] silasary casts [Spellweaver Helix].\r\n[19:18:58] silasary puts triggered ability from [Spellweaver Helix] onto the stack targeting [Chain Lightning], and [Deep Analysis] (When Spellweaver Helix enters the battlefield, you may exile two target sorcery cards from a singl...).\r\n[19:19:00] Turn 3: mptn\r\n[19:19:07] mptn casts [Song of Freyalise].\r\n[19:19:07] mptn puts triggered ability from [Song of Freyalise] onto the stack (Until your next turn, creatures you control gain '{T}: Add one mana of any color.').\r\n[19:19:12] mptn casts [Ulvenwald Tracker].\r\n[19:19:13] Turn 4: silasary\r\n[19:19:16] silasary plays [Choked Estuary].\r\n[19:19:24] silasary casts [Pyroclasm].\r\n[19:19:28] [CHAT] mptn: oh ty for copying deck\r\n[19:19:40] [CHAT] silasary: It's a really nice deck :)\r\n[19:19:48] Turn 4: mptn\r\n[19:19:48] mptn puts triggered ability from [Song of Freyalise] onto the stack (Until your next turn, creatures you control gain '{T}: Add one mana of any color.').\r\n[19:19:54] mptn plays [Forest].\r\n[19:19:56] mptn casts [Cryptolith Rite].\r\n[19:20:01] Turn 5: silasary\r\n[19:20:03] silasary plays [Island].\r\n[19:20:09] silasary casts [Chain Lightning] targeting mptn.\r\n[19:20:10] silasary puts triggered ability from [Spellweaver Helix] onto the stack (Whenever a player casts a card, if it has the same name as one of the cards exiled with Spellweave...).\r\n[19:20:14] silasary casts [Deep Analysis] targeting silasary.\r\n[19:20:14] silasary draws two cards with [Deep Analysis].\r\n[19:20:31] silasary discards [Memory Lapse].\r\n[19:20:31] silasary casts [Pirate's Pillage].\r\n[19:20:31] silasary draws two cards with [Pirate's Pillage].\r\n[19:20:31] silasary's [Pirate's Pillage] creates two Treasure tokens.\r\n[19:20:34] Turn 5: mptn\r\n[19:20:35] mptn puts triggered ability from [Song of Freyalise] onto the stack (Put a +1/+1 counter on each creature you control. Those creatures gain vigilance, trample, and ind...).\r\n[19:20:40] mptn casts [Ulvenwald Tracker].\r\n[19:20:43] Turn 6: silasary\r\n[19:20:47] silasary plays [Sunken Hollow].\r\n[19:21:00] silasary casts [Consuming Vapors] targeting mptn.\r\n[19:21:03] mptn sacrifices [Ulvenwald Tracker].\r\n[19:21:07] Turn 6: mptn\r\n[19:21:09] mptn plays [Fortified Village].\r\n", 'start_time_utc': '1550305016', 'end_time_utc': '1550305269'}
Host: logs.pennydreadfulmagic.com
Accept-Encoding: gzip
Cf-Ipcountry: XX
X-Forwarded-For: 35.205.164.196, 141.101.69.131
Cf-Ray: 4a9f08af5b5ab7c5-CDG
X-Forwarded-Proto: https
Cf-Visitor: {"scheme":"https"}
Content-Type: application/x-www-form-urlencoded
Cf-Connecting-Ip: 35.205.164.196
Cdn-Loop: cloudflare
X-Forwarded-Host: logs.pennydreadfulmagic.com
X-Forwarded-Server: logs.pennydreadfulmagic.com
Connection: Keep-Alive
Content-Length: 4945
IntegrityError
(MySQLdb._exceptions.IntegrityError) (1062, "Duplicate entry '215113873' for key 'PRIMARY'") [SQL: 'INSERT INTO match (id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'] [parameters: (215113873, 1, 'pd league', None, None, None, None, None)] (Background on this error at: http://sqlalche.me/e/gkpj)
Stack Trace:

  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2309, in __call__
    return self.wsgi_app(environ, start_response)
  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2295, in wsgi_app
    response = self.handle_exception(e)
  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/discord/.local/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise
    raise value
  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "./logsite/api.py", line 26, in upload
    importing.import_log(lines.split('\n'), match_id)
  File "./logsite/importing.py", line 30, in import_log
    local = import_header(lines, match_id)
  File "./logsite/importing.py", line 75, in import_header
    local = match.create_match(match_id, format_name, comment, modules, players)
  File "./logsite/data/match.py", line 69, in create_match
    db.commit()
  File "./logsite/db.py", line 52, in commit
    return DB.session.commit()
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/scoping.py", line 162, in do
    return getattr(self.registry(), name)(*args, **kwargs)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 1023, in commit
    self.transaction.commit()
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 487, in commit
    self._prepare_impl()
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 466, in _prepare_impl
    self.session.flush()
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2436, in flush
    self._flush(objects)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2574, in _flush
    transaction.rollback(_capture_exception=True)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 67, in __exit__
    compat.reraise(exc_type, exc_value, exc_tb)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 277, in reraise
    raise value
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2534, in _flush
    flush_context.execute()
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 416, in execute
    rec.execute(self)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 583, in execute
    uow,
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 245, in save_obj
    insert,
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 1063, in _emit_insert_statements
    c = cached_connections[connection].execute(statement, multiparams)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 980, in execute
    return meth(self, multiparams, params)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", line 273, in _execute_on_connection
    return connection._execute_clauseelement(self, multiparams, params)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1099, in _execute_clauseelement
    distilled_params,
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1240, in _execute_context
    e, statement, parameters, cursor, context
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1458, in _handle_dbapi_exception
    util.raise_from_cause(sqlalchemy_exception, exc_info)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 296, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb, cause=cause)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 276, in reraise
    raise value.with_traceback(tb)
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1236, in _execute_context
    cursor, statement, parameters, context
  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 536, in do_execute
    cursor.execute(statement, parameters)
  File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 198, in execute
    res = self._query(query)
  File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 304, in _query
    db.query(q)
  File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 217, in query
    _mysql.connection.query(self, query)
Exception_hash: 78c3dea0d26bcfb2f66295efebddd06149fb6055
bakert commented 5 years ago

(MySQLdb._exceptions.IntegrityError) (1062, "Duplicate entry '669738968' for key 'PRIMARY'") [SQL: INSERT INTO game (id, match_id, winner_id, log) VALUES (%s, %s, %s, %s)] [parameters: (669738968, 216729253, None, '[Time] 1554992122\n[00:15:22] PDBot has started watching.\n[00:15:22] mptn joined the game.\n[00:15:35] bparis15 chooses to play first.\n[00:15:39] bparis15 begins the game with seven cards in hand.\n[00:15:41] [CHAT] mptn: wats\n')] (Background on this error at: http://sqlalche.me/e/gkpj)

Reported on logsite by logged_out

Request Data ``` Request Method: POST Path: /api/upload? Cookies: {} Endpoint: upload View Args: {} Person: logged_out Referrer: None Request Data: {'match_id': '216729253', 'lines': "PennyDreadful\r\npd league\r\nBuggedCardObserver, LeagueObserver, PennyDreadfulLegality\r\nbparis15,mptn\r\n\r\n== Game 1 (669737858) ==\r\n[Time] 1554991323\r\n[00:02:03] PDBot has started watching.\r\n[League] Jund by bparis15 (45074) vs Izzet Prowess Ver8 by mptn (45076)\r\n[00:02:06] [CHAT] PDBot: [sD] Good luck in your League match!\r\n[00:02:09] mptn chooses to play first.\r\n[00:02:11] mptn mulligans to six cards.\r\n[00:02:15] bparis15 mulligans to six cards.\r\n[00:02:18] mptn puts a card on the bottom of their library and begins the game with six cards in hand.\r\n[00:02:28] bparis15 puts a card on the bottom of their library and begins the game with six cards in hand.\r\n[00:02:28] Turn 1: mptn\r\n[00:02:30] mptn skips their draw step.\r\n[00:02:31] mptn plays [Highland Lake].\r\n[00:02:34] Turn 1: bparis15\r\n[00:02:38] bparis15 plays [Lavaclaw Reaches].\r\n[00:02:38] Turn 2: mptn\r\n[00:02:46] mptn plays [Island].\r\n[00:02:48] mptn casts [Abbot of Keral Keep].\r\n[00:02:49] mptn puts triggered ability from [Abbot of Keral Keep] onto the stack (When Abbot of Keral Keep enters the battlefield, exile the top card of your library. Until end of ...).\r\n[00:02:51] Turn 2: bparis15\r\n[00:02:55] bparis15 plays [Forest].\r\n[00:02:57] bparis15 casts [Viridian Emissary].\r\n[00:02:57] Turn 3: mptn\r\n[00:03:09] bparis15 is being attacked by [Abbot of Keral Keep].\r\n[00:03:12] mptn casts [Perilous Voyage] targeting [Viridian Emissary].\r\n[00:03:12] mptn puts triggered ability from [Abbot of Keral Keep] onto the stack (Prowess (Whenever you cast a noncreature spell, this creature gets +1/+1 until end of turn.)).\r\n[00:03:15] mptn returns [Viridian Emissary] to its owner's hand with [Perilous Voyage].\r\n[00:03:20] mptn puts 1 card on the bottom of their library and 1 card on top of their library.\r\n[00:03:24] mptn plays [Mountain].\r\n[00:03:25] Turn 3: bparis15\r\n[00:03:31] bparis15 casts [Viridian Emissary].\r\n[00:03:34] bparis15 plays [Temple of Abandon].\r\n[00:03:34] bparis15 puts triggered ability from [Temple of Abandon] onto the stack (When Temple of Abandon enters the battlefield, scry 1.).\r\n[00:03:38] bparis15 puts 1 card on the bottom of their library.\r\n[00:03:42] Turn 4: mptn\r\n[00:03:46] mptn casts [Frantic Search].\r\n[00:03:46] mptn puts triggered ability from [Abbot of Keral Keep] onto the stack (Prowess (Whenever you cast a noncreature spell, this creature gets +1/+1 until end of turn.)).\r\n[00:03:49] mptn draws two cards with [Frantic Search].\r\n[00:03:52] mptn discards [Island].\r\n[00:03:52] mptn discards [Mountain].\r\n[00:03:58] mptn casts [Frantic Search].\r\n[00:03:58] mptn puts triggered ability from [Abbot of Keral Keep] onto the stack (Prowess (Whenever you cast a noncreature spell, this creature gets +1/+1 until end of turn.)).\r\n[00:04:00] mptn draws two cards with [Frantic Search].\r\n[00:04:10] mptn discards [Evolving Wilds].\r\n[00:04:11] mptn discards [Incinerate].\r\n[00:04:20] mptn casts [Treasure Cruise].\r\n[00:04:20] mptn puts triggered ability from [Abbot of Keral Keep] onto the stack (Prowess (Whenever you cast a noncreature spell, this creature gets +1/+1 until end of turn.)).\r\n[00:04:23] mptn draws three cards with [Treasure Cruise].\r\n[00:04:31] n6363 has started watching.\r\n[00:04:39] mptn casts [Perilous Voyage] targeting [Viridian Emissary].\r\n[00:04:39] mptn puts triggered ability from [Abbot of Keral Keep] onto the stack (Prowess (Whenever you cast a noncreature spell, this creature gets +1/+1 until end of turn.)).\r\n[00:04:42] mptn returns [Viridian Emissary] to its owner's hand with [Perilous Voyage].\r\n[00:04:56] mptn puts 1 card on the bottom of their library and 1 card on top of their library.\r\n[00:04:59] bparis15 is being attacked by [Abbot of Keral Keep].\r\n[00:05:00] Turn 4: bparis15\r\n[00:05:06] bparis15 casts [Chain Lightning] targeting [Abbot of Keral Keep].\r\n[00:05:14] bparis15 casts [Lay Bare the Heart] targeting mptn.\r\n[00:05:19] mptn discards [Treasure Cruise].\r\n[00:05:19] mptn reveals their hand to [Lay Bare the Heart], containing [Elusive Spellfist] and [Burst Lightning].\r\n[00:05:20] bparis15 plays [Forest].\r\n[00:05:22] Turn 5: mptn\r\n[00:05:26] mptn casts [Elusive Spellfist].\r\n[00:05:28] Turn 5: bparis15\r\n[00:05:31] bparis15 plays [Lavaclaw Reaches].\r\n[00:05:34] bparis15 casts [Cut] targeting [Elusive Spellfist].\r\n[00:05:34] [CHAT] PDBot: [sU]Cut[sU] has a graphical bug.\nSplit cards such as Cut // Ribbons are reported as 3 cards in the chat log.\r\n[00:05:38] bparis15 casts [Viridian Emissary].\r\n[00:05:41] Turn 6: mptn\r\n[00:05:48] Turn 6: bparis15\r\n[00:05:51] n6363 has stopped watching.\r\n[00:05:58] mptn is being attacked by [Viridian Emissary].\r\n[00:06:04] bparis15 casts [Sprouting Thrinax].\r\n[00:06:11] n6363 has started watching.\r\n[00:06:13] bparis15 casts [Sylvan Advocate].\r\n[00:06:19] mptn casts [Perilous Voyage] targeting [Sylvan Advocate].\r\n[00:06:19] mptn returns [Sylvan Advocate] to its owner's hand with [Perilous Voyage].\r\n[00:06:22] n6363 has stopped watching.\r\n[00:06:24] mptn puts 2 cards on the bottom of their library.\r\n[00:06:26] Turn 7: mptn\r\n[00:06:28] mptn casts [Stormchaser Mage].\r\n[00:06:32] bparis15 is being attacked by [Stormchaser Mage].\r\n[00:06:39] Turn 7: bparis15\r\n[00:06:42] bparis15 casts [Desecration Demon].\r\n[00:06:47] bparis15 puts triggered ability from [Desecration Demon] onto the stack (At the beginning of each combat, any opponent may sacrifice a creature. If a player does, tap Dese...).\r\n[00:06:51] mptn is being attacked by [Sprouting Thrinax] and [Viridian Emissary].\r\n[00:06:56] Turn 8: mptn\r\n[00:07:01] mptn casts [Frantic Search].\r\n[00:07:01] mptn puts triggered ability from [Stormchaser Mage] onto the stack (Prowess (Whenever you cast a noncreature spell, this creature gets +1/+1 until end of turn.)).\r\n[00:07:04] mptn draws two cards with [Frantic Search].\r\n[00:07:13] mptn discards [Island].\r\n[00:07:13] mptn discards [Burst Lightning].\r\n[00:07:19] mptn casts [Treasure Cruise].\r\n[00:07:19] mptn puts triggered ability from [Stormchaser Mage] onto the stack (Prowess (Whenever you cast a noncreature spell, this creature gets +1/+1 until end of turn.)).\r\n[00:07:22] mptn draws three cards with [Treasure Cruise].\r\n[00:07:26] mptn plays [Mountain].\r\n[00:07:30] bparis15 puts triggered ability from [Desecration Demon] onto the stack (At the beginning of each combat, any opponent may sacrifice a creature. If a player does, tap Dese...).\r\n[00:07:35] Turn 8: bparis15\r\n[00:07:42] bparis15 puts triggered ability from [Desecration Demon] onto the stack (At the beginning of each combat, any opponent may sacrifice a creature. If a player does, tap Dese...).\r\n[00:07:52] mptn is being attacked by [Desecration Demon] and [Sprouting Thrinax].\r\n[00:08:00] bparis15 casts [Sprouting Thrinax].\r\n[00:08:03] mptn has conceded from the game.\r\nWinner: bparis15\r\nGame 1 Completed.\r\n[00:08:07] mptn draws their next card.\r\n[00:08:08] mptn draws their next card.\r\n== Game 2 (669738412) ==\r\n[Time] 1554991721\r\n[00:08:42] PDBot has started watching.\r\n[00:08:42] bparis15 begins the game with seven cards in hand.\r\n[00:08:42] Turn 1: mptn\r\n[00:08:44] mptn skips their draw step.\r\n[00:08:45] mptn plays [Evolving Wilds].\r\n[00:08:46] mptn activates an ability of [Evolving Wilds] ( Search your library for a basic land card, put it onto the battlefield tapped, then shuffle your ...).\r\n[00:08:50] Turn 1: bparis15\r\n[00:08:52] bparis15 plays [Temple of Abandon].\r\n[00:08:52] bparis15 puts triggered ability from [Temple of Abandon] onto the stack (When Temple of Abandon enters the battlefield, scry 1.).\r\n[00:09:00] bparis15 puts 1 card on top of their library.\r\n[00:09:00] Turn 2: mptn\r\n[00:09:03] mptn plays [Mountain].\r\n[00:09:05] mptn casts [Stormchaser Mage].\r\n[00:09:08] bparis15 is being attacked by [Stormchaser Mage].\r\n[00:09:08] Turn 2: bparis15\r\n[00:09:10] bparis15 plays [Lavaclaw Reaches].\r\n[00:09:15] Turn 3: mptn\r\n[00:09:19] mptn plays [Mountain].\r\n[00:09:21] mptn casts [Fevered Visions].\r\n[00:09:21] mptn puts triggered ability from [Stormchaser Mage] onto the stack (Prowess (Whenever you cast a noncreature spell, this creature gets +1/+1 until end of turn.)).\r\n[00:09:26] bparis15 is being attacked by [Stormchaser Mage].\r\n[00:09:26] mptn puts triggered ability from [Fevered Visions] onto the stack (At the beginning of each player's end step, that player draws a card. If the player is your oppone...).\r\n[00:09:27] mptn draws a card with [Fevered Visions]'s ability.\r\n[00:09:27] Turn 3: bparis15\r\n[00:09:32] bparis15 casts [Cut] targeting [Stormchaser Mage].\r\n[00:09:35] bparis15 plays [Temple of Abandon].\r\n[00:09:35] bparis15 puts triggered ability from [Temple of Abandon] onto the stack (When Temple of Abandon enters the battlefield, scry 1.).\r\n[00:09:41] bparis15 puts 1 card on top of their library.\r\n[00:09:41] mptn puts triggered ability from [Fevered Visions] onto the stack (At the beginning of each player's end step, that player draws a card. If the player is your oppone...).\r\n[00:09:42] bparis15 draws a card with [Fevered Visions]'s ability.\r\n[00:09:42] Turn 4: mptn\r\n[00:09:44] mptn plays [Island].\r\n[00:09:46] mptn casts [Niblis of Frost].\r\n[League] Invalid Match\r\n[00:09:47] [CHAT] PDBot: [sD][sR] Niblis of Frost was not on a submitted league decklist. This is not a league match.\r\n[00:09:48] mptn puts triggered ability from [Fevered Visions] onto the stack (At the beginning of each player's end step, that player draws a card. If the player is your oppone...).\r\n[00:09:48] mptn draws a card with [Fevered Visions]'s ability.\r\n[00:09:48] Turn 4: bparis15\r\n[00:09:52] bparis15 plays [Swamp].\r\n[00:10:03] bparis15 casts [Chain Lightning] targeting [Niblis of Frost].\r\n[00:10:14] mptn puts triggered ability from [Fevered Visions] onto the stack (At the beginning of each player's end step, that player draws a card. If the player is your oppone...).\r\n[00:10:15] bparis15 draws a card with [Fevered Visions]'s ability.\r\n[00:10:15] Turn 5: mptn\r\n[00:10:21] mptn plays [Mountain].\r\n[00:10:23] mptn casts [Stormchaser Mage].\r\n[00:10:36] bparis15 is being attacked by [Stormchaser Mage].\r\n[00:10:41] bparis15 casts [Putrefy] targeting [Stormchaser Mage].\r\n[00:10:52] mptn casts [Frantic Search].\r\n[00:10:52] mptn draws two cards with [Frantic Search].\r\n[00:11:01] mptn discards [Highland Lake].\r\n[00:11:01] mptn discards [Incinerate].\r\n[00:11:08] mptn casts [Treasure Cruise].\r\n[00:11:08] mptn draws three cards with [Treasure Cruise].\r\n[00:11:11] mptn puts triggered ability from [Fevered Visions] onto the stack (At the beginning of each player's end step, that player draws a card. If the player is your oppone...).\r\n[00:11:12] mptn draws a card with [Fevered Visions]'s ability.\r\n[00:11:12] Turn 5: bparis15\r\n[00:11:16] bparis15 plays [Savage Lands].\r\n[00:11:26] bparis15 casts [Lay Bare the Heart] targeting mptn.\r\n[00:11:35] mptn discards [Stormchaser Mage].\r\n[00:11:35] mptn reveals their hand to [Lay Bare the Heart], containing [Highland Lake], [Niblis of Frost], [Island], [Treasure Cruise], and [Perilous Voyage].\r\n[00:11:41] bparis15 casts [Lay Bare the Heart] targeting mptn.\r\n[00:11:46] mptn discards [Treasure Cruise].\r\n[00:11:46] mptn reveals their hand to [Lay Bare the Heart], containing [Highland Lake], [Niblis of Frost], [Island], and [Perilous Voyage].\r\n[00:11:49] mptn puts triggered ability from [Fevered Visions] onto the stack (At the beginning of each player's end step, that player draws a card. If the player is your oppone...).\r\n[00:11:49] bparis15 draws a card with [Fevered Visions]'s ability.\r\n[00:11:49] Turn 6: mptn\r\n[00:11:53] mptn casts [Niblis of Frost].\r\n[00:11:55] mptn plays [Island].\r\n[00:11:56] mptn puts triggered ability from [Fevered Visions] onto the stack (At the beginning of each player's end step, that player draws a card. If the player is your oppone...).\r\n[00:11:56] mptn draws a card with [Fevered Visions]'s ability.\r\n[00:11:56] Turn 6: bparis15\r\n[00:12:10] bparis15 casts [Putrefy] targeting [Niblis of Frost].\r\n[00:12:19] bparis15 casts [Lay Bare the Heart] targeting mptn.\r\n[00:12:28] mptn discards [Burst Lightning].\r\n[00:12:28] mptn reveals their hand to [Lay Bare the Heart], containing [Mountain], [Highland Lake], and [Perilous Voyage].\r\n[00:12:30] bparis15 plays [Temple of Abandon].\r\n[00:12:30] bparis15 puts triggered ability from [Temple of Abandon] onto the stack (When Temple of Abandon enters the battlefield, scry 1.).\r\n[00:12:34] bparis15 puts 1 card on the bottom of their library.\r\n[00:12:35] mptn puts triggered ability from [Fevered Visions] onto the stack (At the beginning of each player's end step, that player draws a card. If the player is your oppone...).\r\n[00:12:35] bparis15 draws a card with [Fevered Visions]'s ability.\r\n[00:12:35] Turn 7: mptn\r\n[00:12:38] mptn puts triggered ability from [Fevered Visions] onto the stack (At the beginning of each player's end step, that player draws a card. If the player is your oppone...).\r\n[00:12:38] mptn draws a card with [Fevered Visions]'s ability.\r\n[00:12:38] Turn 7: bparis15\r\n[00:12:42] bparis15 plays [Swamp].\r\n[00:12:47] bparis15 casts [Desecration Demon].\r\n[00:12:54] bparis15 casts [Burst Lightning] targeting mptn.\r\n[00:12:59] bparis15 puts triggered ability from [Desecration Demon] onto the stack (At the beginning of each combat, any opponent may sacrifice a creature. If a player does, tap Dese...).\r\n[00:13:02] mptn puts triggered ability from [Fevered Visions] onto the stack (At the beginning of each player's end step, that player draws a card. If the player is your oppone...).\r\n[00:13:03] bparis15 draws a card with [Fevered Visions]'s ability.\r\n[00:13:04] Turn 8: mptn\r\n[00:13:20] mptn plays [Mountain].\r\n[00:13:22] bparis15 puts triggered ability from [Desecration Demon] onto the stack (At the beginning of each combat, any opponent may sacrifice a creature. If a player does, tap Dese...).\r\n[00:13:23] mptn puts triggered ability from [Fevered Visions] onto the stack (At the beginning of each player's end step, that player draws a card. If the player is your oppone...).\r\n[00:13:24] mptn draws a card with [Fevered Visions]'s ability.\r\n[00:13:25] Turn 8: bparis15\r\n[00:13:30] bparis15 puts triggered ability from [Desecration Demon] onto the stack (At the beginning of each combat, any opponent may sacrifice a creature. If a player does, tap Dese...).\r\n[00:13:43] mptn is being attacked by [Desecration Demon].\r\n[00:13:54] bparis15 casts [Sprouting Thrinax].\r\n[00:14:04] bparis15 casts [Carnage] targeting mptn.\r\n[00:14:11] mptn discards [Highland Lake].\r\n[00:14:11] mptn discards [Island].\r\n[00:14:14] mptn casts [Perilous Voyage] targeting [Desecration Demon].\r\n[00:14:15] mptn returns [Desecration Demon] to its owner's hand with [Perilous Voyage].\r\n[00:14:17] mptn casts [Perilous Voyage] targeting [Sprouting Thrinax].\r\n[00:14:17] mptn returns [Sprouting Thrinax] to its owner's hand with [Perilous Voyage].\r\n[00:14:20] mptn casts [Incinerate] targeting bparis15.\r\n[00:14:21] mptn puts triggered ability from [Fevered Visions] onto the stack (At the beginning of each player's end step, that player draws a card. If the player is your oppone...).\r\n[00:14:22] bparis15 draws a card with [Fevered Visions]'s ability.\r\n[00:14:23] Turn 9: mptn\r\n[00:14:29] mptn casts [Treasure Cruise].\r\n[00:14:30] mptn draws three cards with [Treasure Cruise].\r\n[00:14:36] mptn casts [Wind Zendikon] targeting [Mountain].\r\n[00:14:40] mptn casts [Burst Lightning] targeting bparis15.\r\n[00:14:44] bparis15 is being attacked by [Mountain].\r\nWinner: mptn\r\nGame 2 Completed.\r\n[00:14:50] mptn draws their next card.\r\n== Game 3 (669738968) ==\r\n[Time] 1554992122\r\n[00:15:22] PDBot has started watching.\r\n[00:15:22] mptn joined the game.\r\n[00:15:35] bparis15 chooses to play first.\r\n[00:15:39] bparis15 begins the game with seven cards in hand.\r\n[00:15:41] [CHAT] mptn: wats\r\n", 'start_time_utc': '1554991323', 'end_time_utc': '1554992141'} Host: logs.pennydreadfulmagic.com Accept-Encoding: gzip Cf-Ipcountry: XX X-Forwarded-For: 35.205.164.196, 172.69.226.79 Cf-Ray: 4c5d93148a9bcd95-CDG X-Forwarded-Proto: https Cf-Visitor: {"scheme":"https"} Content-Type: application/x-www-form-urlencoded Cf-Connecting-Ip: 35.205.164.196 Cdn-Loop: cloudflare X-Forwarded-Host: logs.pennydreadfulmagic.com X-Forwarded-Server: logs.pennydreadfulmagic.com Connection: Keep-Alive Content-Length: 19876

IntegrityError (MySQLdb._exceptions.IntegrityError) (1062, "Duplicate entry '669738968' for key 'PRIMARY'") [SQL: INSERT INTO game (id, match_id, winner_id, log) VALUES (%s, %s, %s, %s)] [parameters: (669738968, 216729253, None, '[Time] 1554992122\n[00:15:22] PDBot has started watching.\n[00:15:22] mptn joined the game.\n[00:15:35] bparis15 chooses to play first.\n[00:15:39] bparis15 begins the game with seven cards in hand.\n[00:15:41] [CHAT] mptn: wats\n')] (Background on this error at: http://sqlalche.me/e/gkpj) Stack Trace: Python traceback File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2309, in call return self.wsgi_app(environ, start_response) File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2295, in wsgi_app response = self.handle_exception(e) File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app response = self.full_dispatch_request() File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request rv = self.handle_user_exception(e) File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception reraise(exc_type, exc_value, tb) File "/home/discord/.local/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise raise value File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request rv = self.dispatch_request() File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request return self.view_functionsrule.endpoint File "./logsite/api.py", line 26, in upload importing.import_log(lines.split('\n'), match_id) File "./logsite/importing.py", line 65, in import_log game.insert_game(game_id, match_id, '\n'.join(game_lines)) File "./logsite/data/game.py", line 28, in insert_game db.commit() File "./logsite/db.py", line 52, in commit return DB.session.commit() File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/scoping.py", line 162, in do return getattr(self.registry(), name)(*args, **kwargs) File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 1026, in commit self.transaction.commit() File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 493, in commit self._prepare_impl() File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 472, in _prepare_impl self.session.flush() File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2451, in flush self._flush(objects) File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2589, in _flush transaction.rollback(_capture_exception=True) File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 68, in exit compat.reraise(exc_type, exc_value, exc_tb) File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 129, in reraise raise value File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2549, in _flush flush_context.execute() File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 422, in execute rec.execute(self) File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 589, in execute uow, File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 245, in save_obj insert, File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 1066, in _emit_insert_statements c = cached_connections[connection].execute(statement, multiparams) File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 988, in execute return meth(self, multiparams, params) File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", line 287, in _execute_on_connection return connection._execute_clauseelement(self, multiparams, params) File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1107, in _execute_clauseelement distilled_params, File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1248, in _execute_context e, statement, parameters, cursor, context File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1466, in _handle_dbapi_exception util.raise_from_cause(sqlalchemy_exception, exc_info) File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 383, in raise_from_cause reraise(type(exception), exception, tb=exc_tb, cause=cause) File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 128, in reraise raise value.with_traceback(tb) File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1244, in _execute_context cursor, statement, parameters, context File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 552, in do_execute cursor.execute(statement, parameters) File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 206, in execute res = self._query(query) File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 312, in _query db.query(q) File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 224, in query _mysql.connection.query(self, query)

Exception_hash: 7fa964c2cac5ea696de5ff51709cb3028e8fd995 — You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or mute the thread.

bakert commented 5 years ago

https://github.com/PennyDreadfulMTG/perf-reports/issues/42833

bakert commented 5 years ago

Not since May 6 but definitely still an issue.

silasary commented 5 years ago

I think this was fixed on the PDBot end

bakert commented 5 years ago

On July 3:

PennyDreadfulMTG/perf-reports#50499

MySQLdb._exceptions.IntegrityError) (1062, "Duplicate entry '219320974' for key 'PRIMARY'")
[SQL: INSERT INTO match (id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)]
[parameters: (219320974, 1, 'pd league', None, None, None, None, None)]
(Background on this error at: http://sqlalche.me/e/gkpj)

Reported on logsite by logged_out

Request Data ```
Request Method: POST
Path: /api/upload?
Cookies: {}
Endpoint: upload
View Args: {}
Person: logged_out
Referrer: None
Request Data: {'match_id': '219320974', 'start_time_utc': '1562162846', 'end_time_utc': '1562163242', 'lines': "PennyDreadful\r\npd league\r\nBuggedCardObserver, LeagueObserver, PennyDreadfulLegality\r\nwandofilho,Rosie_Cant\r\n\r\n== Game 1 (679917600) ==\r\n[Time] 1562162846\r\n[00:07:27] PDBot has started watching.\r\n[00:07:27] wandofilho joined the game.\r\n[00:07:27] Rosie_Cant joined the game.\r\n[League] Deck -Uw Control (2) by wandofilho (53574) vs Salzburg by rosie_cant (53596)\r\n[00:07:30] [CHAT] PDBot: [sD] Good luck in your League match!\r\n[00:07:46] wandofilho chooses to play first.\r\n[00:07:54] wandofilho begins the game with seven cards in hand.\r\n[00:07:57] Rosie_Cant mulligans to six cards.\r\n[00:08:17] Rosie_Cant puts a card on the bottom of their library and begins the game with six cards in hand.\r\n[00:08:17] Turn 1: wandofilho\r\n[00:08:17] wandofilho skips their draw step.\r\n[00:08:21] wandofilho plays [Aether Hub].\r\n[00:08:21] wandofilho puts triggered ability from [Aether Hub] onto the stack (When Aether Hub enters the battlefield, you get {E}.).\r\n[00:08:23] wandofilho gains 1 energy from [Aether Hub]'s ability.\r\n[00:08:25] Turn 1: Rosie_Cant\r\n[00:08:27] Rosie_Cant plays [Wind-Scarred Crag].\r\n[00:08:27] Rosie_Cant puts triggered ability from [Wind-Scarred Crag] onto the stack (When Wind-Scarred Crag enters the battlefield, you gain 1 life.).\r\n[00:08:31] Turn 2: wandofilho\r\n[00:08:32] wandofilho plays [Tectonic Edge].\r\n[00:08:39] Turn 2: Rosie_Cant\r\n[00:08:43] Rosie_Cant casts [Village Messenger].\r\n[00:08:52] wandofilho casts [Censor] targeting [Village Messenger].\r\n[00:08:59] Rosie_Cant plays [Vivid Meadow].\r\n[00:09:04] Turn 3: wandofilho\r\n[00:09:06] wandofilho plays [Sejiri Refuge].\r\n[00:09:06] wandofilho puts triggered ability from [Sejiri Refuge] onto the stack (When Sejiri Refuge enters the battlefield, you gain 1 life.).\r\n[00:09:13] Turn 3: Rosie_Cant\r\n[00:09:30] Rosie_Cant plays [Hanweir Battlements].\r\n[00:09:38] Rosie_Cant casts [Gather the Townsfolk].\r\n[00:09:42] Rosie_Cant's [Gather the Townsfolk] creates two Human tokens.\r\n[00:09:48] Turn 4: wandofilho\r\n[00:09:50] wandofilho plays [Meandering River].\r\n[00:09:58] Turn 4: Rosie_Cant\r\n[00:10:11] wandofilho is being attacked by [Human] token and [Human] token.\r\n[00:10:29] Rosie_Cant casts [Abbot of Keral Keep].\r\n[00:10:43] wandofilho casts [Power Sink] targeting [Abbot of Keral Keep]. (X is 2).\r\n[00:10:53] Turn 5: wandofilho\r\n[00:10:56] wandofilho plays [Tranquil Cove].\r\n[00:10:56] wandofilho puts triggered ability from [Tranquil Cove] onto the stack (When Tranquil Cove enters the battlefield, you gain 1 life.).\r\n[00:11:04] Turn 5: Rosie_Cant\r\n[00:11:13] Rosie_Cant casts [Hanweir Militia Captain].\r\n[00:11:32] wandofilho is being attacked by [Human] token and [Human] token.\r\n[00:11:42] Rosie_Cant plays [Hanweir Battlements].\r\n[00:11:51] wandofilho casts [Glimmer of Genius].\r\n[00:11:58] wandofilho puts 1 card on the bottom of their library and 1 card on top of their library.\r\n[00:11:58] wandofilho draws two cards with [Glimmer of Genius].\r\n[00:11:58] wandofilho gains 2 energy from [Glimmer of Genius]'s ability.\r\n[00:12:01] Turn 6: wandofilho\r\n[00:12:11] wandofilho casts [Planar Outburst].\r\n[00:12:14] Rosie_Cant has conceded from the game.\r\nWinner: wandofilho\r\nGame 1 Completed.\r\n== Game 2 (679918102) ==\r\n[Time] 1562163159\r\n[00:12:40] PDBot has started watching.\r\n[00:12:46] Rosie_Cant chooses to play first.\r\n[00:12:53] Rosie_Cant begins the game with seven cards in hand.\r\n[00:13:05] wandofilho begins the game with seven cards in hand.\r\n[00:13:05] Turn 1: Rosie_Cant\r\n[00:13:05] Rosie_Cant skips their draw step.\r\n[00:13:08] Rosie_Cant plays [Wind-Scarred Crag].\r\n[00:13:08] Rosie_Cant puts triggered ability from [Wind-Scarred Crag] onto the stack (When Wind-Scarred Crag enters the battlefield, you gain 1 life.).\r\n[00:13:11] Turn 1: wandofilho\r\n[00:13:13] wandofilho plays [Sejiri Refuge].\r\n[00:13:13] wandofilho puts triggered ability from [Sejiri Refuge] onto the stack (When Sejiri Refuge enters the battlefield, you gain 1 life.).\r\n[00:13:20] Turn 2: Rosie_Cant\r\n[00:13:24] Rosie_Cant casts [Village Messenger].\r\n[00:13:33] wandofilho is being attacked by [Village Messenger].\r\n[00:13:38] Turn 2: wandofilho\r\n[00:13:43] wandofilho plays [Island].\r\n[00:13:48] wandofilho casts [Oust] targeting [Village Messenger].\r\n[00:13:58] Rosie_Cant has conceded from the game.\r\nWinner: wandofilho\r\nGame 2 Completed.\r\nMatch Winner: wandofilho: 2–0\r\n[00:14:02] Rosie_Cant has left the game.\r\n"}
Host: logs.pennydreadfulmagic.com
Accept-Encoding: gzip
Cf-Ipcountry: XX
X-Forwarded-For: 35.205.164.196, 172.69.226.179
Cf-Ray: 4f0978059d00a885-CDG
X-Forwarded-Proto: https
Cf-Visitor: {"scheme":"https"}
Content-Type: application/x-www-form-urlencoded
Cf-Connecting-Ip: 35.205.164.196
Cdn-Loop: cloudflare
X-Forwarded-Host: logs.pennydreadfulmagic.com
X-Forwarded-Server: logs.pennydreadfulmagic.com
Connection: Keep-Alive
Content-Length: 5701

</details>

--------------------------------------------------------------------------------

<details><summary>

IntegrityError

(MySQLdb._exceptions.IntegrityError) (1062, "Duplicate entry '219320974' for key 'PRIMARY'")

[SQL: INSERT INTO `match` (id, format_id, comment, start_time, end_time, has_unexpected_third_game, is_league, is_tournament) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)]

[parameters: (219320974, 1, 'pd league', None, None, None, None, None)]

(Background on this error at: http://sqlalche.me/e/gkpj)

</summary>

Stack Trace:

```Python traceback

  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2328, in __call__

    return self.wsgi_app(environ, start_response)

  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2314, in wsgi_app

    response = self.handle_exception(e)

  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 2311, in wsgi_app

    response = self.full_dispatch_request()

  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1834, in full_dispatch_request

    rv = self.handle_user_exception(e)

  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1737, in handle_user_exception

    reraise(exc_type, exc_value, tb)

  File "/home/discord/.local/lib/python3.6/site-packages/flask/_compat.py", line 36, in reraise

    raise value

  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1832, in full_dispatch_request

    rv = self.dispatch_request()

  File "/home/discord/.local/lib/python3.6/site-packages/flask/app.py", line 1818, in dispatch_request

    return self.view_functions[rule.endpoint](**req.view_args)

  File "./logsite/api.py", line 27, in upload

    importing.import_log(lines.split('\n'), match_id)

  File "./logsite/importing.py", line 37, in import_log

    local = import_header(lines, match_id)

  File "./logsite/importing.py", line 82, in import_header

    local = match.create_match(match_id, format_name, comment, modules, players)

  File "./logsite/data/match.py", line 69, in create_match

    db.commit()

  File "./logsite/db.py", line 52, in commit

    return DB.session.commit()

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/scoping.py", line 162, in do

    return getattr(self.registry(), name)(*args, **kwargs)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 1027, in commit

    self.transaction.commit()

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 494, in commit

    self._prepare_impl()

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 473, in _prepare_impl

    self.session.flush()

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2459, in flush

    self._flush(objects)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2597, in _flush

    transaction.rollback(_capture_exception=True)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py", line 68, in __exit__

    compat.reraise(exc_type, exc_value, exc_tb)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 154, in reraise

    raise value

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2557, in _flush

    flush_context.execute()

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 422, in execute

    rec.execute(self)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py", line 589, in execute

    uow,

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 245, in save_obj

    insert,

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py", line 1084, in _emit_insert_statements

    c = cached_connections[connection].execute(statement, multiparams)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 988, in execute

    return meth(self, multiparams, params)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", line 287, in _execute_on_connection

    return connection._execute_clauseelement(self, multiparams, params)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1107, in _execute_clauseelement

    distilled_params,

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1248, in _execute_context

    e, statement, parameters, cursor, context

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1466, in _handle_dbapi_exception

    util.raise_from_cause(sqlalchemy_exception, exc_info)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 399, in raise_from_cause

    reraise(type(exception), exception, tb=exc_tb, cause=cause)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/util/compat.py", line 153, in reraise

    raise value.with_traceback(tb)

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py", line 1244, in _execute_context

    cursor, statement, parameters, context

  File "/home/discord/.local/lib/python3.6/site-packages/sqlalchemy/engine/default.py", line 550, in do_execute

    cursor.execute(statement, parameters)

  File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 206, in execute

    res = self._query(query)

  File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/cursors.py", line 312, in _query

    db.query(q)

  File "/home/discord/.local/lib/python3.6/site-packages/MySQLdb/connections.py", line 224, in query

    _mysql.connection.query(self, query)

Exception_hash: bf9b6a7c3a9d09c432a07439bbd164607a44d0a4
bakert commented 4 years ago

Hasn't happened since Jul 3 (4 months). Closing.

bakert commented 4 years ago

Seeing this every few minutes from:

Request Data: {'match_id': '219603564', 'start_time_utc': '1562960739', 'end_time_utc': '1562960739', 'lines': 'PennyDreadful\r\npd test s13\r\n'}

I've tried to mitigate by accepting exactly this input and dropping it on the floor but with no success …