This is a documentation for Board Game Arena: play board games online !

Production issues reporting: Difference between revisions

From Board Game Arena
Jump to navigation Jump to search
(Basic layout)
 
(Add more context)
Line 9: Line 9:


== Syntax errors reporting ==
== Syntax errors reporting ==
This is the simplest reporting tool.  It only reports
This is the simplest reporting tool.  It only reports PHP syntax errors.  When clicking on the button, you will be redirected to a page that lists all game servers and will display any syntax error.  Any of these is a fatal error and should be addressed with a new release.


== Unexpected errors reporting ==
== Unexpected errors reporting ==
Same as the previous tool.  It redirects to another report page that shows recent PHP (backend) errors.  Only an error message with a PHP stack trace is shown for each message.  For instance:
18/05 20:07:17 [error] [TXXX] [A.B.C.D] [XXX/YYY] Error (1213) while processing SQL request: Deadlock found when trying to get lock; try restarting transaction - Request: SELECT global_id, global_value FROM global WHERE 1 
18/05 20:07:17 [error] [TXXXX] [A.B.C.D] [XXX/YYY] Unexpected exception: mysql_deadlock_restart_transaction (BGA service error 1747591637)
#0 /var/tournoi/release/tournoi-250505-1448-gs/www/Bga/GameFramework/Old/APP_DbObject.php(34): Bga\Services\Db->query('...')
#1 /var/tournoi/release/tournoi-250505-1448-gs/www/Bga/GameFramework/TableInfos.php(125): Bga\GameFramework\Old\APP_DbObject::DbQuery('...')
#2 /var/tournoi/release/tournoi-250505-1448-gs/www/Bga/GameFramework/TableInfos.php(91): Bga\GameFramework\TableInfos->getGlobalsFromDB(false)
#3 /var/tournoi/release/tournoi-250505-1448-gs/www/Bga/GameFramework/TableInfos.php(69): Bga\GameFramework\TableInfos->db_load(false)
#4 /var/tournoi/release/tournoi-250505-1448-gs/www/Bga/GameFramework/GameAction.php(80): Bga\GameFramework\TableInfos->get(false)
#5 /var/tournoi/release/tournoi-250505-1448-gs/www/Bga/GameFramework/GameAction.php(31): Bga\GameFramework\GameAction->initGameTableObjects()
#6 /var/tournoi/release/tournoi-250505-1448-gs/vendor/php-di/php-di/src/Definition/Resolver/ObjectCreator.php(129): Bga\GameFramework\GameAction->__construct()
#7 /var/tournoi/release/tournoi-250505-1448-gs/vendor/php-di/php-di/src/Definition/Resolver/ObjectCreator.php(56): DI\Definition\Resolver\ObjectCreator->createInstance(Object(DI\Definition\ObjectDefinition), Array)
#8 /var/tournoi/release/tournoi-250505-1448-gs/vendor/php-di/php-di/src/Definition/Resolver/ResolverDispatcher.php(62): DI\Definition\Resolver\ObjectCreator->resolve(Object(DI\Definition\ObjectDefinition), Array)
#9 /var/tournoi/release/tournoi-250505-1448-gs/vendor/php-di/php-di/src/Container.php(354): DI\Definition\Resolver\ResolverDispatcher->resolve(Object(DI\Definition\ObjectDefinition), Array)
#10 /var/tournoi/release/tournoi-250505-1448-gs/vendor/php-di/php-di/src/Container.php(184): DI\Container->resolveDefinition(Object(DI\Definition\ObjectDefinition), Array)
#11 /var/tournoi/release/tournoi-250505-1448-gs/www/include/webActionCore.inc.php(201): DI\Container->make('...')
#12 /var/tournoi/release/tournoi-250505-1448-gs/www/index.php(262): launchWebAction('...', '...', '...', false, false, NULL, true, false)
#13 {main}
Errors are unformatted and no statistics whatsoever are made.  This tools is pretty raw but very low level without any filtering.


== Backend & frontend issues reporting ==
== Backend & frontend issues reporting ==
This is the next generation reporting tool.  It is based on Sentry, a tool that aggregates any frontend and backend errors encountered by users.  It allows modern statistics and gives more context.
When clicking on this button, you will be redirect to another interface that allows basic Sentry querying.
=== Sentry concepts ===
When an error or a warning is caught, information is sent to Sentry in the form of an event, which is processed.  Sentry then as the following concepts:
* '''Event''': an error or warning that triggered either in the user browser or in one of BGA servers
* '''Issue:''' all events are attached to an issue.  Sentry figures out how to merge then depending on the place the event has taken place in the code.  Hence, false positive could happen
* '''Issue  ID''': a unique value assigned to an issue.
* '''Project:''' a software module.  We currently have two projects that are exposed to the studio developers: ''gameserver-js'' (frontend) and gameserver (''backend'')
* '''Tags:''' metadata associated to an event, like browser version, user ID, etc.  They are used to provide statistics in the issues page.
* '''Release:''' a release is a package name and a version name.  It helps knowing when an issue appears, then narrowing down its cause.  There are two releases set on BGA: mainsite release (our code) and game release (your code)
==== Views ====
===== Issues list view =====
===== Issue detail view =====
===== Events list view =====

