Android App extreme slow after activating meta enryption

Passbolt: 5.1.1 (Docker)
Database: 10.5.28-MariaDB
Android-App: 2.0.0
Android-OS: 15

I have activated metadata encryption and migrated all entries. The browser extension continues to work perfectly. The Windows app took about 3-4 minutes to resynchronize. The Android app has been loading for over an hour now. I can’t see how far along it is, just the white circling icon. When I restart the app, some entries are visible and searchable, but the synchronization is still running.

Hello @frank2342,

Could you please provide Android app logs?

  1. Enable logs collection (i.e. on the sign in screen → question mark icon (top right) → enable logs)
  2. Sign in
  3. Please wait for about 30 seconds - that should be enough to do the first refresh
  4. Go to settings → logs → share
  5. Replace the backend instance URL if you don’t want to share it

Hi @mmichalek

here are the logs

Device: Google Pixel 8 Pro
Android 15 (35)
Passbolt 2.0.0-36

18:06:23 Last credentials are null - ignoring event
18:06:23 Last credentials are null - ignoring event
18:06:23 Event source is null or package is Passbolt - hiding overlay
18:06:24 Last credentials are null - ignoring event
18:06:30 Last credentials are null - ignoring event
18:06:32 Event source is null or package is Passbolt - hiding overlay
18:06:34 Passphrase cache cleared
18:06:34 Passphrase cached
18:06:35 --> POST https://*****/auth/jwt/refresh.json http/1.1 (105-byte body)
18:06:35 <-- 200 OK https://*****/auth/jwt/refresh.json (104ms, unknown-length body)
18:06:35 Last credentials are null - ignoring event
18:06:35 Last credentials are null - ignoring event
18:06:35 Refresh executor attaching to: com.passbolt.mobile.android.feature.home.screen.HomePresenter
18:06:35 This status refresh is already collected - skipping
18:06:36 Last credentials are null - ignoring event
18:06:36 Last credentials are null - ignoring event
18:07:32 Refresh executor detaching from: com.passbolt.mobile.android.feature.home.screen.HomePresenter
18:07:32 [Session] Detaching base networking presenter for HomeFragment{12c88b0} (383bde4a-2af3-4567-8f8c-e3f7e1a116db id=0x7f0a019d tag=4461a6b4-1a1c-4f67-9018-b28a9d815e45)
18:07:33 Last credentials are null - ignoring event
18:07:33 Event source is null or package is Passbolt - hiding overlay
18:07:33 Last credentials are null - ignoring event
18:07:35 Last credentials are null - ignoring event
18:07:35 Event source is null or package is Passbolt - hiding overlay
18:07:35 Last credentials are null - ignoring event
18:07:36 Last credentials are null - ignoring event
18:07:38 Event source is null or package is Passbolt - hiding overlay
18:07:38 Last credentials are null - ignoring event
18:07:39 Last credentials are null - ignoring event
18:07:39 Last credentials are null - ignoring event
18:07:39 Last credentials are null - ignoring event
18:07:39 Last credentials are null - ignoring event
18:07:39 Last credentials are null - ignoring event
18:07:39 Last credentials are null - ignoring event
18:07:39 Last credentials are null - ignoring event
18:07:39 Last credentials are null - ignoring event
18:07:39 Last credentials are null - ignoring event
18:07:45 Last credentials are null - ignoring event
18:07:48 Last credentials are null - ignoring event
18:07:48 Last credentials are null - ignoring event
18:07:48 Last credentials are null - ignoring event
18:07:48 Last credentials are null - ignoring event
18:07:48 Last credentials are null - ignoring event
18:07:48 Last credentials are null - ignoring event
18:07:48 Last credentials are null - ignoring event
18:07:53 Last credentials are null - ignoring event
18:07:53 Last credentials are null - ignoring event
18:07:53 Last credentials are null - ignoring event
18:07:53 Last credentials are null - ignoring event
18:07:53 Last credentials are null - ignoring event
18:07:53 Last credentials are null - ignoring event
18:07:53 Last credentials are null - ignoring event
18:07:54 Last credentials are null - ignoring event
18:07:54 Last credentials are null - ignoring event
18:07:54 Last credentials are null - ignoring event
18:07:54 Last credentials are null - ignoring event
18:07:54 Last credentials are null - ignoring event
18:07:54 Last credentials are null - ignoring event
18:07:54 Last credentials are null - ignoring event
18:07:54 Last credentials are null - ignoring event
18:07:54 Last credentials are null - ignoring event
18:07:54 Last credentials are null - ignoring event
18:07:54 Last credentials are null - ignoring event
18:07:54 Last credentials are null - ignoring event
18:07:54 Last credentials are null - ignoring event
18:07:54 Last credentials are null - ignoring event
18:07:54 Last credentials are null - ignoring event
18:07:54 Last credentials are null - ignoring event
18:07:54 Last credentials are null - ignoring event
18:07:55 Last credentials are null - ignoring event
18:07:55 Last credentials are null - ignoring event
18:07:56 Last credentials are null - ignoring event
18:07:56 Last credentials are null - ignoring event
18:07:56 Last credentials are null - ignoring event
18:07:56 Last credentials are null - ignoring event
18:07:56 Last credentials are null - ignoring event
18:07:56 Last credentials are null - ignoring event
18:07:56 Last credentials are null - ignoring event
18:07:58 Last credentials are null - ignoring event
18:07:58 Last credentials are null - ignoring event
18:07:58 Last credentials are null - ignoring event
18:07:58 Last credentials are null - ignoring event
18:07:58 Last credentials are null - ignoring event
18:07:58 Last credentials are null - ignoring event
18:07:59 Last credentials are null - ignoring event
18:07:59 Last credentials are null - ignoring event
18:07:59 Last credentials are null - ignoring event
18:07:59 Last credentials are null - ignoring event
18:07:59 Last credentials are null - ignoring event
18:08:00 Last credentials are null - ignoring event
18:08:00 Last credentials are null - ignoring event
18:08:00 Last credentials are null - ignoring event
18:08:00 Last credentials are null - ignoring event
18:08:00 Last credentials are null - ignoring event
18:08:01 Last credentials are null - ignoring event
18:08:03 Last credentials are null - ignoring event
18:08:03 Last credentials are null - ignoring event
18:08:03 Last credentials are null - ignoring event
18:08:03 Last credentials are null - ignoring event
18:08:03 Last credentials are null - ignoring event
18:08:03 Last credentials are null - ignoring event
18:08:04 Last credentials are null - ignoring event
18:08:08 Last credentials are null - ignoring event
18:08:08 Last credentials are null - ignoring event
18:08:08 Last credentials are null - ignoring event
18:08:08 Last credentials are null - ignoring event
18:08:08 Last credentials are null - ignoring event
18:08:08 Last credentials are null - ignoring event
18:08:08 Last credentials are null - ignoring event
18:08:08 Last credentials are null - ignoring event
18:08:08 Last credentials are null - ignoring event
18:08:08 Last credentials are null - ignoring event
18:08:09 Last credentials are null - ignoring event
18:08:09 Last credentials are null - ignoring event
18:08:09 Last credentials are null - ignoring event
18:08:09 Last credentials are null - ignoring event
18:08:10 Last credentials are null - ignoring event
18:08:14 Last credentials are null - ignoring event
18:08:14 Last credentials are null - ignoring event
18:08:32 Last credentials are null - ignoring event
18:08:32 Last credentials are null - ignoring event
18:08:32 Last credentials are null - ignoring event
18:08:34 Last credentials are null - ignoring event
18:08:34 Last credentials are null - ignoring event
18:08:34 Last credentials are null - ignoring event
18:08:34 Last credentials are null - ignoring event
18:08:34 Last credentials are null - ignoring event
18:08:34 Last credentials are null - ignoring event
18:08:34 Last credentials are null - ignoring event
18:08:34 Last credentials are null - ignoring event
18:08:34 Last credentials are null - ignoring event
18:08:34 Last credentials are null - ignoring event
18:08:34 Last credentials are null - ignoring event
18:08:37 Last credentials are null - ignoring event
18:08:37 Last credentials are null - ignoring event
18:08:37 Last credentials are null - ignoring event
18:08:37 Last credentials are null - ignoring event
18:08:37 Last credentials are null - ignoring event
18:08:38 Last credentials are null - ignoring event
18:08:38 Last credentials are null - ignoring event
18:08:38 Last credentials are null - ignoring event
18:08:38 Last credentials are null - ignoring event
18:08:39 Last credentials are null - ignoring event
18:08:39 Last credentials are null - ignoring event
18:08:39 Last credentials are null - ignoring event
18:08:52 Last credentials are null - ignoring event
18:08:52 Last credentials are null - ignoring event
18:08:53 Last credentials are null - ignoring event
18:08:53 Last credentials are null - ignoring event
18:08:53 Last credentials are null - ignoring event
18:08:55 Event source is null or package is Passbolt - hiding overlay
18:08:55 Last credentials are null - ignoring event
18:08:55 Last credentials are null - ignoring event
18:08:55 Last credentials are null - ignoring event
18:08:55 Last credentials are null - ignoring event
18:08:55 Last credentials are null - ignoring event
18:09:02 Last credentials are null - ignoring event
18:09:02 Last credentials are null - ignoring event
18:09:02 Last credentials are null - ignoring event
18:09:02 Last credentials are null - ignoring event
18:09:02 Last credentials are null - ignoring event
18:09:02 Last credentials are null - ignoring event
18:09:03 Last credentials are null - ignoring event
18:09:03 Last credentials are null - ignoring event
18:09:08 Last credentials are null - ignoring event
18:09:08 Last credentials are null - ignoring event
18:09:08 Last credentials are null - ignoring event
18:09:08 Last credentials are null - ignoring event
18:09:08 Last credentials are null - ignoring event
18:09:08 Last credentials are null - ignoring event
18:09:08 Last credentials are null - ignoring event
18:09:09 Last credentials are null - ignoring event
18:09:09 Last credentials are null - ignoring event
18:09:09 Last credentials are null - ignoring event
18:09:09 Last credentials are null - ignoring event
18:09:09 Last credentials are null - ignoring event
18:09:10 Last credentials are null - ignoring event
18:09:10 Last credentials are null - ignoring event
18:09:10 Last credentials are null - ignoring event

