Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bug: Session Token Error #2021

Closed
Bovive opened this issue Jan 19, 2025 · 11 comments · Fixed by #2131 or #2282
Closed

bug: Session Token Error #2021

Bovive opened this issue Jan 19, 2025 · 11 comments · Fixed by #2131 or #2282
Assignees
Labels
bug Something isn't working

Comments

@Bovive
Copy link

Bovive commented Jan 19, 2025

Describe the bug

After running for a while I received a 500 error when trying to access via browser. The logs gave this error:

E: Read more at https://errors.authjs.dev#adaptererror
    at A.<computed> (.next/server/chunks/7320.js:124:53402)
    at async iI (.next/server/chunks/7320.js:491:46067)
    at async ib (.next/server/chunks/7320.js:491:51866)
    at async iR (.next/server/chunks/7320.js:491:56408)
    at async ix (.next/server/chunks/7320.js:491:59978) {
  type: 'AdapterError',
  kind: 'error',
  [cause]: [Object]
}
k: Read more at https://errors.authjs.dev#sessiontokenerror
    at iI (.next/server/chunks/7320.js:491:46589)
    at async ib (.next/server/chunks/7320.js:491:51866)
    at async iR (.next/server/chunks/7320.js:491:56408)
    at async ix (.next/server/chunks/7320.js:491:59978) {
  type: 'SessionTokenError',
  kind: 'error',
  [cause]: [Object]
}
2025-01-19T16:18:44.753Z info: tRPC request from server-fetch by user 'undefined (undefined)'
2025-01-19T16:18:44.753Z error: tRPC Error with query on 'serverSettings.getCulture': (INTERNAL_SERVER_ERROR) - Can't add new command when connection is in closed state
Error [TRPCClientError]: Can't add new command when connection is in closed state
    at tn.from (.next/server/src/middleware.js:16:3510)
    at <unknown> (.next/server/src/middleware.js:16:33556) {
  cause: undefined,
  shape: [Object],
  data: [Object],
  meta: [Object]
}

Additional console output after recent update:

Error [TRPCClientError]: Can't add new command when connection is in closed state
    at tn.from (.next/server/src/middleware.js:16:3510)
    at <unknown> (.next/server/src/middleware.js:16:33556) {
  cause: undefined,
  shape: [Object],
  data: [Object],
  meta: [Object]
}
      at E.query (.next/server/chunks/3054.js:164:51965)
      at I.execute (.next/server/chunks/3054.js:170:27462)
      at T.execute (.next/server/chunks/3054.js:164:114579)
      at T.then (.next/server/chunks/3054.js:170:55294)
      at getSessionAndUser (.next/server/chunks/4687.js:121:33911)
      at A.<computed> (.next/server/chunks/4687.js:122:57345)
      at nK (.next/server/chunks/4687.js:489:49414)
      at n8 (.next/server/chunks/4687.js:489:54893)
      at async oe (.next/server/chunks/4687.js:489:57629)
      at async ou (.next/server/chunks/4687.js:489:60235) {
    code: undefined,
    errno: undefined,
    sql: undefined,
    sqlState: undefined,
    sqlMessage: undefined
  }
}
2025-01-23T16:49:51.651Z error: v: Read more at https://errors.authjs.dev#sessiontokenerror
  at nK (/app/apps/nextjs/.next/server/chunks/4687.js:489:49930)
  at async n8 (/app/apps/nextjs/.next/server/chunks/4687.js:489:54887)
  at async oe (/app/apps/nextjs/.next/server/chunks/4687.js:489:57629)
  at async ou (/app/apps/nextjs/.next/server/chunks/4687.js:489:60235)
  at async tr.do (/app/node_modules/next/dist/compiled/next-server/app-route.runtime.prod.js:18:17582)
  at async tr.handle (/app/node_modules/next/dist/compiled/next-server/app-route.runtime.prod.js:18:22212)
  at async doRender (/app/node_modules/next/dist/server/base-server.js:1452:42)
  at async responseGenerator (/app/node_modules/next/dist/server/base-server.js:1822:28)
  at async NextNodeServer.renderToResponseWithComponentsImpl (/app/node_modules/next/dist/server/base-server.js:1832:28)
  at async NextNodeServer.renderPageComponent (/app/node_modules/next/dist/server/base-server.js:2259:24)
