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

[riot.im/app] Cannot login #7769

Closed
andreygursky opened this issue Dec 2, 2018 · 51 comments
Closed

[riot.im/app] Cannot login #7769

andreygursky opened this issue Dec 2, 2018 · 51 comments
Assignees
Labels
A-Storage Storage layer of the app, including IndexedDB, local storage, etc. P1 S-Major Severely degrades major functionality or product features, with no satisfactory workaround T-Defect

Comments

@andreygursky
Copy link

Description

I cannot login anymore.

Steps to reproduce

I do not actively use matrix/riot (because e2e is still not yet enabled by default, which is not a big problem for me, but could be a problem for my communication partners). Since some time I noticed a spinning circle right after opening riot.im/app, which doesn't go away but didn't consider this as a critical issue. I use riot for audio calls (they are implemented incredibly good! with 64 kbit/s bandwidth connection a once established call sounds very good and doesn't break even for 2 hours). Now I needed to perform a call and it failed. I logged out and that's it. It is not possible to login anymore. [offtopic]Tried meet.jit.si. Calls break every 5 minutes and it takes up to 4 minutes to establish it again, thus it is not a workaround (considering only open source)[/offtopic]

There are numerous errors shown in developer console:

Failed to open log database: AbortError
Failed to initialise rageshake: Error: Failed to open log database: AbortError
GET https://riot.im/app/config.riot.im.json 404
Unhandled rejection TypeError: Cannot read property 'name' of undefined

Details:
riot.im-1543786314065-for-upload.log

Version information

  • Platform: web (in-browser)

For the web app:

  • Browser: Chromium 70.0.3538.102-1
  • OS: GNU/Linux Debian Buster testing
  • URL: riot.im/app
@lampholder lampholder added T-Defect P1 S-Major Severely degrades major functionality or product features, with no satisfactory workaround labels Dec 4, 2018
@bwindels
Copy link
Contributor

bwindels commented Dec 4, 2018

Quick investigation:
Indexeddb seems unhappy, throwing AbortError, which we don't really anticipate. This is the error you get when calling abort() on a transaction, but we don't do that anywhere for the log database? And this is the error we get when calling indexedDb.open(...) ...

Unhandled rejection TypeError: Cannot read property 'name' of undefined    at e.<anonymous> (https://riot.im/app/bundles/8a633eac616121340fa1/bundle.js:1:65670)    at E

This seems to correspond to MatrixClientPeg.js:121, not sure what that's about. Potentially related to Handle crypto db version upgrade ?

@bwindels
Copy link
Contributor

bwindels commented Dec 4, 2018

@andreygursky Could you please try to reproduce the problem on https://riot.im/develop and if you do hit the problem again, hit the "Submit debug logs" button at the bottom of the settings page. Thanks!

Also, are you using incognito mode or do you have any extensions installed that could tamper with indexeddb, like any of these...?

@andreygursky
Copy link
Author

Chromium is without extensions and normal mode.

I've tried /develop. On every page reload there are the same errors:

Using WebAssembly Olm
bundle.js:sourcemap:130280 Failed to open log database: AbortError
bundle.js:sourcemap:130280 Failed to initialise rageshake: Error: Failed to open log database: AbortError

Is there any small script, doing similar initialization (with indexeddb) as riot-web?

@andreygursky
Copy link
Author

andreygursky commented Dec 8, 2018

I was able to load the /develop version and successfully login and then also stable /app. Just wondering what commit was it.

Now it looks:

rageshake.js:99 Initialised rageshake: See https://bugs.chromium.org/p/chromium/issues/detail?id=583193 to fix line numbers on Chrome.
rageshake.js:99 Using WebAssembly Olm
rageshake.js:99 set language to en-us
index.js:218 GET https://riot.im/app/config.riot.im.json 404
rageshake.js:99 Vector starting at https://riot.im/app/
rageshake.js:99 Restoring session for ...

@bwindels
Copy link
Contributor

Hey @andreygursky, thanks for the follow-up. Great you've managed to login. Now that you got that far, could you try to hit the "Submit debug logs" button at the bottom of the settings page? That way we should also be able to see in greater detail what went wrong before.

@andreygursky
Copy link
Author

@bwindels, since I was able to login all works good as before (including audio calls). Is there any timeline of what develop (and stable) versions of riot-web, matrix-js-sdk, matrix-react-sdk are online on riot.im?

I'd be glad to supply logs (for working case) but I need to be able to read them before and pre-moderate. Is it possible?

BTW, perhaps related #7730 and #7761.

@bwindels
Copy link
Contributor

Hi @andreygursky, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.

You can see the logs, but it's not convenient. They are stored in the indexeddb logs database, and are kept across sessions, hence it would be useful to see what might have happened before. You can use the storage tab in developer tools of FF or Chrome to view the contents of indexeddb.

I understand if you are still uncomfortable with this though and prefer not to send them.

#7761 might be related, but there's not enough information on it to tell.

@andreygursky
Copy link
Author

@bwindels, thanks for your patience! If nobody else has already submitted a feature request about adding downloading/saving logs to file, I'll do it.

I looked into IndexedDB logs. There are only about 100 entries and the oldest one is dated at about the moment I could successfully login.

2018-12-08T12:26:39.110Z I riot-web closing

The next entry:

2018-12-08T12:26:00.372Z I Starting load of AsyncWrapper for modal
2018-12-08T12:26:06.098Z I stopping MatrixClient
2018-12-08T12:26:06.101Z I SyncApi.stop
2018-12-08T12:26:06.104Z I stopping OutgoingRoomKeyRequestManager
2018-12-08T12:26:06.107Z I Removing indexeddb instance: matrix-js-sdk:riot-web-sync
2018-12-08T12:26:06.108Z I Removing indexeddb instance: matrix-js-sdk:crypto
2018-12-08T12:26:06.111Z I Sync no longer running: exiting
2018-12-08T12:26:06.128Z I newscreen login
2018-12-08T12:26:06.267Z I versionchange for indexeddb undefined: closing
2018-12-08T12:26:06.564Z I Removed indexeddb instance: matrix-js-sdk:riot-web-sync
2018-12-08T12:26:06.565Z I Deleted indexeddb data.
2018-12-08T12:26:06.857Z I Removed indexeddb instance: matrix-js-sdk:crypto

and then

2018-12-08T12:25:28.932Z I LL: got 2 members from server for room ...
...

I'm wondering how they got cleared.

@andreygursky
Copy link
Author

Now noticed, they are not exactly sorted. Thus there were some log entries before:

"Sat Dec 08 2018 13:15:08 GMT+0100 (Central European Standard Time) ::: Log database was created."
2018-12-08T12:15:07.917Z W Warning: Accessing createClass via the main React package is deprecated, and will be removed in React v16.0. Use a plain JavaScript class instead. If you're not yet ready to migrate, create-react-class v15.* is available on npm as a temporary, drop-in replacement. For more info see https://fb.me/react-create-class
2018-12-08T12:15:07.953Z W Warning: Accessing PropTypes via the main React package is deprecated, and will be removed in  React v16.0. Use the latest available v15.* prop-types package from npm instead. For info on usage, compatibility, migration and more, see https://fb.me/prop-types-docs
2018-12-08T12:15:08.431Z I Using WebAssembly Olm
2018-12-08T12:15:08.524Z I Initialised rageshake: See https://bugs.chromium.org/p/chromium/issues/detail?id=583193 to fix line numbers on Chrome.
2018-12-08T12:22:17.645Z I Vector starting at https://riot.im/develop/
2018-12-08T12:22:17.693Z I No previous session found.
2018-12-08T12:22:17.702Z I Doing guest login on https://matrix.org
2018-12-08T12:22:18.547Z I Registered as guest: ...

@bwindels
Copy link
Contributor

Thanks @andreygursky for that. Without further information about the original problem, and with the problem having being resolved, I'm going to close this issue. Please re-open if it happens again or you've got more information. Thank you as well for your patience :)

@venatiodecorus
Copy link

I'm running into this issue on the latest version. Cannot login in Chrome, getting the same errors reported by OP. I am able to login in Firefox though. This is happening for me on multiple riot instances.

@ara4n ara4n reopened this Mar 1, 2019
@ara4n
Copy link
Member

ara4n commented Mar 1, 2019

@venatiodecorus can you provide the full JS console logs please so we can compare the errors?

@venatiodecorus
Copy link

venatiodecorus commented Mar 1, 2019

Navigated to https://riot.oct0p.us/
rageshake.js:99 Starting watcher for RoomList.orderByImportance@<null room>
rageshake.js:99 Starting watcher for feature_custom_tags@<null room>
rageshake.js:99 Failed to open log database: AbortError
rageshake.js:99 Failed to initialise rageshake: Error: Failed to open log database: AbortError
rageshake.js:99 wasm streaming compile failed: TypeError: Failed to execute 'compile' on 'WebAssembly': Incorrect response MIME type. Expected 'application/wasm'.
rageshake.js:99 falling back to ArrayBuffer instantiation
rageshake.js:99 Using WebAssembly Olm
rageshake.js:99 set language to en-us
rageshake.js:99 Using Web platform
index.js:218 GET https://riot.oct0p.us/config.riot.oct0p.us.json 404 (Not Found)
rageshake.js:99 Vector starting at https://riot.oct0p.us/
rageshake.js:99 Restoring session for @octo:matrix.oct0p.us
rageshake.js:99 setLoggedIn: mxid: @octo:matrix.oct0p.us deviceId: MNVWKKBCGW guest: false hs: https://matrix.oct0p.us
rageshake.js:99 Session persisted for @octo:matrix.oct0p.us
rageshake.js:99 Lifecycle: Starting MatrixClient
rageshake.js:99 IndexedDBStore.startup: connecting to backend
2
indexeddb-remote-backend.js:151 [Report Only] Refused to create a worker from 'https://riot.oct0p.us/bundles/6155e5c…/indexeddb-worker.js' because it violates the following Content Security Policy directive: "worker-src 'none'".
rageshake.js:99 MatrixClientPeg: waiting for MatrixClient store to initialise
indexeddb-remote-backend.js:151 POST about:blank net::ERR_UNKNOWN_URL_SCHEME
rageshake.js:99 IndexedDB worker is ready
indexeddb-local-backend.js:178 LocalIndexedDBStoreBackend.connect: connecting...
indexeddb-local-backend.js:202 LocalIndexedDBStoreBackend.connect: awaiting connection...
indexeddb-local-backend.js:204 LocalIndexedDBStoreBackend.connect: connected
indexeddb-local-backend.js:592 LocalIndexedDBStoreBackend: loading account data...
indexeddb-local-backend.js:612 LocalIndexedDBStoreBackend: loading sync data...
indexeddb-local-backend.js:599 LocalIndexedDBStoreBackend: loaded account data
indexeddb-local-backend.js:619 LocalIndexedDBStoreBackend: loaded sync data
indexeddb-local-backend.js:233 LocalIndexedDBStoreBackend: loaded initial data
rageshake.js:99 IndexedDBStore.startup: loading presence events
rageshake.js:99 IndexedDBStore.startup: processing presence events
rageshake.js:99 connecting to indexeddb matrix-js-sdk:crypto
rageshake.js:99 connected to indexeddb matrix-js-sdk:crypto
rageshake.js:99 Unable to load session TypeError: Cannot read property 'name' of undefined
    at e.<anonymous> (https://riot.oct0p.us/bundles/6155e5c…/bundle.js:1:9414)
    at E (https://riot.oct0p.us/bundles/6155e5c…/bundle.js:23:165499)
    at Generator._invoke (https://riot.oct0p.us/bundles/6155e5c…/bundle.js:23:165287)
    at Generator.e.(anonymous function) [as throw] (https://riot.oct0p.us/bundles/6155e5c…/bundle.js:23:165678)
    at Generator.c (https://riot.oct0p.us/bundles/6155e5c…/bundle.js:1:141515)
    at p._promiseRejected (https://riot.oct0p.us/bundles/6155e5c…/bundle.js:1:98771)
    at R._settlePromise (https://riot.oct0p.us/bundles/6155e5c…/bundle.js:1:115672)
    at R._settlePromise0 (https://riot.oct0p.us/bundles/6155e5c…/bundle.js:1:116245)
    at R._settlePromises (https://riot.oct0p.us/bundles/6155e5c…/bundle.js:1:117486)
    at https://riot.oct0p.us/bundles/6155e5c…/bundle.js:1:71047
From previous event:
    at R.U [as _captureStackTrace] (https://riot.oct0p.us/bundles/6155e5c…/bundle.js:1:84535)
    at new p (https://riot.oct0p.us/bundles/6155e5c…/bundle.js:1:97409)
    at https://riot.oct0p.us/bundles/6155e5c…/bundle.js:1:100502
    at https://riot.oct0p.us/bundles/6155e5c…/bundle.js:61:662685
    at Object.<anonymous> (https://riot.oct0p.us/bundles/6155e5c…/bundle.js:61:665468)
    at Object.<anonymous> (https://riot.oct0p.us/bundles/6155e5c…/bundle.js:61:665474)
    at o (https://riot.oct0p.us/bundles/6155e5c…/bundle.js:1:318)
    at Object.<anonymous> (https://riot.oct0p.us/bundles/6155e5c…/bundle.js:61:607232)
    at o (https://riot.oct0p.us/bundles/6155e5c…/bundle.js:1:318)
    at https://riot.oct0p.us/bundles/6155e5c…/bundle.js:1:2023
    at https://riot.oct0p.us/bundles/6155e5c…/bundle.js:1:2035
rageshake.js:99 Starting load of AsyncWrapper for modal
rageshake.js:99 Presence: online

@venatiodecorus
Copy link

i've been able to load riot in an incognito window, so this is something to do with my chrome instance i think actually. but i've tried clearing out all data for riot and i still cannot get it to load regularly. i've tried disabling all extensions etc.

@bwindels
Copy link
Contributor

bwindels commented Mar 4, 2019

@bwindels
Copy link
Contributor

bwindels commented Mar 4, 2019

Looks like it's another occurrence of matrix-org/matrix-js-sdk#847 (comment)
I'll have a look at implementing the suggested fix there.

@venatiodecorus Looks like something is going wrong while restoring your crypto storage from IndexedDB when starting Riot. Unfortunately we have a bug where we swallow the root cause, (which caused the error visible in your logs), so we can't know what caused the issue for you at the moment.

I'll try to get a fix in for the bug that masks the root cause soon, so you could update your installation of riot and if you're still seeing the issue after that (which I expect) re-post your logs here so we can see what is causing it for you.

@bwindels
Copy link
Contributor

bwindels commented Mar 4, 2019

@venatiodecorus we'll try to get this into tomorrows 1.0.2 release of riot. As said, feel free to re-report your logs after updating your installation to that.

@venatiodecorus
Copy link

venatiodecorus commented Mar 4, 2019

@bwindels thank you i'll keep an eye out for that and will get back to you

@bwindels
Copy link
Contributor

bwindels commented Mar 6, 2019

1.0.2 is released now, with fix for the error swallowing included.

@tanius
Copy link

tanius commented Apr 1, 2019

An error with the same error message and same scenario as for the OP is happening to me on login.

Environment:

  • Chrome 73.0.3683.75 on Ubuntu 18.10
  • custom Matrix server 0.99, installed from Ubuntu package matrix-synapse-py3 0.99.2+xenial1
  • happens both with https://riot.im/app (version 1.0.5) and https://riot.im/develop (though the latter has more detailed error messages)
  • doing "Application → Clear storage" in web developer tools does not change anything
  • disabling all Chrome extensions does not change anything
  • does not happen in incognito mode
  • does not happen in Firefox (tested in Firefox 66.0)

As it does not happen in incognito mode, it must be something about my browser instance / data, but what? What else can I disable / reset to create the same environment as in incognito mode?

Partial console logs from the /app version:

connecting to indexeddb matrix-js-sdk:crypto
rageshake.js:107 Upgrading IndexedDBCryptoStore from version 0 to 7
rageshake.js:107 connected to indexeddb matrix-js-sdk:crypto
rageshake.js:107 Unhandled rejection TypeError: Cannot read property 'name' of undefined
    at e.<anonymous> (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:1:9414)
    at E (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:23:168903)
    at Generator._invoke (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:23:168691)
    at Generator.e.(anonymous function) [as throw] (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:23:169082)
    at Generator.c (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:1:141515)
    at p._promiseRejected (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:1:98771)
    at R._settlePromise (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:1:115672)
    at R._settlePromise0 (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:1:116245)
    at R._settlePromises (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:1:117486)
    at https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:1:71047From previous event:
    at R.U [as _captureStackTrace] (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:1:84535)
    at R._then (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:1:110203)
    at R.then (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:1:108551)
    at Object.onPasswordLogin (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:106:207979)
    at t.value (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:106:244567)
    at Object.o (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:39:42752)
    at s (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:39:40953)
    at Object.executeDispatchesInOrder (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:39:41682)
    at f (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:23:175791)
    at p (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:23:175917)
    at Array.forEach (<anonymous>)
    at e.exports (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:61:150374)
    at Object.processEventQueue (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:23:177321)
    at https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:63:37537
    at Object.handleTopLevel [as _handleTopLevel] (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:63:37559)
    at p (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:63:58639)
    at u.perform (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:30:84838)
    at Object.batchedUpdates (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:61:165483)
    at Object.batchedUpdates (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:23:45542)
    at dispatchEvent (https://riot.im/app/bundles/23de62a7a965ffa277af/bundle.js:63:59420)

Partial console logs from the /develop version:

connecting to indexeddb matrix-js-sdk:crypto
rageshake.js:61 Upgrading IndexedDBCryptoStore from version 0 to 7
rageshake.js:61 connected to indexeddb matrix-js-sdk:crypto
rageshake.js:61 Unhandled rejection TypeError: Cannot read property 'name' of undefined
    at MatrixClientPeg._callee$ (https://riot.im/develop/bundles/2ed939d…/bundle.js:57287:49)
    at tryCatch (https://riot.im/develop/bundles/2ed939d…/bundle.js:159547:40)
    at Generator.invoke [as _invoke] (https://riot.im/develop/bundles/2ed939d…/bundle.js:159781:22)
    at Generator.prototype.(anonymous function) [as throw] (https://riot.im/develop/bundles/2ed939d…/bundle.js:159599:21)
From previous event:
    at MatrixClientPeg.start (https://riot.im/develop/bundles/2ed939d…/bundle.js:57326:29)
    at _callee4$ (https://riot.im/develop/bundles/2ed939d…/bundle.js:56156:81)
    at tryCatch (https://riot.im/develop/bundles/2ed939d…/bundle.js:159547:40)
    at Generator.invoke [as _invoke] (https://riot.im/develop/bundles/2ed939d…/bundle.js:159781:22)
    at Generator.prototype.(anonymous function) [as next] (https://riot.im/develop/bundles/2ed939d…/bundle.js:159599:21)
From previous event:
    at startMatrixClient (https://riot.im/develop/bundles/2ed939d…/bundle.js:56173:22)
    at _callee3$ (https://riot.im/develop/bundles/2ed939d…/bundle.js:56113:55)
    at tryCatch (https://riot.im/develop/bundles/2ed939d…/bundle.js:159547:40)
    at Generator.invoke [as _invoke] (https://riot.im/develop/bundles/2ed939d…/bundle.js:159781:22)
    at Generator.prototype.(anonymous function) [as next] (https://riot.im/develop/bundles/2ed939d…/bundle.js:159599:21)
From previous event:
    at _doSetLoggedIn (https://riot.im/develop/bundles/2ed939d…/bundle.js:56127:22)
    at Object.setLoggedIn [as onLoggedIn] (https://riot.im/develop/bundles/2ed939d…/bundle.js:56413:12)
    at https://riot.im/develop/bundles/2ed939d…/bundle.js:86162:26
From previous event:
    at Object.onPasswordLogin (https://riot.im/develop/bundles/2ed939d…/bundle.js:86161:90)
    at PasswordLogin.onSubmitForm (https://riot.im/develop/bundles/2ed939d…/bundle.js:89769:24)
    at HTMLUnknownElement.boundFunc (https://riot.im/develop/bundles/2ed939d…/bundle.js:353754:9)
    at Object../node_modules/react-dom/lib/ReactErrorUtils.js.ReactErrorUtils.invokeGuardedCallback (https://riot.im/develop/bundles/2ed939d…/bundle.js:353760:16)
    at executeDispatch (https://riot.im/develop/bundles/2ed939d…/bundle.js:347434:21)
    at Object.executeDispatchesInOrder (https://riot.im/develop/bundles/2ed939d…/bundle.js:347457:5)
    at executeDispatchesAndRelease (https://riot.im/develop/bundles/2ed939d…/bundle.js:346849:22)
    at executeDispatchesAndReleaseTopLevel (https://riot.im/develop/bundles/2ed939d…/bundle.js:346860:10)
    at Array.forEach (<anonymous>)
    at forEachAccumulated (https://riot.im/develop/bundles/2ed939d…/bundle.js:360161:9)
    at Object.processEventQueue (https://riot.im/develop/bundles/2ed939d…/bundle.js:347060:7)
    at runEventQueueInBatch (https://riot.im/develop/bundles/2ed939d…/bundle.js:353792:18)
    at Object.handleTopLevel [as _handleTopLevel] (https://riot.im/develop/bundles/2ed939d…/bundle.js:353802:5)
    at handleTopLevelImpl (https://riot.im/develop/bundles/2ed939d…/bundle.js:353887:24)
    at ReactDefaultBatchingStrategyTransaction.perform (https://riot.im/develop/bundles/2ed939d…/bundle.js:359387:20)
    at Object.batchedUpdates (https://riot.im/develop/bundles/2ed939d…/bundle.js:353515:26)
    at Object.batchedUpdates (https://riot.im/develop/bundles/2ed939d…/bundle.js:357373:27)
    at dispatchEvent (https://riot.im/develop/bundles/2ed939d…/bundle.js:353962:20)

@jryans
Copy link
Collaborator

jryans commented Apr 5, 2019

@tanius We've made some some more changes to riot.im/develop just now that I am hoping will improve this case so that you can actually login and use the app.

Could you please retest? If it fails, please capture logs as before. Thanks for your help and patience as we work this out!

@tanius
Copy link

tanius commented Apr 5, 2019

Just tested it again. Results are mixed :)

I put all the detailed logs below, but here's my hypothesis: there is code now for the case where a previously created IndexedDB database is no longer found. I can trigger this by deleting the IndexedDB databases and reloading riot.im/develop. In that case, I see a dialog saying "Missing session data. Some session data, including encrypted message keys, is missing. […] Your browser likely removed this data when running low on disk space." So far so good.

But when I log out and in again as instructed, I then see the same error as before: "rageshake.js:61 Unable to initialise e2e DOMException: QuotaExceededError". This is because (1) Riot tries to re-create the IndexedDB databases as usual and (2) the browser does not give the live Riot app enough storage quota to do so. Riot will be able to create the database structure, but not to save any meaningful amount of content to it before the "QuotaExceededError" error happens.

The safe behavior for a QuotaExceededError (or perhaps before that, when receiving ridiculously low storage quotas for IndexedDB) seems to be to not use IndexedDB at all. It seems Riot can do that, because when I delete the IndexedDB databases while being logged in (in incognito mode to make it work here …) and use Riot without reloading it, I will see a console message saying "IndexedDBStore failure, degrading to MemoryStore InvalidStateError: Failed to execute 'transaction' on 'IDBDatabase': The database connection is closing.". So if Riot would do the same thing as a reaction to "QuotaExceededError", login with low disk space should start to work.


Log messages for a login attempt on current riot.im/develop. Workflow was as follows:

  1. In an open riot.im/develop tab, open web developer tools, go to tab "Application" and do the "Clear Storage" procedure (with all types of storage checked for clearing).

  2. Click Shift+Reload in the browser to load the most recent version of Riot, disregarding any cached files. This will load https://riot.im/develop/ and then forward to https://riot.im/develop/#/welcome.

  3. When the https://riot.im/develop/#/welcome has loaded, click on "Sign In".

  4. Fill the signin form and click "Sign In".

Note that with this workflow, there are two separate occurrences of the "Unable to initialise e2e DOMException: QuotaExceededError" error message:

  1. The first during the page load for https://riot.im/develop/#/welcome.
  2. The second after filling the login form and clicking "Sign in". Which is the only one I reported so far in the other logs up the thread, because I was always starting directly from https://riot.im/develop/#/login there.

I omitted some unrelated stacktraces, and masked information related to our server and usernames as ***redacted***.

[…]
rageshake.js:61 Starting watcher for RoomList.orderByImportance@<null room>
rageshake.js:61 Starting watcher for feature_custom_tags@<null room>
rageshake.js:61 Failed to open log database: AbortError
    [stacktrace omitted]
rageshake.js:61 Failed to initialise rageshake: Error: Failed to open log database: AbortError
    [stacktrace omitted]
rageshake.js:61 Vector starting at https://riot.im/develop/#/welcome
rageshake.js:61 No previous session found.
rageshake.js:61 Doing guest login on https://matrix.org
rageshake.js:61 Registered as guest: @1893448:matrix.org
rageshake.js:61 setLoggedIn: mxid: @1893448:matrix.org deviceId: guest_device guest: true hs: https://matrix.org
rageshake.js:61 Removing indexeddb instance: matrix-js-sdk:crypto
rageshake.js:61 Removed indexeddb instance: matrix-js-sdk:crypto
rageshake.js:61 IndexedDB worker is ready
indexeddb-local-backend.js:357 Removing indexeddb instance: matrix-js-sdk:riot-web-sync
indexeddb-local-backend.js:378 Removed indexeddb instance: matrix-js-sdk:riot-web-sync
rageshake.js:61 Deleted indexeddb data.
rageshake.js:61 StorageManager: Checking storage consistency
rageshake.js:61 StorageManager: Local storage supported? true
rageshake.js:61 StorageManager: IndexedDB supported? true
rageshake.js:61 StorageManager: Local storage contains data? false
rageshake.js:61 StorageManager: Sync store using IndexedDB contains data? false
rageshake.js:61 StorageManager: Crypto store using IndexedDB contains data? false
rageshake.js:61 StorageManager: Storage consistency checks passed
rageshake.js:61 Session persisted for @1893448:matrix.org
rageshake.js:61 Lifecycle: Starting MatrixClient
rageshake.js:61 IndexedDBStore.startup: connecting to backend
rageshake.js:61 MatrixClientPeg: waiting for MatrixClient store to initialise
rageshake.js:61 newscreen welcome
rageshake.js:61 IndexedDB worker is ready
indexeddb-local-backend.js:157 LocalIndexedDBStoreBackend.connect: connecting...
indexeddb-local-backend.js:186 LocalIndexedDBStoreBackend.connect: awaiting connection...
indexeddb-local-backend.js:164 LocalIndexedDBStoreBackend.connect: upgrading from 0
indexeddb-local-backend.js:190 LocalIndexedDBStoreBackend.connect: connected
indexeddb-local-backend.js:511 LocalIndexedDBStoreBackend: loading account data...
indexeddb-local-backend.js:533 LocalIndexedDBStoreBackend: loading sync data...
indexeddb-local-backend.js:520 LocalIndexedDBStoreBackend: loaded account data
indexeddb-local-backend.js:542 LocalIndexedDBStoreBackend: loaded sync data
indexeddb-local-backend.js:218 LocalIndexedDBStoreBackend: loaded initial data
rageshake.js:61 IndexedDBStore.startup: loading presence events
rageshake.js:61 IndexedDBStore.startup: processing presence events
rageshake.js:61 Crypto: initialising roomlist...
rageshake.js:61 connecting to indexeddb matrix-js-sdk:crypto
rageshake.js:61 Upgrading IndexedDBCryptoStore from version 0 to 7
rageshake.js:61 connected to indexeddb matrix-js-sdk:crypto
rageshake.js:61 Crypto: initialising crypto object...
rageshake.js:61 Crypto: initialising Olm...
rageshake.js:61 Crypto: initialising Olm device...
rageshake.js:61 Error performing indexeddb txn Event {isTrusted: true, type: "abort", target: IDBTransaction, currentTarget: IDBTransaction, eventPhase: 2, …}
rageshake.js:61 Unable to initialise e2e DOMException: QuotaExceededError
    (No stack trace)
From previous event:
    at promiseifyTxn (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:18552:12)
    at Backend.doTxn (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:18480:27)
    at https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:19214:32
From previous event:
    at IndexedDBCryptoStore.doTxn (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:19213:36)
    at _callee2$ (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:9013:67)
    at tryCatch (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:50527:40)
    at Generator.invoke [as _invoke] (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:50761:22)
    at Generator.prototype.(anonymous function) [as next] (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:50579:21)
From previous event:
    at _initialiseAccount (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:9034:22)
    at OlmDevice._callee$ (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:9172:51)
    at tryCatch (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:50527:40)
    at Generator.invoke [as _invoke] (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:50761:22)
    at Generator.prototype.(anonymous function) [as next] (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:50579:21)
From previous event:
    at Crypto._callee$ (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:14140:67)
From previous event:
    at MatrixClient._callee$ (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:3258:58)
    at tryCatch (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:50527:40)
    at Generator.invoke [as _invoke] (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:50761:22)
    at Generator.prototype.(anonymous function) [as next] (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:50579:21)
From previous event:
    at MatrixClientPeg._callee$ (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:57802:81)
    at tryCatch (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:160817:40)
    at Generator.invoke [as _invoke] (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:161051:22)
    at Generator.prototype.(anonymous function) [as next] (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:160869:21)
    at Generator.tryCatcher (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:166459:23)
    at PromiseSpawn._promiseFulfilled (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:163592:49)
    at Promise._settlePromise (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:164662:26)
    at Promise._settlePromise0 (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:164702:10)
    at Promise._settlePromises (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:164782:18)
    at https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:161680:25
    
    consoleObj.(anonymous function) @ rageshake.js:61
    _callee$ @ MatrixClientPeg.js:136
    tryCatch @ runtime.js:64
    invoke @ runtime.js:298
    prototype.(anonymous function) @ runtime.js:116
    tryCatcher @ bluebird.js:5278
    PromiseSpawn._promiseRejected @ bluebird.js:2159
    Promise._settlePromise @ bluebird.js:3363
    Promise._settlePromise0 @ bluebird.js:3400
    Promise._settlePromises @ bluebird.js:3477
    (anonymous) @ bluebird.js:177
    Promise.then (async)
    [… abbreviating the stacktrace here …] 
    Promise.then (async)
    schedule @ bluebird.js:4504
    Async.settlePromises @ bluebird.js:174
    Promise._reject @ bluebird.js:3442
    Promise._rejectCallback @ bluebird.js:3259
    (anonymous) @ bluebird.js:3271
    txn.onabort @ indexeddb-crypto-store-backend.js:706
    
rageshake.js:61 MatrixClientPeg: really starting MatrixClient
rageshake.js:61 MatrixClientPeg: MatrixClient started
rageshake.js:61 MatrixClient sync state => PREPARED
rageshake.js:61 Updating room sorting algorithm: sortByImportance=true
rageshake.js:61 Generating initial room lists
rageshake.js:61 MatrixClient sync state => SYNCING
indexeddb-local-backend.js:437 Persisting sync data up to  s904545134_757247379_126763_269510244_137469433_670095_21529709_13193894_40820
rageshake.js:61 Routing URL  https://riot.im/develop/#/login
rageshake.js:61 newscreen login
[Violation] 'setTimeout' handler took 81ms
/develop/#/login:1 [DOM] Input elements should have autocomplete attributes (suggested: "current-password"): […]
rageshake.js:61 Overrode homeserver setting with https://***redacted***/ from login response
rageshake.js:61 stopping MatrixClient
rageshake.js:61 SyncApi.stop
rageshake.js:61 setLoggedIn: mxid: @***redacted*** deviceId: TKFJUOKYMN guest: false hs: https://***redacted***/
rageshake.js:61 Removing indexeddb instance: matrix-js-sdk:crypto
rageshake.js:61 Sync no longer running: exiting
rageshake.js:61 versionchange for indexeddb undefined: closing
rageshake.js:61 Removed indexeddb instance: matrix-js-sdk:crypto
rageshake.js:61 IndexedDB worker is ready
indexeddb-local-backend.js:357 Removing indexeddb instance: matrix-js-sdk:riot-web-sync
indexeddb-local-backend.js:378 Removed indexeddb instance: matrix-js-sdk:riot-web-sync
rageshake.js:61 Deleted indexeddb data.
rageshake.js:61 StorageManager: Checking storage consistency
rageshake.js:61 StorageManager: Local storage supported? true
rageshake.js:61 StorageManager: IndexedDB supported? true
rageshake.js:61 StorageManager: Local storage contains data? false
rageshake.js:61 StorageManager: Sync store using IndexedDB contains data? false
rageshake.js:61 StorageManager: Crypto store using IndexedDB contains data? false
rageshake.js:61 StorageManager: Storage consistency checks passed
rageshake.js:61 Session persisted for @***redacted***
rageshake.js:61 Lifecycle: Starting MatrixClient
rageshake.js:61 IndexedDBStore.startup: connecting to backend
rageshake.js:61 MatrixClientPeg: waiting for MatrixClient store to initialise
rageshake.js:61 IndexedDB worker is ready
indexeddb-local-backend.js:157 LocalIndexedDBStoreBackend.connect: connecting...
indexeddb-local-backend.js:186 LocalIndexedDBStoreBackend.connect: awaiting connection...
indexeddb-local-backend.js:164 LocalIndexedDBStoreBackend.connect: upgrading from 0
indexeddb-local-backend.js:190 LocalIndexedDBStoreBackend.connect: connected
indexeddb-local-backend.js:511 LocalIndexedDBStoreBackend: loading account data...
indexeddb-local-backend.js:533 LocalIndexedDBStoreBackend: loading sync data...
indexeddb-local-backend.js:520 LocalIndexedDBStoreBackend: loaded account data
indexeddb-local-backend.js:542 LocalIndexedDBStoreBackend: loaded sync data
indexeddb-local-backend.js:218 LocalIndexedDBStoreBackend: loaded initial data
rageshake.js:61 IndexedDBStore.startup: loading presence events
rageshake.js:61 IndexedDBStore.startup: processing presence events
rageshake.js:61 Crypto: initialising roomlist...
rageshake.js:61 connecting to indexeddb matrix-js-sdk:crypto
rageshake.js:61 Upgrading IndexedDBCryptoStore from version 0 to 7
rageshake.js:61 connected to indexeddb matrix-js-sdk:crypto
rageshake.js:61 Crypto: initialising crypto object...
rageshake.js:61 Crypto: initialising Olm...
rageshake.js:61 Crypto: initialising Olm device...
rageshake.js:61 Error performing indexeddb txn Event {isTrusted: true, type: "abort", target: IDBTransaction, currentTarget: IDBTransaction, eventPhase: 2, …}
rageshake.js:61 Unable to initialise e2e DOMException: QuotaExceededError
    (No stack trace)
From previous event:
    at promiseifyTxn (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:18552:12)
    at Backend.doTxn (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:18480:27)
    at https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:19214:32
From previous event:
    at IndexedDBCryptoStore.doTxn (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:19213:36)
    at _callee2$ (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:9013:67)
    at tryCatch (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:50527:40)
    at Generator.invoke [as _invoke] (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:50761:22)
    at Generator.prototype.(anonymous function) [as next] (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:50579:21)
From previous event:
    at _initialiseAccount (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:9034:22)
    at OlmDevice._callee$ (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:9172:51)
    at tryCatch (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:50527:40)
    at Generator.invoke [as _invoke] (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:50761:22)
    at Generator.prototype.(anonymous function) [as next] (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:50579:21)
From previous event:
    at Crypto._callee$ (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:14140:67)
From previous event:
    at MatrixClient._callee$ (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:3258:58)
    at tryCatch (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:50527:40)
    at Generator.invoke [as _invoke] (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:50761:22)
    at Generator.prototype.(anonymous function) [as next] (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:50579:21)
From previous event:
    at MatrixClientPeg._callee$ (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:57802:81)
    at tryCatch (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:160817:40)
    at Generator.invoke [as _invoke] (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:161051:22)
    at Generator.prototype.(anonymous function) [as next] (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:160869:21)
    at Generator.tryCatcher (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:166459:23)
    at PromiseSpawn._promiseFulfilled (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:163592:49)
    at Promise._settlePromise (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:164662:26)
    at Promise._settlePromise0 (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:164702:10)
    at Promise._settlePromises (https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:164782:18)
    at https://riot.im/develop/bundles/81f395d6d6ef8de4a448/bundle.js:161680:25
    
    consoleObj.(anonymous function) @ rageshake.js:61
    _callee$ @ MatrixClientPeg.js:136
    tryCatch @ runtime.js:64
    invoke @ runtime.js:298
    prototype.(anonymous function) @ runtime.js:116
    tryCatcher @ bluebird.js:5278
    PromiseSpawn._promiseRejected @ bluebird.js:2159
    Promise._settlePromise @ bluebird.js:3363
    Promise._settlePromise0 @ bluebird.js:3400
    Promise._settlePromises @ bluebird.js:3477
    (anonymous) @ bluebird.js:177
    Promise.then (async)
    [… abbreviating the stacktrace here …]
    Promise.then (async)
    schedule @ bluebird.js:4504
    Async.settlePromises @ bluebird.js:174
    Promise._reject @ bluebird.js:3442
    Promise._rejectCallback @ bluebird.js:3259
    (anonymous) @ bluebird.js:3271
    txn.onabort @ indexeddb-crypto-store-backend.js:706

rageshake.js:61 MatrixClientPeg: really starting MatrixClient
rageshake.js:61 MatrixClientPeg: MatrixClient started
rageshake.js:61 Got TURN URIs: turn:***redacted*** refresh in 86400 secs
rageshake.js:61 Got push rules

@jryans
Copy link
Collaborator

jryans commented Apr 8, 2019

@tanius Thanks again for the update. This isn't quite what I expected, unfortunately... 😓 I was hoping that during regular login, you'd hit the IndexedDBStore failure, degrading to MemoryStore path, but that doesn't seem to have happened, so something else is still preventing you from finishing login.

For your own context, Unable to initialise e2e DOMException: QuotaExceededError is expected for now. The app should still work in general with that error, but E2E functions will be disabled. I'd like to at least get you far enough for login to complete. We can come back around the E2E side after that.

Thanks for documenting the steps you used. Unfortunately, I don't think I'll be able to reproduce your exact situation even with those steps, since it's highly dependent on when the QuotaExceededError is thrown, which is based on internal browser heuristics, disk space, etc. (IndexedDB can throw QuotaExceededErrors any time you interact with it, so it could the 1st time or the 10th or 100th time.) This is why it's so helpful to get these logs from your system, so we can learn more about what's failing for you specifically.

My next step to add additional logs throughout the startup path from the last message you're getting (Got push rules) until the start up sync process completes.

I'll let you know when that's ready for testing.

jryans added a commit to jryans/matrix-js-sdk that referenced this issue Apr 8, 2019
In element-hq/element-web#7769, we're seeing sync startup
fail to complete, but the actual error isn't being logged. Hopefully these extra
debug logs will provide more insight into the failing step.
@jryans
Copy link
Collaborator

jryans commented Apr 8, 2019

@tanius riot.im/develop is ready for another attempt whenever you have time. Thanks! 😁

@tanius
Copy link

tanius commented Apr 8, 2019

Another round of test & log :-) Login workflow is as before – starting riot.im/develop after deleting all locally stored data incl. cookies etc.. Since you're interested in how far the start up process completes, I paste the logs from the point where I clicked the "Sign in" button.

[…]

rageshake.js:61 MatrixClient sync state => PREPARED
rageshake.js:61 Updating room sorting algorithm: sortByImportance=true
rageshake.js:61 Generating initial room lists
rageshake.js:61 MatrixClient sync state => SYNCING
rageshake.js:61 Starting sync request processing...
indexeddb-local-backend.js:437 Persisting sync data up to  s908467949_757247379_2173922_271245482_138877083_672627_21692765_13267830_41112
rageshake.js:61 Storing sync data...
rageshake.js:61 Sync data stored
rageshake.js:61 Processing sync response...
rageshake.js:61 Starting sync request processing...
rageshake.js:61 Routing URL  https://riot.im/develop/#/login

rageshake.js:61 newscreen login

rageshake.js:61 Storing sync data...
rageshake.js:61 Sync data stored
rageshake.js:61 Processing sync response...
rageshake.js:61 Starting sync request processing...

[… last four messages repeat several times here …]

[… and here is when I pressed "Sign in" …]

rageshake.js:61 Overrode homeserver setting with https://***redacted***/ from login response
rageshake.js:61 stopping MatrixClient
rageshake.js:61 SyncApi.stop
rageshake.js:61 setLoggedIn: mxid: @***redacted*** deviceId: IHWXTDQZSM guest: false hs: https://***redacted***/
rageshake.js:61 Removing indexeddb instance: matrix-js-sdk:crypto
rageshake.js:61 Sync no longer running: exiting
rageshake.js:61 versionchange for indexeddb undefined: closing
rageshake.js:61 Removed indexeddb instance: matrix-js-sdk:crypto
rageshake.js:61 IndexedDB worker is ready
indexeddb-local-backend.js:357 Removing indexeddb instance: matrix-js-sdk:riot-web-sync
indexeddb-local-backend.js:378 Removed indexeddb instance: matrix-js-sdk:riot-web-sync
rageshake.js:61 Deleted indexeddb data.
rageshake.js:61 StorageManager: Checking storage consistency
rageshake.js:61 StorageManager: Local storage supported? true
rageshake.js:61 StorageManager: IndexedDB supported? true
rageshake.js:61 StorageManager: Local storage contains data? false
rageshake.js:61 StorageManager: Sync store using IndexedDB contains data? false
rageshake.js:61 StorageManager: Crypto store using IndexedDB contains data? false
rageshake.js:61 StorageManager: Storage consistency checks passed
rageshake.js:61 Session persisted for @***redacted***
rageshake.js:61 Lifecycle: Starting MatrixClient
rageshake.js:61 IndexedDBStore.startup: connecting to backend
rageshake.js:61 MatrixClientPeg: waiting for MatrixClient store to initialise
rageshake.js:61 IndexedDB worker is ready
indexeddb-local-backend.js:157 LocalIndexedDBStoreBackend.connect: connecting...
indexeddb-local-backend.js:186 LocalIndexedDBStoreBackend.connect: awaiting connection...
indexeddb-local-backend.js:164 LocalIndexedDBStoreBackend.connect: upgrading from 0
indexeddb-local-backend.js:190 LocalIndexedDBStoreBackend.connect: connected
indexeddb-local-backend.js:511 LocalIndexedDBStoreBackend: loading account data...
indexeddb-local-backend.js:533 LocalIndexedDBStoreBackend: loading sync data...
indexeddb-local-backend.js:520 LocalIndexedDBStoreBackend: loaded account data
indexeddb-local-backend.js:542 LocalIndexedDBStoreBackend: loaded sync data
indexeddb-local-backend.js:218 LocalIndexedDBStoreBackend: loaded initial data
rageshake.js:61 IndexedDBStore.startup: loading presence events
rageshake.js:61 IndexedDBStore.startup: processing presence events
rageshake.js:61 Crypto: initialising roomlist...
rageshake.js:61 connecting to indexeddb matrix-js-sdk:crypto
rageshake.js:61 Upgrading IndexedDBCryptoStore from version 0 to 7
rageshake.js:61 connected to indexeddb matrix-js-sdk:crypto
rageshake.js:61 Crypto: initialising crypto object...
rageshake.js:61 Crypto: initialising Olm...
rageshake.js:61 Crypto: initialising Olm device...
rageshake.js:61 Error performing indexeddb txn Event {isTrusted: true, type: "abort", target: IDBTransaction, currentTarget: IDBTransaction, eventPhase: 2, …}

rageshake.js:61 Unable to initialise e2e DOMException: QuotaExceededError
    (No stack trace)
From previous event:
    at promiseifyTxn (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:18565:12)
    at Backend.doTxn (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:18493:27)
    at https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:19227:32
From previous event:
    at IndexedDBCryptoStore.doTxn (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:19226:36)
    at _callee2$ (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:9026:67)
    at tryCatch (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:50651:40)
    at Generator.invoke [as _invoke] (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:50885:22)
    at Generator.prototype.(anonymous function) [as next] (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:50703:21)
From previous event:
    at _initialiseAccount (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:9047:22)
    at OlmDevice._callee$ (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:9185:51)
    at tryCatch (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:50651:40)
    at Generator.invoke [as _invoke] (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:50885:22)
    at Generator.prototype.(anonymous function) [as next] (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:50703:21)
From previous event:
    at Crypto._callee$ (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:14153:67)
From previous event:
    at MatrixClient._callee$ (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:3271:58)
    at tryCatch (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:50651:40)
    at Generator.invoke [as _invoke] (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:50885:22)
    at Generator.prototype.(anonymous function) [as next] (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:50703:21)
From previous event:
    at MatrixClientPeg._callee$ (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:57926:81)
    at tryCatch (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:160968:40)
    at Generator.invoke [as _invoke] (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:161202:22)
    at Generator.prototype.(anonymous function) [as next] (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:161020:21)
    at Generator.tryCatcher (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:166610:23)
    at PromiseSpawn._promiseFulfilled (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:163743:49)
    at Promise._settlePromise (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:164813:26)
    at Promise._settlePromise0 (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:164853:10)
    at Promise._settlePromises (https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:164933:18)
    at https://riot.im/develop/bundles/ff98695d280f2794a0c4/bundle.js:161831:25

    consoleObj.(anonymous function) @ rageshake.js:61
    _callee$ @ MatrixClientPeg.js:136
    tryCatch @ runtime.js:64
    invoke @ runtime.js:298
    prototype.(anonymous function) @ runtime.js:116
    tryCatcher @ bluebird.js:5278
    PromiseSpawn._promiseRejected @ bluebird.js:2159
    Promise._settlePromise @ bluebird.js:3363
    Promise._settlePromise0 @ bluebird.js:3400
    Promise._settlePromises @ bluebird.js:3477
    (anonymous) @ bluebird.js:177
    Promise.then (async)
    
    [… this stack trace continues as in the previous logs, omitting …]

rageshake.js:61 MatrixClientPeg: really starting MatrixClient
rageshake.js:61 Getting saved sync token...
rageshake.js:61 Getting push rules...
rageshake.js:61 MatrixClientPeg: MatrixClient started
rageshake.js:61 Got saved sync token
rageshake.js:61 Getting saved sync...
rageshake.js:61 Got reply from saved sync, exists? false
rageshake.js:61 Got TURN URIs: turn:***redacted*** refresh in 86400 secs
rageshake.js:61 Got push rules
rageshake.js:61 Checking lazy load status...
rageshake.js:61 Checking server lazy load support...
rageshake.js:61 Creating and storing lazy load sync filter...
rageshake.js:61 Created and stored lazy load sync filter
rageshake.js:61 Checking whether lazy loading has changed in store...
rageshake.js:61 Storing client options...

@tanius
Copy link

tanius commented Apr 9, 2019

For all the above login attempts, I am using our custom Matrix homeserver. (Which is why the logs say Overrode homeserver setting with … from login response.)

Just checked our Matrix server log, but found nothing of interest for my login attempts. Starting from a GET … login request, it looks as pasted below for the requests coming from my computer.

Out of curiosity, I opened an account on the "standard" matrix.org homeserver and tried logging in there, using the same procedure as in the post above.

Login to that account worked the first time without any issue. But from the second time I had the same login problem that I have on our own homeserver, with the last log message being "Storing client options...". So it does not seem to be a problem related to our homeserver, but to when exactly the local storage issue appears, which is not not really predictable as you said.


Matrix server log excerpt from our homeserver while I try to access my account there with Riot:

2019-04-08 23:38:50,494 - synapse.access.https.8448 - 233 - INFO - GET-148963- ***IP redacted*** - 8448 - Received request: GET /_matrix/client/r0/login

2019-04-08 23:38:50,495 - synapse.access.https.8448 - 302 - INFO - GET-148963- ***IP redacted*** - 8448 - {None} Processed request: 0.001sec/0.000sec (0.000sec, 0.001sec) (0.000sec/0.000sec/0) 59B 200 "GET /_matrix/client/r0/login HTTP/1.1" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/73.0.3683.75 Chrome/73.0.3683.75 Safari/537.36" [0 dbevts]

2019-04-08 23:39:50,396 - twisted - 240 - INFO - - Timing out client: IPv6Address(type='TCP', host='***IP redacted***', port=34106, flowInfo=0, scopeID=0)

2019-04-08 23:39:50,496 - twisted - 240 - INFO - - Timing out client: IPv6Address(type='TCP', host='***IP redacted***', port=34096, flowInfo=0, scopeID=0)

2019-04-08 23:40:05,397 - twisted - 240 - INFO - - Forcibly timing out client: IPv6Address(type='TCP', host='***IP redacted***', port=34106, flowInfo=0, scopeID=0)

2019-04-08 23:40:05,497 - twisted - 240 - INFO - - Forcibly timing out client: IPv6Address(type='TCP', host='***IP redacted***', port=34096, flowInfo=0, scopeID=0)

2019-04-08 23:40:42,864 - synapse.access.https.8448 - 233 - INFO - OPTIONS-148978- ***IP redacted*** - 8448 - Received request: OPTIONS /_matrix/client/r0/register

2019-04-08 23:40:42,865 - synapse.access.https.8448 - 302 - INFO - OPTIONS-148978- ***IP redacted*** - 8448 - {None} Processed request: 0.001sec/0.000sec (0.000sec, 0.000sec) (0.000sec/0.000sec/0) 22B 200 "OPTIONS /_matrix/client/r0/register HTTP/1.1" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/73.0.3683.75 Chrome/73.0.3683.75 Safari/537.36" [0 dbevts]

2019-04-08 23:40:42,951 - synapse.access.https.8448 - 233 - INFO - POST-148979- ***IP redacted*** - 8448 - Received request: POST /_matrix/client/r0/register

2019-04-08 23:40:42,952 - synapse.access.https.8448 - 302 - INFO - POST-148979- ***IP redacted*** - 8448 - {None} Processed request: 0.001sec/0.000sec (0.001sec, 0.000sec) (0.000sec/0.000sec/0) 80B 403 "POST /_matrix/client/r0/register HTTP/1.1" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/73.0.3683.75 Chrome/73.0.3683.75 Safari/537.36" [0 dbevts]

2019-04-08 23:41:42,953 - twisted - 240 - INFO - - Timing out client: IPv6Address(type='TCP', host='***IP redacted***', port=35010, flowInfo=0, scopeID=0)

@jryans
Copy link
Collaborator

jryans commented Apr 9, 2019

@tanius Thanks for the latest round of logs! I am surprised to see it stop at that point without also logging a warning or error... Out of curiosity, are you sure you have configured Chrome to show all default log levels? For example, in Chrome 75, the Console tab has a "Default levels" menu, and you should have Error, Warning, and Info all checked. The Verbose option shouldn't matter.

Anyway, I'll work on wrapping this step just in case we are somehow triggering an error that isn't getting logged.

jryans added a commit to jryans/matrix-js-sdk that referenced this issue Apr 9, 2019
This adds explicit `try` blocks in the spots where we interact with the store
during sync startup. This shouldn't be necessary as the store should already be
catching this and degrading as of
matrix-org#884, but that doesn't seem to
have been enough for the affected user in
element-hq/element-web#7769, as they are seeing sync just
stop when storing without any further detail.
@jryans
Copy link
Collaborator

jryans commented Apr 9, 2019

@tanius Okay, we've added extra logging specifically to the Storing client options... step on https://riot.im/develop, so please re-test when you have a chance.

@tanius
Copy link

tanius commented Apr 9, 2019

are you sure you have configured Chrome to show all default log levels? For example, in Chrome 75, the Console tab has a "Default levels" menu, and you should have Error, Warning, and Info all checked.

Yes, sure about that. The dropdown menu to choose the log levels says "Default levels", and "Info", "Warnings" and "Error" are checked in that dropdown.

we've added extra logging specifically to the Storing client options... step

I tested again, but the log output did not change. The last lines are still these:

Got push rules
rageshake.js:61 Checking lazy load status...
rageshake.js:61 Checking server lazy load support...
rageshake.js:61 Creating and storing lazy load sync filter...
rageshake.js:61 Created and stored lazy load sync filter
rageshake.js:61 Checking whether lazy loading has changed in store...
rageshake.js:61 Storing client options...

So I poked around with the debugger, and found out the following (which may or may not be useful for you; if not, maybe tell me some breakpoints in the debugger and variable values you're interested in).

Finding the error in the "Storing client options…" step

In the debugger, I tried to follow the program as far as possible after it logged "Storing client options...". The last relevant point was at this stack state:

With this stack state:

../../ReactSDKDevelop/workspace/matrix-js-sdk/lib/client.js.MatrixClient._storeClientOptions (client.js:3830)
_callee4$ (sync.js:540)
tryCatch (runtime.js:62)
invoke (runtime.js:296)
prototype.(anonymous function) (runtime.js:114)
tryCatcher (bluebird.js:5276)
PromiseSpawn._promiseFulfilled (bluebird.js:2147)
Promise._settlePromise (bluebird.js:3359)
Promise._settlePromise0 (bluebird.js:3399)
Promise._settlePromises (bluebird.js:3479)
(anonymous) (bluebird.js:175)

In the top frame, the execution was pause in this line, right before returning the value that it calculated:

return this.store.storeClientOptions(serializableOpts);

(That's src/client.js line 3830, using unbundled filename and line numbers as done by Chrome dev tools.)

Now the interesting thing is that return value: it's an object "Promise" that contains a lot of stacktraces that I never saw in the log. It has a stacktrace in its _trace.stack attribute, and similar stack traces in parent._trace.stack, parent.parent._trace.stack and so on, in five levels. Here are all these stack traces:

_trace.stack:

 "Error
    at Promise.longStackTracesCaptureStackTrace [as _captureStackTrace] (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:40576:19)
    at new PromiseSpawn (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:41586:17)↵    at IndexedDBStore.<anonymous> (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:41740:21)
    at IndexedDBStore.storeClientOptions (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:32391:26)
    at MatrixClient.../../ReactSDKDevelop/workspace/matrix-js-sdk/lib/client.js.MatrixClient._storeClientOptions (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:6616:23)
    at SyncApi._callee4$ (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:34845:72)↵    at tryCatch (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:50686:40)
    at Generator.invoke [as _invoke] (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:50920:22)
    at Generator.prototype.(anonymous function) [as next] (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:50738:21)
    at Generator.tryCatcher (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:44507:23)
    at PromiseSpawn._promiseFulfilled (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:41640:49)
    at Promise._settlePromise (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:42710:26)
    at Promise._settlePromise0 (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:42750:10)
    at Promise._settlePromises (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:42830:18)
    at https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:39728:25

_parent._trace.stack:

 Error
    at Promise.longStackTracesCaptureStackTrace [as _captureStackTrace] (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:40576:19)
    at new PromiseSpawn (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:41586:17)
    at https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:41740:21
    at checkLazyLoadStatus (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:34872:26)
    at _callee3$ (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:34649:29)
    at tryCatch (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:50686:40)
    at Generator.invoke [as _invoke] (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:50920:22)
    at Generator.prototype.(anonymous function) [as next] (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:50738:21)
    at Generator.tryCatcher (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:44507:23)
    at PromiseSpawn._promiseFulfilled (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:41640:49)
    at Promise._settlePromise (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:42710:26)
    at Promise._fulfillPromises (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:42805:14)
    at Promise._settlePromises (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:42831:18)
    at https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:39728:25

_parent._parent._trace.stack:

Error
    at Promise.longStackTracesCaptureStackTrace [as _captureStackTrace] (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:40576:19)
    at new PromiseSpawn (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:41586:17)
    at https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:41740:21
    at getPushRules (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:34660:26)
    at SyncApi.../../ReactSDKDevelop/workspace/matrix-js-sdk/lib/sync.js.SyncApi.sync (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:34900:9)
    at MatrixClient.<anonymous> (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:6586:23)
    at MatrixClient.tryCatcher (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:44507:23)
    at MatrixClient.<anonymous> (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:41981:34)
    at MatrixClient.startClient (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:6590:23)
    at MatrixClientPeg._callee$ (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:58169:74)
    at tryCatch (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:161296:40)
    at Generator.invoke [as _invoke] (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:161530:22)
    at Generator.prototype.(anonymous function) [as throw] (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:161348:21)
    at Generator.tryCatcher (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:166938:23)
    at PromiseSpawn._promiseRejected (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:164081:10)
    at Promise._settlePromise (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:165143:26)
    at Promise._settlePromise0 (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:165181:10)
    at Promise._settlePromises (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:165257:18)
    at https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:162159:25

_parent._parent._parent._trace.stack:

Error
    at Promise.longStackTracesCaptureStackTrace [as _captureStackTrace] (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:40576:19)
    at MatrixClient.<anonymous> (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:41979:13)
    at MatrixClient.startClient (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:6590:23)
    at MatrixClientPeg._callee$ (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:58169:74)
    at tryCatch (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:161296:40)
    at Generator.invoke [as _invoke] (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:161530:22)
    at Generator.prototype.(anonymous function) [as throw] (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:161348:21)
    at Generator.tryCatcher (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:166938:23)
    at PromiseSpawn._promiseRejected (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:164081:10)
    at Promise._settlePromise (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:165143:26)
    at Promise._settlePromise0 (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:165181:10)
    at Promise._settlePromises (https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:165257:18)
    at https://riot.im/develop/bundles/387931577e7ddb0f2996/bundle.js:162159:25

So why do I not see these stack traces in the console log?

Now when further executing the program to see what happens to these stack traces, I got to this stack state:

invoke (runtime.js:297)
prototype.(anonymous function) (runtime.js:114)
tryCatcher (bluebird.js:5276)
PromiseSpawn._promiseFulfilled (bluebird.js:2147)
(anonymous) (bluebird.js:2251)
(anonymous) (indexeddb.js:289)
../../ReactSDKDevelop/workspace/matrix-js-sdk/lib/client.js.MatrixClient._storeClientOptions (client.js:3830)
_callee4$ (sync.js:540)
…

The stack traces where somewhere inside variable record. And record.type was normal, which is seemingly the reason why these exceptions did not get logged in the console log?

Side note: code / comment inconsistency

Taking the last stack state above and progressing to runtime.js:304, variable state was suspendedYield. This got set in a piece of code in ll. 298 - 304:

// If an exception is thrown from innerFn, we leave state ===
// GenStateExecuting and loop back for another invocation.
state = context.done
    ? GenStateCompleted
    : GenStateSuspendedYield;

It seems to me that the code comment and code do not match here. Maybe assigning GenStateSuspendedYield is a mistake here and GenStateExecuting is needed to let Riot progress with loading? (Didn't test that, though.)

@jryans
Copy link
Collaborator

jryans commented Apr 10, 2019

@tanius Thanks for this investigation!

I think you ended up following some of the promise handling code as it tries to save stack traces in case of an eventual error to report. It doesn't appear to believe there is an error to report, so that's why we haven't seen it in the console.

As for the code / comment side note, that seems to be in some generated code added by tools and libraries we use, rather than Riot directly. I'll keep it mind in case we need to investigate further there.

At the moment, it feels like the storeClientRecords step is hanging without ever actually failing, so we should try to find out why that's happening. Since you seem to be willing to look around with the debugger, here are some questions that may help us understand what's happening.

  • Do we enter storeClientOptions in indexeddb-remote-backend.js?
  • Does it send a message to the worker via _doCmd in indexeddb-remote-backend.js? If yes, keep track of the sequence number in seq.
  • Does _onWorkerMessage ever receive a reply with the same sequence number in msg.seq?
  • Assuming we sent a message to the worker in _doCmd, does the worker end up in storeClientOptions in indexeddb-local-backend.js?
  • The result of storeClientOptions in indexeddb-local-backend.js is determined by the txnAsPromise receiving either a complete or error event. Do you see one of these happen?

At the moment, my suspicion is that something is getting "stuck" in the browser in such a way that txnAsPromise does not receive either event, so we end up waiting forever.

@xiphiness
Copy link

xiphiness commented Apr 19, 2019

I'm having the same issue, also with Chrome. I don't have the bandwidth to try to fix the bugs, but could help with debugging and replicating the issue. It works fine in incognito.

@andreygursky
Copy link
Author

Again after opening my default room https://riot.im/app/... non-stop spinning. After logout no login possible:

Unhandled rejection TypeError: Cannot read property 'name' of undefined
    at e.<anonymous> (Unhandled rejection TypeError: Cannot read property 'name' of undefined    at e.<anonymous> (https://riot.im/app/bundles/ffb4fa6e8a9bd1bedd9a/bundle.js:1:9406)
...

Reloading the page https://riot.im/app/#/welcome informs about "Unable to restore session". Choosing "clear storage and sign out" doesn't help. Same error as above.

@andreygursky
Copy link
Author

I've just successfully logged-in.

@andreygursky
Copy link
Author

And now I know how to trigger this issue. To be able to login and not to get "DOMException: QuotaExceededError" right after that, $HOME must have at least 756MB free space. Unexpectedly much I'd say.

@jryans
Copy link
Collaborator

jryans commented May 8, 2019

I've just successfully logged-in.

Hooray! 😁

$HOME must have at least 756MB free space. Unexpectedly much I'd say.

Unfortunately, these limits are determined by the browser itself, so we don't have a lot of control over this. #9362 may help, though.

@z3ntu
Copy link
Contributor

z3ntu commented Oct 8, 2019

I can confirm that clearing up the home partition (from 894M free where it didn't work) to 2,2G free solves this issue.

@BloodyIron
Copy link

So, should we close this then?

@turt2live
Copy link
Member

looks like the issue is indeed resolved. If the issue persists, visit us in #riot-web:matrix.org

@z3ntu
Copy link
Contributor

z3ntu commented Oct 23, 2019

This is still a horrible UX when the home partition is full. Imo something should detect that this error has occurred and display something on screen, like "Due to browser restrictions, Riot needs at least X MB of free space on your home partition to work. Please free up some space to continue." , but the current state is just that nothing happens and everything is completely broken when the partition is nearly full.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-Storage Storage layer of the app, including IndexedDB, local storage, etc. P1 S-Major Severely degrades major functionality or product features, with no satisfactory workaround T-Defect
Projects
None yet
Development

No branches or pull requests