CCVars.Database.cs 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. using Robust.Shared.Configuration;
  2. namespace Content.Shared.CCVar;
  3. public sealed partial class CCVars
  4. {
  5. #if DEBUG
  6. private const int DefaultSqliteDelay = 1;
  7. #else
  8. private const int DefaultSqliteDelay = 0;
  9. #endif
  10. public static readonly CVarDef<string> DatabaseEngine =
  11. CVarDef.Create("database.engine", "sqlite", CVar.SERVERONLY);
  12. public static readonly CVarDef<string> DatabaseSqliteDbPath =
  13. CVarDef.Create("database.sqlite_dbpath", "preferences.db", CVar.SERVERONLY);
  14. /// <summary>
  15. /// Milliseconds to asynchronously delay all SQLite database acquisitions with.
  16. /// </summary>
  17. /// <remarks>
  18. /// Defaults to 1 on DEBUG, 0 on RELEASE.
  19. /// This is intended to help catch .Result deadlock bugs that only happen on postgres
  20. /// (because SQLite is not actually asynchronous normally)
  21. /// </remarks>
  22. public static readonly CVarDef<int> DatabaseSqliteDelay =
  23. CVarDef.Create("database.sqlite_delay", DefaultSqliteDelay, CVar.SERVERONLY);
  24. /// <summary>
  25. /// Amount of concurrent SQLite database operations.
  26. /// </summary>
  27. /// <remarks>
  28. /// Note that SQLite is not a properly asynchronous database and also has limited read/write concurrency.
  29. /// Increasing this number may allow more concurrent reads, but it probably won't matter much.
  30. /// SQLite operations are normally ran on the thread pool, which may cause thread pool starvation if the concurrency is too high.
  31. /// </remarks>
  32. public static readonly CVarDef<int> DatabaseSqliteConcurrency =
  33. CVarDef.Create("database.sqlite_concurrency", 3, CVar.SERVERONLY);
  34. public static readonly CVarDef<string> DatabasePgHost =
  35. CVarDef.Create("database.pg_host", "localhost", CVar.SERVERONLY);
  36. public static readonly CVarDef<int> DatabasePgPort =
  37. CVarDef.Create("database.pg_port", 5432, CVar.SERVERONLY);
  38. public static readonly CVarDef<string> DatabasePgDatabase =
  39. CVarDef.Create("database.pg_database", "ss14", CVar.SERVERONLY);
  40. public static readonly CVarDef<string> DatabasePgUsername =
  41. CVarDef.Create("database.pg_username", "postgres", CVar.SERVERONLY);
  42. public static readonly CVarDef<string> DatabasePgPassword =
  43. CVarDef.Create("database.pg_password", "", CVar.SERVERONLY | CVar.CONFIDENTIAL);
  44. /// <summary>
  45. /// Max amount of concurrent Postgres database operations.
  46. /// </summary>
  47. public static readonly CVarDef<int> DatabasePgConcurrency =
  48. CVarDef.Create("database.pg_concurrency", 8, CVar.SERVERONLY);
  49. /// <summary>
  50. /// Milliseconds to asynchronously delay all PostgreSQL database operations with.
  51. /// </summary>
  52. /// <remarks>
  53. /// This is intended for performance testing. It works different from <see cref="DatabaseSqliteDelay"/>,
  54. /// as the lag is applied after acquiring the database lock.
  55. /// </remarks>
  56. public static readonly CVarDef<int> DatabasePgFakeLag =
  57. CVarDef.Create("database.pg_fake_lag", 0, CVar.SERVERONLY);
  58. /// <summary>
  59. /// Basically only exists for integration tests to avoid race conditions.
  60. /// </summary>
  61. public static readonly CVarDef<bool> DatabaseSynchronous =
  62. CVarDef.Create("database.sync", false, CVar.SERVERONLY);
  63. }