Here is another log. On tablet I haven’t deleted alls data. Just startet the app. It’s the same, the loading icon is circling. But at least it shows some more debug infos.

Device: Google Pixel Tablet
Android 15 (35)
Passbolt 2.0.0-36

18:45:25 Passphrase cache cleared
18:45:25 Passphrase cached
18:45:25 Getting server pgp and rsa keys
18:45:30 --> GET https://*****/auth/verify.json http/1.1
18:45:30 <-- 200 OK https://*****/auth/verify.json (257ms, unknown-length body)
18:45:30 --> GET https://*****/auth/jwt/rsa.json http/1.1
18:45:30 <-- 200 OK https://*****/auth/jwt/rsa.json (53ms, unknown-length body)
18:45:30 Getting server pgp and rsa keys succeeded
18:45:30 Checking if time adjustment is needed
18:45:30 Local time sync needed. Adjusted: -4
18:45:30 Verifying server fingerprint
18:45:30 Server key fingerprint is valid
18:45:30 Preparing sign in challenge
18:45:31 Prepared sign in challenge
18:45:31 Signing in
18:45:31 --> POST https://*****/auth/jwt/login.json http/1.1 (1651-byte body)
18:45:31 <-- 200 OK https://*****/auth/jwt/login.json (311ms, unknown-length body)
18:45:31 Sign in success
18:45:31 Decrypting challenge.
18:45:31 Challenge decrypted successfully
18:45:31 Verifying challenge
18:45:31 Challenge verified with success
18:45:31 Checking MFA status
18:45:31 MFA not required
18:45:31 Authentication success
18:45:32 Increasing sign in count
18:45:32 Fetching feature flags
18:45:32 --> GET https://*****/settings.json http/1.1
18:45:32 <-- 200 OK https://*****/settings.json (61ms, unknown-length body)
18:45:32 Feature flags fetched
18:45:32 RBAC available, fetching RBAC
18:45:32 Password expiry available, fetching expiry settings
18:45:32 Password policies available, fetching password policies settings
18:45:32 V5 metadata available, fetching v5 metadata types and keys settings
18:45:32 --> GET https://*****/rbacs/me.json http/1.1
18:45:32 <-- 200 OK https://*****/rbacs/me.json (111ms, unknown-length body)
18:45:32 --> GET https://*****/metadata/types/settings.json http/1.1
18:45:32 <-- 200 OK https://*****/metadata/types/settings.json (94ms, unknown-length body)
18:45:33 --> GET https://*****/password-policies/settings.json http/1.1
18:45:33 --> GET https://*****/metadata/keys/settings.json http/1.1
18:45:33 <-- 200 OK https://*****/metadata/keys/settings.json (135ms, unknown-length body)
18:45:33 <-- 200 OK https://*****/password-policies/settings.json (135ms, unknown-length body)
18:45:33 V5 metadata types and keys settings fetched
18:45:34 --> GET https://*****/password-expiry/settings.json http/1.1
18:45:34 <-- 200 OK https://*****/password-expiry/settings.json (99ms, unknown-length body)
18:45:34 Fetching user profile
18:45:34 --> GET https://*****/users/me.json http/1.1
18:45:34 <-- 200 OK https://*****/users/me.json (112ms, unknown-length body)
18:45:34 User profile updated successfully
18:45:34 [Session] Attaching base networking presenter for com.passbolt.mobile.android.feature.main.mainscreen.MainActivity@8152687
18:45:34 [Session] Listening for new session events
18:45:34 Checking in app review show parameters. Show mode is: ConsecutiveShow. Show interval start date: 2024-10-11. Sign in count is: 49. Should show review: false
18:45:34 [Session] Attaching base networking presenter for HomeFragment{60bd587} (b30a3308-6d57-4ff8-9bc1-143cb95a2c68 id=0x7f0a019d tag=85c6e21c-494f-4a6a-b502-f48ddfd14196)
18:45:34 [Session] Listening for new session events
18:45:34 Refresh executor attaching to: com.passbolt.mobile.android.feature.home.screen.HomePresenter
18:45:34 --> GET https://*****/avatars/view/3a5b9ae9-038e-4181-9532-62899dbfc95a/medium.jpg http/1.1
18:45:34 <-- HTTP FAILED: java.io.IOException: unexpected end of stream on https://*****/...
18:45:34 Full data refresh initiated
18:45:34 Session is valid for request
18:45:34 Passphrase session is valid for request
18:45:34 Running operation
18:45:35 --> GET https://*****/avatars/view/3a5b9ae9-038e-4181-9532-62899dbfc95a/medium.jpg http/1.1
18:45:35 <-- 200 OK https://*****/avatars/view/3a5b9ae9-038e-4181-9532-62899dbfc95a/medium.jpg (99ms, unknown-length body)
18:45:35 --> GET https://*****/avatars/view/3a5b9ae9-038e-4181-9532-62899dbfc95a/medium.jpg http/1.1
18:45:35 <-- 200 OK https://*****/avatars/view/3a5b9ae9-038e-4181-9532-62899dbfc95a/medium.jpg (114ms, unknown-length body)
18:45:35 --> GET https://*****/metadata/keys.json?contain%5Bmetadata_private_keys%5D=1 http/1.1
18:45:35 <-- 200 OK https://*****/metadata/keys.json?contain%5Bmetadata_private_keys%5D=1 (97ms, unknown-length body)
18:45:36 --> GET https://*****/metadata/session-keys.json http/1.1
18:45:36 <-- 200 OK https://*****/metadata/session-keys.json (54ms, unknown-length body)
18:45:36 Building session keys cache; Bundles count: 1
18:45:36 Decrypted session keys bundle
18:45:37 Merging session keys cache
18:45:37 Session keys cache loaded
18:45:37 --> GET https://*****/resource-types.json http/1.1
18:45:37 <-- 200 OK https://*****/resource-types.json (135ms, unknown-length body)
18:45:37 --> GET https://*****/users.json http/1.1
18:45:37 <-- 200 OK https://*****/users.json (134ms, unknown-length body)
18:45:38 --> GET https://*****/groups.json?contain%5Buser%5D=1 http/1.1
18:45:38 <-- 200 OK https://*****/groups.json?contain%5Buser%5D=1 (45ms, unknown-length body)
18:45:38 --> GET https://*****/folders.json?contain%5Bpermission%5D=1&contain%5Bpermissions.group%5D=1 http/1.1
18:45:38 <-- 200 OK https://*****/folders.json?contain%5Bpermission%5D=1&contain%5Bpermissions.group%5D=1 (146ms, unknown-length body)
18:45:39 --> GET https://*****/resources.json?contain%5Bpermission%5D=1&contain%5Bfavorite%5D=1&contain%5Btag%5D=1&contain%5Bpermissions.group%5D=1 http/1.1
18:45:39 <-- 200 OK https://*****/resources.json?contain%5Bpermission%5D=1&contain%5Bfavorite%5D=1&contain%5Btag%5D=1&contain%5Bpermissions.group%5D=1 (380ms, unknown-length body)
18:46:02 Refresh executor detaching from: com.passbolt.mobile.android.feature.home.screen.HomePresenter
18:46:02 [Session] Detaching base networking presenter for HomeFragment{60bd587} (b30a3308-6d57-4ff8-9bc1-143cb95a2c68 id=0x7f0a019d tag=85c6e21c-494f-4a6a-b502-f48ddfd14196)
18:48:25 App went background
18:48:25 Passphrase cache cleared
18:48:25 Exception during metadata decryption
java.lang.IllegalArgumentException: Passphrase not present in cache
	at com.passbolt.mobile.android.serializers.gson.MetadataDecryptor.getKeyAndPassphrase(SourceFile:107)
	at com.passbolt.mobile.android.serializers.gson.MetadataDecryptor.decryptMetadata(SourceFile:49)
	at com.passbolt.mobile.android.serializers.gson.ResourceListItemDeserializer$deserialize$1.invokeSuspend(SourceFile:97)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(SourceFile:33)
	at kotlinx.coroutines.DispatchedTask.run(SourceFile:104)
	at kotlinx.coroutines.EventLoopImplBase.processNextEvent(SourceFile:277)
	at kotlinx.coroutines.BlockingCoroutine.joinBlocking(SourceFile:95)
	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(SourceFile:69)
	at kotlinx.coroutines.BuildersKt.runBlocking(SourceFile:1)
	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(SourceFile:48)
	at kotlinx.coroutines.BuildersKt.runBlocking$default(SourceFile:1)
	at com.passbolt.mobile.android.serializers.gson.ResourceListItemDeserializer.deserialize(SourceFile:74)
	at com.passbolt.mobile.android.serializers.gson.ResourceListDeserializer$deserialize$1.invokeSuspend(SourceFile:77)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(SourceFile:33)
	at kotlinx.coroutines.DispatchedTask.run(SourceFile:104)
	at kotlinx.coroutines.EventLoopImplBase.processNextEvent(SourceFile:277)
	at kotlinx.coroutines.BlockingCoroutine.joinBlocking(SourceFile:95)
	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(SourceFile:69)
	at kotlinx.coroutines.BuildersKt.runBlocking(SourceFile:1)
	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(SourceFile:48)
	at kotlinx.coroutines.BuildersKt.runBlocking$default(SourceFile:1)
	at com.passbolt.mobile.android.serializers.gson.ResourceListDeserializer.deserialize(SourceFile:58)
	at com.passbolt.mobile.android.serializers.gson.ResourceListDeserializer.deserialize(SourceFile:42)
	at com.google.gson.internal.bind.TreeTypeAdapter.read(SourceFile:95)
	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$2.readIntoField(SourceFile:267)
	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$FieldReflectionAdapter.readField(SourceFile:558)
	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(SourceFile:516)
	at retrofit2.converter.gson.GsonResponseBodyConverter.convert(SourceFile:40)
	at retrofit2.converter.gson.GsonResponseBodyConverter.convert(SourceFile:27)
	at retrofit2.OkHttpCall.parseResponse(SourceFile:246)
	at retrofit2.OkHttpCall$1.onResponse(SourceFile:156)
	at okhttp3.internal.connection.RealCall$AsyncCall.run(SourceFile:519)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
	at java.lang.Thread.run(Thread.java:1012)