The above error also had these properties on it:
{
  cause: {
    err: Error: Can't add new command when connection is in closed state
        at E.query (.next/server/chunks/3054.js:164:51965)
        at I.execute (.next/server/chunks/3054.js:170:27462)
        at T.execute (.next/server/chunks/3054.js:164:114579)
        at T.then (.next/server/chunks/3054.js:170:55294)
        at getSessionAndUser (.next/server/chunks/4687.js:121:33911)
        at A.<computed> (.next/server/chunks/4687.js:122:57345)
        at nK (.next/server/chunks/4687.js:489:49414)
        at n8 (.next/server/chunks/4687.js:489:54893)
        at async oe (.next/server/chunks/4687.js:489:57629)
        at async ou (.next/server/chunks/4687.js:489:60235) {
      code: undefined,
      errno: undefined,
      sql: undefined,
      sqlState: undefined,
      sqlMessage: undefined
    }
  },
  name: 'v',
  type: 'SessionTokenError',
  kind: 'error'
}
2025-01-23T16:49:51.651Z error: [object Object]
The above error also had these properties on it:
{
  err: Error: Can't add new command when connection is in closed state
      at E.query (.next/server/chunks/3054.js:164:51965)
      at I.execute (.next/server/chunks/3054.js:170:27462)
      at T.execute (.next/server/chunks/3054.js:164:114579)
      at T.then (.next/server/chunks/3054.js:170:55294)
      at getSessionAndUser (.next/server/chunks/4687.js:121:33911)
      at A.<computed> (.next/server/chunks/4687.js:122:57345)
      at nK (.next/server/chunks/4687.js:489:49414)
      at n8 (.next/server/chunks/4687.js:489:54893)
      at async oe (.next/server/chunks/4687.js:489:57629)
      at async ou (.next/server/chunks/4687.js:489:60235) {
    code: undefined,
    errno: undefined,
    sql: undefined,
    sqlState: undefined,
    sqlMessage: undefined
  }
}
2025-01-23T16:49:51.651Z info: tRPC request from server-fetch by user 'undefined (undefined)'
2025-01-23T16:49:51.651Z error: tRPC Error with query on 'serverSettings.getCulture': (INTERNAL_SERVER_ERROR) - Can't add new command when connection is in closed state
Error: Can't add new command when connection is in closed state
    at E.query (/app/apps/nextjs/.next/server/chunks/3054.js:164:51965)
    at I.execute (/app/apps/nextjs/.next/server/chunks/3054.js:170:27462)
    at QueryPromise.execute (/app/apps/nextjs/.next/server/chunks/3054.js:164:121690)
    at QueryPromise.then (/app/apps/nextjs/.next/server/chunks/3054.js:170:55294)
Error: Can't add new command when connection is in closed state

Steps to reproduce

  1. Leave container running for about a day.
  2. Error appears.

Impact

Restarting the container resolved the issue.

Additional information

v1.0.1

Version

Other (describe in "additional information")

Installation method

Unraid Apps

Browser

Firefox

@manuel-rw
Copy link
Member

Sounds like the WS disconnected briefly or is permanently disconnected. @Meierschlumpf can you take a look?

@Bovive
Copy link
Author

Bovive commented Jan 23, 2025

I added some additional logs in case it is helpful. It occurs several times a day.

@Meierschlumpf
Copy link
Member

Maybe this can be fixed with the following code:

// Enable heartbeat messages to keep connection open (disabled by default)
  keepAlive: {
    enabled: true,
    // server ping message interval in milliseconds
    pingMs: 30000,
    // connection is terminated if pong message is not received in this many milliseconds
    pongWaitMs: 5000,
  },

@Meierschlumpf Meierschlumpf self-assigned this Jan 26, 2025
@Meierschlumpf Meierschlumpf moved this from Todo to In Progress in Homarr prioritized backlog Jan 26, 2025
@Meierschlumpf Meierschlumpf moved this from In Progress to In Review in Homarr prioritized backlog Jan 26, 2025
@github-project-automation github-project-automation bot moved this from In Review to Done in Homarr prioritized backlog Jan 26, 2025
@Bovive
Copy link
Author

Bovive commented Jan 30, 2025