Revision as of 11:45, 21 May 2025

BGA implemented several production issues reporting tools:

  • Syntax errors reporting
  • Unexpected errors reporting
  • Backend & frontend issues reporting

All of these are available at the bottom of your game studio page. Access your game studio page (for instance: https://studio.boardgamearena.com/studiogame?game=xxx) and scroll to the "Errors in production" block:

Error reporting.png

Syntax errors reporting

This is the simplest reporting tool. It only reports PHP syntax errors. When clicking on the button, you will be redirected to a page that lists all game servers and will display any syntax error. Any of these is a fatal error and should be addressed with a new release.

Unexpected errors reporting

Same as the previous tool. It redirects to another report page that shows recent PHP (backend) errors. Only an error message with a PHP stack trace is shown for each message. For instance:

18/05 20:07:17 [error] [TXXX] [A.B.C.D] [XXX/YYY] Error (1213) while processing SQL request: Deadlock found when trying to get lock; try restarting transaction - Request: SELECT global_id, global_value FROM global WHERE 1   
18/05 20:07:17 [error] [TXXXX] [A.B.C.D] [XXX/YYY] Unexpected exception: mysql_deadlock_restart_transaction (BGA service error 1747591637)
#0 /var/tournoi/release/tournoi-250505-1448-gs/www/Bga/GameFramework/Old/APP_DbObject.php(34): Bga\Services\Db->query('...')
#1 /var/tournoi/release/tournoi-250505-1448-gs/www/Bga/GameFramework/TableInfos.php(125): Bga\GameFramework\Old\APP_DbObject::DbQuery('...')
#2 /var/tournoi/release/tournoi-250505-1448-gs/www/Bga/GameFramework/TableInfos.php(91): Bga\GameFramework\TableInfos->getGlobalsFromDB(false)
#3 /var/tournoi/release/tournoi-250505-1448-gs/www/Bga/GameFramework/TableInfos.php(69): Bga\GameFramework\TableInfos->db_load(false)
#4 /var/tournoi/release/tournoi-250505-1448-gs/www/Bga/GameFramework/GameAction.php(80): Bga\GameFramework\TableInfos->get(false)
#5 /var/tournoi/release/tournoi-250505-1448-gs/www/Bga/GameFramework/GameAction.php(31): Bga\GameFramework\GameAction->initGameTableObjects()
#6 /var/tournoi/release/tournoi-250505-1448-gs/vendor/php-di/php-di/src/Definition/Resolver/ObjectCreator.php(129): Bga\GameFramework\GameAction->__construct()
#7 /var/tournoi/release/tournoi-250505-1448-gs/vendor/php-di/php-di/src/Definition/Resolver/ObjectCreator.php(56): DI\Definition\Resolver\ObjectCreator->createInstance(Object(DI\Definition\ObjectDefinition), Array)
#8 /var/tournoi/release/tournoi-250505-1448-gs/vendor/php-di/php-di/src/Definition/Resolver/ResolverDispatcher.php(62): DI\Definition\Resolver\ObjectCreator->resolve(Object(DI\Definition\ObjectDefinition), Array)
#9 /var/tournoi/release/tournoi-250505-1448-gs/vendor/php-di/php-di/src/Container.php(354): DI\Definition\Resolver\ResolverDispatcher->resolve(Object(DI\Definition\ObjectDefinition), Array)
#10 /var/tournoi/release/tournoi-250505-1448-gs/vendor/php-di/php-di/src/Container.php(184): DI\Container->resolveDefinition(Object(DI\Definition\ObjectDefinition), Array)
#11 /var/tournoi/release/tournoi-250505-1448-gs/www/include/webActionCore.inc.php(201): DI\Container->make('...')
#12 /var/tournoi/release/tournoi-250505-1448-gs/www/index.php(262): launchWebAction('...', '...', '...', false, false, NULL, true, false)
#13 {main}

Errors are unformatted and no statistics whatsoever are made. This tools is pretty raw but very low level without any filtering.

Backend & frontend issues reporting

This is the next generation reporting tool. It is based on Sentry, a tool that aggregates any frontend and backend errors encountered by users. It allows modern statistics and gives more context.

When clicking on this button, you will be redirect to another interface that allows basic Sentry querying.

Sentry concepts

When an error or a warning is caught, information is sent to Sentry in the form of an event, which is processed. Sentry then as the following concepts:

  • Event: an error or warning that triggered either in the user browser or in one of BGA servers
  • Issue: all events are attached to an issue. Sentry figures out how to merge then depending on the place the event has taken place in the code. Hence, false positive could happen
  • Issue ID: a unique value assigned to an issue.
  • Project: a software module. We currently have two projects that are exposed to the studio developers: gameserver-js (frontend) and gameserver (backend)
  • Tags: metadata associated to an event, like browser version, user ID, etc. They are used to provide statistics in the issues page.
  • Release: a release is a package name and a version name. It helps knowing when an issue appears, then narrowing down its cause. There are two releases set on BGA: mainsite release (our code) and game release (your code)

Views

Issues list view
Issue detail view
Events list view