java.lang.IllegalArgumentException: Passphrase not present in cache
	at com.passbolt.mobile.android.serializers.gson.MetadataDecryptor.getKeyAndPassphrase(SourceFile:107)
	at com.passbolt.mobile.android.serializers.gson.MetadataDecryptor.decryptMetadata(SourceFile:49)
	at com.passbolt.mobile.android.serializers.gson.ResourceListItemDeserializer$deserialize$1.invokeSuspend(SourceFile:97)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(SourceFile:33)
	at kotlinx.coroutines.DispatchedTask.run(SourceFile:104)
	at kotlinx.coroutines.EventLoopImplBase.processNextEvent(SourceFile:277)
	at kotlinx.coroutines.BlockingCoroutine.joinBlocking(SourceFile:95)
	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(SourceFile:69)
	at kotlinx.coroutines.BuildersKt.runBlocking(SourceFile:1)
	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(SourceFile:48)
	at kotlinx.coroutines.BuildersKt.runBlocking$default(SourceFile:1)
	at com.passbolt.mobile.android.serializers.gson.ResourceListItemDeserializer.deserialize(SourceFile:74)
	at com.passbolt.mobile.android.serializers.gson.ResourceListDeserializer$deserialize$1.invokeSuspend(SourceFile:77)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(SourceFile:33)
	at kotlinx.coroutines.DispatchedTask.run(SourceFile:104)
	at kotlinx.coroutines.EventLoopImplBase.processNextEvent(SourceFile:277)
	at kotlinx.coroutines.BlockingCoroutine.joinBlocking(SourceFile:95)
	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(SourceFile:69)
	at kotlinx.coroutines.BuildersKt.runBlocking(SourceFile:1)
	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(SourceFile:48)
	at kotlinx.coroutines.BuildersKt.runBlocking$default(SourceFile:1)
	at com.passbolt.mobile.android.serializers.gson.ResourceListDeserializer.deserialize(SourceFile:58)
	at com.passbolt.mobile.android.serializers.gson.ResourceListDeserializer.deserialize(SourceFile:42)
	at com.google.gson.internal.bind.TreeTypeAdapter.read(SourceFile:95)
	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$2.readIntoField(SourceFile:267)
	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$FieldReflectionAdapter.readField(SourceFile:558)
	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(SourceFile:516)
	at retrofit2.converter.gson.GsonResponseBodyConverter.convert(SourceFile:40)
	at retrofit2.converter.gson.GsonResponseBodyConverter.convert(SourceFile:27)
	at retrofit2.OkHttpCall.parseResponse(SourceFile:246)
	at retrofit2.OkHttpCall$1.onResponse(SourceFile:156)
	at okhttp3.internal.connection.RealCall$AsyncCall.run(SourceFile:519)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
	at java.lang.Thread.run(Thread.java:1012)