Unfortunately, I received the same error on 1.3.1.

@homarr-labs homarr-labs deleted a comment from Bovive Jan 30, 2025
@Meierschlumpf Meierschlumpf reopened this Jan 30, 2025
@Meierschlumpf
Copy link
Member

@Bovive
Can you share your docker compose file (without any secrets, set them as REDACTED or something similar)

@Bovive
Copy link
Author

Bovive commented Jan 30, 2025

No problem, but I use Unraid. Here is my XML:

<?xml version="1.0"?>
<Container version="2">
  <Name>homarr</Name>
  <Repository>ghcr.io/homarr-labs/homarr:latest</Repository>
  <Registry>https://github.com/homarr-labs/homarr/pkgs/container/homarr</Registry>
  <Network>bridge</Network>
  <MyIP/>
  <Shell>sh</Shell>
  <Privileged>false</Privileged>
  <Support>https://github.com/homarr-labs/homarr/issues?q=is%3Aissue+is%3Aopen</Support>
  <Project>https://homarr.dev</Project>
  <Overview>DESCRIPTION&#xD;
    A sleek, modern dashboard that puts all of your apps and services at your fingertips.&#xD;
    Control everything in one convenient location.&#xD;
    Seamlessly integrates with the apps you've added, providing you with valuable information.&#xD;
    &#xD;
    Live demo:&#xD;
    https://demo.homarr.dev&#xD;
    &#xD;
    NOTES&#xD;
    &#x2022; We release using semantic releases (https://semver.org/).&#xD;
    Consult changelog before updating to major versions.&#xD;
    The available tags to be used for this image, are: 'latest' (recommended) and&#xD;
    'dev'. Fixed tags (e.g. 1.2.6) are also available.</Overview>
  <Category>Tools:Utilities Network:Other</Category>
  <WebUI>http://[IP]:[PORT:7575]/</WebUI>
  <TemplateURL>https://raw.githubusercontent.com/manuel-rw/unraid-templates/master/templates/homarr/homarr.xml</TemplateURL>
  <Icon>https://raw.githubusercontent.com/manuel-rw/unraid-templates/master/templates/homarr/icon.png</Icon>
  <ExtraParams/>
  <PostArgs/>
  <CPUset/>
  <DateInstalled>1737228219</DateInstalled>
  <DonateText>Like this template? Please consider to donate to our project, so we can keep working    on it:</DonateText>
  <DonateLink>https://opencollective.com/homarr</DonateLink>
  <Requires/>
  <Config Name="WebUI" Target="7575" Default="" Mode="tcp" Description="Homarr is running on port 7575 inside the container. Choose the external port for the container. Access Homarr using the external port or forward requests using a reverse proxy." Type="Port" Display="always" Required="false" Mask="false">7575</Config>
  <Config Name="Storage" Target="/appdata" Default="" Mode="rw" Description="Homarr will write application data into a database and the filesystem. This mount is required to persist data when the container is re-created." Type="Path" Display="always" Required="true" Mask="false">/mnt/user/appdata/homarr</Config>
  <Config Name="Secret Encryption Key" Target="SECRET_ENCRYPTION_KEY" Default="" Mode="" Description="Homarr needs API keys, usernames, passwords and other confidential data to access data in your integrations. To safely store this data, we use AES-256-CBC, which prevents third parties from extracting these credentials. For this, you must provide a randomly generated encryption key. Open a shell and copy the output of 'openssl rand -hex 32' to this field." Type="Variable" Display="always" Required="true" Mask="true">REDACTED</Config>
  <Config Name="Docker Socket" Target="/var/run/docker.sock" Default="" Mode="ro" Description="Gives Homarr the ability to restart, stop, start, refresh and remove containers as well as add them to the dashboard. Set to read-only actions by default - can be a potential security risk." Type="Path" Display="always" Required="false" Mask="false">/var/run/docker.sock</Config>
  <Config Name="Docker TCP Hosts" Target="DOCKER_HOSTNAMES" Default="" Mode="" Description="Alternative to mounting via path. Comma separated list of hostnames to connect to. Example: localhost,docker.example.com" Type="Variable" Display="always" Required="false" Mask="false"/>
  <Config Name="Docker TCP Host Ports" Target="DOCKER_PORTS" Default="" Mode="" Description="Alternative to mounting via path. Comma separated list of ports to connect to. Must be the same length as DOCKER_HOSTNAMES. Example: 2375,2376" Type="Variable" Display="always" Required="false" Mask="false"/>
  <Config Name="Authentication: Single Sign on authentication providers" Target="AUTH_PROVIDERS" Default="" Mode="" Description="Select Which provider to use between credentials, ldap and oidc. Multiple providers can be enabled with by separating them with commas (ex. 'AUTH_PROVIDERS=credentials,oidc'). It is highly recommended to just enable one provider." Type="Variable" Display="always" Required="false" Mask="false">credentials</Config>
  <Config Name="Authentication: Single Sign on logout redirect URL" Target="AUTH_LOGOUT_REDIRECT_URL" Default="" Mode="" Description="URL to redirect to after clicking logging out. Can be left empty in most cases." Type="{5}" Display="always" Required="false" Mask="false"/>
  <Config Name="Authentication: Single Sign on session expiry time" Target="AUTH_SESSION_EXPIRY_TIME" Default="30d" Mode="" Description="Time for the session to time out. Can be set as pure number, which will automatically be used in seconds, or followed by s, m, h or d for seconds, minutes, hours or days. (ex: '30m')" Type="{5}" Display="always" Required="false" Mask="false">30d</Config>
  <Config Name="Authentication: LDAP server URI" Target="AUTH_LDAP_URI" Default="" Mode="" Description="URI of your LDAP server. See https://homarr.dev/docs/advanced/single-sign-on/ for more information." Type="{5}" Display="always" Required="false" Mask="false"/>
  <Config Name="Authentication: Base DN of your LDAP server" Target="AUTH_LDAP_BASE" Default="" Mode="" Description="Base DN (aka. distinguished name) of your LDAP server. See https://homarr.dev/docs/advanced/single-sign-on/ for more information." Type="{5}" Display="always" Required="false" Mask="false"/>
  <Config Name="Authentication: LDAP server bind DN" Target="AUTH_LDAP_BIND_DN" Default="" Mode="" Description="User used for finding users and groups. See https://homarr.dev/docs/advanced/single-sign-on/ for more information." Type="{5}" Display="always" Required="false" Mask="false"/>
  <Config Name="Authentication: LDAP server bind password" Target="AUTH_LDAP_BIND_PASSWORD" Default="" Mode="" Description="Password for bind user. See https://homarr.dev/docs/advanced/single-sign-on/ for more information." Type="{5}" Display="always" Required="false" Mask="true"/>
  <Config Name="Authentication: LDAP username attribute" Target="AUTH_LDAP_USERNAME_ATTRIBUTE" Default="" Mode="" Description="Attribute used for username. See https://homarr.dev/docs/advanced/single-sign-on/ for more information." Type="{5}" Display="always" Required="false" Mask="false"/>
  <Config Name="Authentication: LDAP mail attribute" Target="AUTH_LDAP_USER_MAIL_ATTRIBUTE" Default="" Mode="" Description="Attribute used for mail field. See https://homarr.dev/docs/advanced/single-sign-on/ for more information." Type="{5}" Display="always" Required="false" Mask="false"/>
  <Config Name="Authentication: LDAP group class" Target="AUTH_LDAP_GROUP_CLASS" Default="" Mode="" Description="Class used for querying groups. See https://homarr.dev/docs/advanced/single-sign-on/ for more information." Type="{5}" Display="always" Required="false" Mask="false"/>
  <Config Name="Authentication: LDAP group member attribute" Target="AUTH_LDAP_GROUP_MEMBER_ATTRIBUTE" Default="" Mode="" Description="Attribute used for querying group member. See https://homarr.dev/docs/advanced/single-sign-on/ for more information." Type="{5}" Display="always" Required="false" Mask="false"/>
  <Config Name="Authentication: LDAP group member user attribute" Target="AUTH_LDAP_GROUP_MEMBER_USER_ATTRIBUTE" Default="" Mode="" Description="User attribute used for comparing with group member. See https://homarr.dev/docs/advanced/single-sign-on/ for more information." Type="{5}" Display="always" Required="false" Mask="false"/>
  <Config Name="Authentication: LDAP search scope" Target="AUTH_LDAP_SEARCH_SCOPE" Default="" Mode="" Description="Search scopes between base, one and sub. See https://homarr.dev/docs/advanced/single-sign-on/ for more information." Type="{5}" Display="always" Required="false" Mask="false"/>
  <Config Name="Authentication: LDAP username extra filter arguments" Target="AUTH_LDAP_USERNAME_FILTER_EXTRA_ARG" Default="" Mode="" Description="Extra arguments for user search filter (and based). See https://homarr.dev/docs/advanced/single-sign-on/ for more information." Type="{5}" Display="always" Required="false" Mask="false"/>
  <Config Name="Authentication: LDAP group extra filter arguments" Target="AUTH_LDAP_GROUP_FILTER_EXTRA_ARG" Default="" Mode="" Description="Extra arguments for user's groups search filter (and based). See https://homarr.dev/docs/advanced/single-sign-on/ for more information." Type="{5}" Display="always" Required="false" Mask="false"/>
  <Config Name="Authentication: OIDC issuer URI" Target="AUTH_OIDC_ISSUER" Default="" Mode="" Description="Issuer URI of OIDC provider without trailing slash (/). See https://homarr.dev/docs/advanced/single-sign-on/ for more information." Type="{5}" Display="always" Required="false" Mask="false"/>
  <Config Name="Authentication: OIDC client ID" Target="AUTH_OIDC_CLIENT_ID" Default="" Mode="" Description="ID of OIDC client (application). See https://homarr.dev/docs/advanced/single-sign-on/ for more information." Type="{5}" Display="always" Required="false" Mask="false"/>
  <Config Name="Authentication: OIDC client secret" Target="AUTH_OIDC_CLIENT_SECRET" Default="" Mode="" Description="Secret of OIDC client (application). See https://homarr.dev/docs/advanced/single-sign-on/ for more information." Type="{5}" Display="always" Required="false" Mask="true"/>
  <Config Name="Authentication: OIDC client name" Target="AUTH_OIDC_CLIENT_NAME" Default="" Mode="" Description="Display name of provider (in login screen). See https://homarr.dev/docs/advanced/single-sign-on/ for more information." Type="{5}" Display="always" Required="false" Mask="false"/>
  <Config Name="Authentication: OIDC auto login" Target="AUTH_OIDC_AUTO_LOGIN" Default="" Mode="" Description="Automatically redirect to OIDC login. See https://homarr.dev/docs/advanced/single-sign-on/ for more information." Type="{5}" Display="always" Required="false" Mask="false"/>
  <Config Name="Authentication: OIDC scope overwrite" Target="AUTH_OIDC_SCOPE_OVERWRITE" Default="" Mode="" Description="Overwrite default scopes (openid, profile, email). See https://homarr.dev/docs/advanced/single-sign-on/ for more information." Type="{5}" Display="always" Required="false" Mask="false"/>
  <Config Name="Authentication: Groups attribute" Target="AUTH_OIDC_GROUPS_ATTRIBUTE" Default="" Mode="" Description="Attribute used for groups (roles) claim. See https://homarr.dev/docs/advanced/single-sign-on/ for more information." Type="{5}" Display="always" Required="false" Mask="false"/>
  <Config Name="Authentication: Name attribute" Target="AUTH_OIDC_NAME_ATTRIBUTE_OVERWRITE" Default="" Mode="" Description="Attribute used for name (preferred_username or name) claim. See https://homarr.dev/docs/advanced/single-sign-on/ for more information." Type="{5}" Display="always" Required="false" Mask="false"/>
  <Config Name="Database: Driver" Target="DB_DRIVER" Default="better-sqlite3|mysql2" Mode="" Description="Database driver to use. Currently better-sqlite3 is used for sqlite and mysql2 for mysql. better-sqlite3 is easier to use and requires to additional containers but may not scale as well. Default is 'better-sqlite3'." Type="Variable" Display="always" Required="false" Mask="false">mysql2</Config>
  <Config Name="Database: Dialect" Target="DB_DIALECT" Default="sqlite|mysql" Mode="" Description="Database dialect to use. Either choose 'sqlite' or 'mysql'. Default is 'sqlite'" Type="Variable" Display="always" Required="false" Mask="false">mysql</Config>
  <Config Name="Database: Hostname" Target="DB_HOST" Default="" Mode="" Description="Database host to connect to." Type="{5}" Display="always" Required="false" Mask="false">REDACTED</Config>
  <Config Name="Database: Port" Target="DB_PORT" Default="" Mode="" Description="Database port to connect to." Type="{5}" Display="always" Required="false" Mask="false">REDACTED</Config>
  <Config Name="Database: Database Name" Target="DB_NAME" Default="" Mode="" Description="Database name to connect to." Type="{5}" Display="always" Required="false" Mask="false">REDACTED</Config>
  <Config Name="Database: User" Target="DB_USER" Default="" Mode="" Description="Database user to connect with." Type="{5}" Display="always" Required="false" Mask="false">REDACTED</Config>
  <Config Name="Database: Password" Target="DB_PASSWORD" Default="" Mode="" Description="Database password to connect with." Type="{5}" Display="always" Required="false" Mask="true">REDACTED</Config>
  <Config Name="DB URL" Target="DB_URL" Default="" Mode="" Description="" Type="Variable" Display="always" Required="false" Mask="false">REDACTED/homarr</Config>
  <Config Name="Images" Target="/imgs" Default="" Mode="rw" Description="" Type="Path" Display="always" Required="false" Mask="false">/mnt/user/appdata/homarr/imgs/</Config>
  <Config Name="Disable automatic database migrations" Target="DB_MIGRATIONS_DISABLED" Default="false|true" Mode="" Description="Disable any automatic database migrations. Can be useful, when you manually migrate your database or if you want to restore data. Only set this to true if you know what you're doing!" Type="{5}" Display="advanced" Required="true" Mask="false">false</Config>
  <Config Name="User ID" Target="PUID" Default="" Mode="" Description="By default, the container is running as root and the application is running as a lower user. Using this variable, you can override the container user - this comes at the cost of some additional complexity. See https://homarr.dev/docs/advanced/running-as-different-user/. Only set this if you know what you're doing!" Type="{5}" Display="advanced" Required="true" Mask="false">99</Config>
  <Config Name="Group ID" Target="PGID" Default="" Mode="" Description="By default, the container is running as root and the application is running as a lower user. Using this variable, you can override the container group - this comes at the cost of some additional complexity. See https://homarr.dev/docs/advanced/running-as-different-user/. Only set this if you know what you're doing!" Type="{5}" Display="advanced" Required="true" Mask="false">100</Config>
  <TailscaleStateDir/>
</Container>

@Meierschlumpf
Copy link
Member

Okay as far as I can tell it's an error that occurs when the mysql connection is closed then. Can you try if the image mysql-keep-alive (available in about 25 minutes) fixes that issue?

@Bovive
Copy link
Author

Bovive commented Jan 30, 2025

Unfortunately still the same error with mysql-keep-alive. I am able to reproduce it by restarting the mysql container.

@zw900
Copy link

zw900 commented Feb 8, 2025

The error on 1.4.0
Judging from your log, the key error time is:

2025-02-08T00:45:14.356Z
The following error occurred at this point in time:

Error: Can't add new command when connection is in closed state
Description The database connection is closed, but the application still tries to execute the SQL query.

@Meierschlumpf
Copy link
Member

Hey @Bovive can you try the image tag fix-mysql-connection-closed once it is published in about 25 minutes? I tried it out locally and was able to only see the connection closed error between stopping and starting the mysql container and after that it just continued as nothing happened

@Meierschlumpf Meierschlumpf moved this from Todo to In Progress in Homarr prioritized backlog Feb 9, 2025
@Meierschlumpf Meierschlumpf moved this from In Progress to In Review in Homarr prioritized backlog Feb 9, 2025
@Bovive
Copy link
Author

Bovive commented Feb 9, 2025

Hey @Bovive can you try the image tag fix-mysql-connection-closed once it is published in about 25 minutes? I tried it out locally and was able to only see the connection closed error between stopping and starting the mysql container and after that it just continued as nothing happened

That appears to have fixed it. Restarting the mysql container works as you described. Thanks for your help!

@github-project-automation github-project-automation bot moved this from In Review to Done in Homarr prioritized backlog Feb 13, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
Status: Done
4 participants