18:48:25 Invalid resource found id=(4b2a911a-05bf-4759-b763-c45260771a1d, skipping

Thank you for the logs. I can see that the initial sign-in and fetching configuration and data are fine. The interesting part is

18:45:39 <-- 200 OK https://*****/resources.json?contain%5Bpermission%5D=1&contain%5Bfavorite%5D=1&contain%5Btag%5D=1&contain%5Bpermissions.group%5D=1 (380ms, unknown-length body)
18:46:02 Refresh executor detaching from: com.passbolt.mobile.android.feature.home.screen.HomePresenter
18:46:02 [Session] Detaching base networking presenter for HomeFragment{60bd587} (b30a3308-6d57-4ff8-9bc1-143cb95a2c68 id=0x7f0a019d tag=85c6e21c-494f-4a6a-b502-f48ddfd14196)
18:48:25 App went background

It says that after resources had been fetched, they were being processed (decryption and local db insert) for 23 seconds, and then the app was backgrounded while still in progress. That means the application cache was not created as the processing part did not finish, so after the next start, the process begins from scratch. Lastly, can I also ask about the estimated resource count that you have?

You mean password entries in total? I estimate about 2500.

By the way, I have restored the database backup and everything is running as usual again for the time being.

1 Like

Yes, thank you for the information. I will come back with updates.

1 Like

I can report same effects on a recent Iphone installation, before also on the Android app.
I’ve tried it two times, once encrypting metadata on 5.1.0, then 5.1.1 - first time my own android app didn’t show resources, second time my android app worked, but a users iphone app stayed empty.
I’ve reverted both times to 5.0 without metadata encryption and sorry I didn’t take any logs.
About 1500 resources here.

2 Likes

Hello - coming back with the update: we identified the bottleneck in both apps; Fixes will be deployed in the next release (2.1.0)

3 Likes

Thank you very much! I wonder why there was no big feedback on the community about this. It must have affected many people?

Hi @cyfrax,

The Android version 2.1.0 is now released - the fixes were implemented there.
We had a few reports on it, but they were spread across different sources, and a lot of people are actually avoiding beta software. In some companies, this is not advised.

Thank you very much!
Can you say something about the Apple IOS App? Will those changes be made there as well?
We’ve had the same problems there.
Thanks
Frank

Yes, iOS app was updated as well with similar changes.

I finally got around to migrating and testing everything again today. Everything works perfectly. Thank you very much :+1:

1 Like

I’m actually having the same issue with the Chrome extension. Ever since I enabled encrypted metadata, it’s painfully slow, sometimes taking 2 - 3 minutes to load my passwords. It’s virtually unusable at this point. I should also mention that when I open the Passbolt workspace in my browser, it’s also quite slow, though not nearly as bad as the Chrome extension. The workspace takes like 15 - 30 seconds to display my passwords. I have 3,886 passwords stored.

Hello, can you create a new thread, as your problem is related to the chrome extension it is most likely something else. This way we can investigate there.

OK, the bug doesn’t seem to be completely fixed yet. Sometimes the app takes ages to load until the passwords are displayed. Sometimes they are not displayed at all. Then the only thing that helps is to close the app completely and restart it. Unfortunately, I haven’t managed to produce a log because everything works again the next time I start the app. A pattern is not really recognizable, but I’ll keep watching and try to provide a log.

1 Like

We have a similar report here, but also no reproduction path yet. Looks like it’s not a performance issue, but for some reason, the data refresh is not being triggered. Currently investigating.

Ok, I found a path to reproduce it which fits the scenario. This can happen when the app is in the background for some time, and the system decides to kill it to release resources, and then it’s restored either by opening the app or by finding it in the recent apps list. That is why force-closing the app (swiping up from recents) fixes the issue, because then the app is fully relaunched (not restored). We will fix it in the upcoming release 2.2.0.

1 Like

Sorry to disagree, but at least with force closing the App did not resolve the issue.

Nevertheless, I will keep an eye in it

1 Like