immich-app / immich

High performance self-hosted photo and video management solution.
https://immich.app
GNU Affero General Public License v3.0
50.38k stars 2.67k forks source link

Since apk v1.105.0 login/upload possible but timeline won't refresh, keeps spinning #9534

Closed Deathproof76 closed 4 months ago

Deathproof76 commented 5 months ago

The bug

Using the android mobile app from the playstore on a Samsung S23U: Since v1.105.0 I get weird errors where photos will get uploaded but not refreshed in the app. Tried to logout and in again via google oauth and mail/pw. But after relogin the timelime is building indefinitely.

I also tried direct ip in LAN. It somehow helps switching between Wifi and mobile Data. After doing that I'm able to see the remote photos and can upload photos but the gallery won't refresh and the backup cloud icon is crossed out*. The uploaded photos can be seen in the Webui though. I used a secondary android phone (some rooted xiaomi with a custom rom) to install v1.105.0 from github and compare with v1.104.0. due to https://github.com/immich-app/immich/issues/9495#issuecomment-2113818459

v1.104.0. works perfectly on the secondary phone but v1.105.0 shows the exact same issues as on the primary android phone.

*(after turning wifi off and waiting for mobile data, the "building timeline" vanishes and I can see photos but it seems to keep building in the background, down left "fotos" is still spinning) d8349746-099b-4491-8151-5fcaefc1824b

update: I can access remote albums, which also show the correct backup status (only on server/on device and server) it seems to be mainly a problem with the timeline. I can search things and filter people/places.

Can't see any unusual in the docker logs, no warnings, errors, nothing:

[Nest] 171  - 05/16/2024, 3:42:58 PM     LOG [ImmichServer] [EventRepository] Websocket Connect:    E6ynr_a3d_NhrmPbAAAi
[Nest] 171  - 05/16/2024, 3:42:58 PM     LOG [ImmichServer] [EventRepository] Websocket Disconnect: E6ynr_a3d_NhrmPbAAAi
[Nest] 171  - 05/16/2024, 3:42:59 PM     LOG [ImmichServer] [EventRepository] Websocket Connect:    1-_EQHAJTMkWn8RpAAAk
[Nest] 171  - 05/16/2024, 3:42:59 PM     LOG [ImmichServer] [EventRepository] Websocket Connect:    RX_mGm_exUzRw-6IAAAm
[Nest] 171  - 05/16/2024, 3:43:31 PM     LOG [ImmichServer] [EventRepository] Websocket Disconnect: RX_mGm_exUzRw-6IAAAm
[Nest] 171  - 05/16/2024, 3:43:33 PM     LOG [ImmichServer] [EventRepository] Websocket Connect:    BmbhCQSv4hVrdZlfAAAo
[Nest] 171  - 05/16/2024, 3:43:39 PM     LOG [ImmichServer] [EventRepository] Websocket Disconnect: BmbhCQSv4hVrdZlfAAAo
[Nest] 171  - 05/16/2024, 3:43:39 PM     LOG [ImmichServer] [EventRepository] Websocket Disconnect: 1-_EQHAJTMkWn8RpAAAk
[Nest] 171  - 05/16/2024, 3:43:39 PM     LOG [ImmichServer] [EventRepository] Websocket Disconnect: uN7sAk-oJzB0tUGHAAAe
[Nest] 171  - 05/16/2024, 3:43:39 PM     LOG [ImmichServer] [EventRepository] Websocket Disconnect: PN-L07X6bTtW-oBNAAAg
[Nest] 171  - 05/16/2024, 4:47:53 PM     LOG [ImmichServer] [EventRepository] Websocket Disconnect: KK_9G-sHe9W1-O3CAAAF
[Nest] 171  - 05/16/2024, 5:01:15 PM     LOG [ImmichServer] [EventRepository] Websocket Connect:    h9UxaZ-tza0X7gN2AAAq
[Nest] 171  - 05/16/2024, 5:01:16 PM     LOG [ImmichServer] [EventRepository] Websocket Disconnect: h9UxaZ-tza0X7gN2AAAq
[Nest] 244  - 05/16/2024, 5:16:04 PM     LOG [ImmichMicroservices] [MediaService] Successfully generated WEBP image preview for asset 152589db-e996-4db3-a0b9-f0faf3b49be3
[05/16/24 17:16:04] INFO     Setting                                            
                             'XLM-Roberta-Large-ViT-H-14__frozen_laion5b_s13b_b9
                             0k' execution providers to                         
                             ['CPUExecutionProvider'], in descending order of   
                             preference                                         
[05/16/24 17:16:04] INFO     Loading clip model                                 
                             'XLM-Roberta-Large-ViT-H-14__frozen_laion5b_s13b_b9
                             0k' to memory                                      
[05/16/24 17:16:04] INFO     Setting 'buffalo_l' execution providers to         
                             ['CPUExecutionProvider'], in descending order of   
                             preference                                         
[Nest] 244  - 05/16/2024, 5:16:04 PM     LOG [ImmichMicroservices] [MediaService] Successfully generated WEBP image thumbnail for asset 152589db-e996-4db3-a0b9-f0faf3b49be3
[Nest] 244  - 05/16/2024, 5:16:05 PM     LOG [ImmichMicroservices] [MediaService] Successfully generated WEBP image preview for asset f2009d45-a27c-48d6-b9a0-073b73bbfb54
[Nest] 244  - 05/16/2024, 5:16:05 PM     LOG [ImmichMicroservices] [MediaService] Successfully generated WEBP image thumbnail for asset f2009d45-a27c-48d6-b9a0-073b73bbfb54
[05/16/24 17:16:08] INFO     Loading facial recognition model 'buffalo_l' to    
                             memory                                             

The mobile logs show Key 'currentUser' not found in Store, Error while getting remote assets | ApiException 401: {"message":"Invalid user token","error":"Unauthorized","statusCode":401} , PersonService | Error while fetching curated people | ApiException 400: Socket operation failed: GET /person (Inner exception: Failed host lookup: 'immich.mydomain.com')

The OS that Immich Server is running on

docker

Version of Immich Server

v1.105.1

Version of Immich Mobile App

v1.105.0

Platform with the issue

Your docker-compose.yml content

irrelevant

Your .env content

irrelevant

Reproduction steps

1. install apk v1.105.0
2. try to open or login
3. gallery won't refresh or stuck on timeline building

Relevant log output

2024-05-16 14:50:02.199042 | SEVERE   | ImmichErrorLogger    | PlatformDispatcher - Catch all | Key 'currentUser' not found in Store |
#0      Store.get (package:immich_mobile/entities/store.entity.dart:35)
#1      SyncService._syncRemoteAlbumsToDb (package:immich_mobile/services/sync.service.dart:297)
#2      SyncService.syncRemoteAlbumsToDb.<anonymous closure> (package:immich_mobile/services/sync.service.dart:66)
#3      new Future.sync (dart:async/future.dart:305)
#4      AsyncMutex.run.<anonymous closure> (package:immich_mobile/utils/async_mutex.dart:17)
#5      _RootZone.run (dart:async/zone.dart:1655)
#6      _FutureListener.handleWhenComplete (dart:async/future_impl.dart:205)
#7      Future._propagateToListeners.handleWhenCompleteCallback (dart:async/future_impl.dart:808)
#8      Future._propagateToListeners (dart:async/future_impl.dart:864)
#9      Future._completeWithValue (dart:async/future_impl.dart:643)
<asynchronous suspension>

2024-05-16 14:50:02.198689 | SEVERE   | AssetService         | Error while getting remote assets | ApiException 401: {"message":"Invalid user token","error":"Unauthorized","statusCode":401} |
#0      SyncApi.getFullSyncForUser (package:openapi/api/sync_api.dart:101)
<asynchronous suspension>
#1      AssetService._getRemoteAssets (package:immich_mobile/services/asset.service.dart:116)
<asynchronous suspension>
#2      SyncService._syncRemoteAssetsForUser (package:immich_mobile/services/sync.service.dart:241)
<asynchronous suspension>
#3      SyncService._syncRemoteAssetsFull (package:immich_mobile/services/sync.service.dart:231)
<asynchronous suspension>
#4      SyncService.syncRemoteAssetsToDb.<anonymous closure> (package:immich_mobile/services/sync.service.dart:56)
<asynchronous suspension>
#5      AsyncMutex.run.<anonymous closure> (package:immich_mobile/utils/async_mutex.dart:15)
<asynchronous suspension>

2024-05-16 13:54:33.162050 | SEVERE   | PersonService        | Error while fetching curated people | ApiException 400: Socket operation failed: GET /person (Inner exception: Failed host lookup: 'immich.mydomain.com')

#0      IOClient.send (package:http/src/io_client.dart:94)
<asynchronous suspension>
#1      BaseClient._sendUnstreamed (package:http/src/base_client.dart:93)
<asynchronous suspension>
#2      ApiClient.invokeAPI (package:openapi/api_client.dart:101)
<asynchronous suspension>
#3      PersonApi.getAllPeople (package:openapi/api/person_api.dart:103)
<asynchronous suspension>
#4      PersonService.getAllPeople (package:immich_mobile/services/person.service.dart:25)
<asynchronous suspension>
#5      getAllPeople (package:immich_mobile/providers/search/people.provider.dart:16)
<asynchronous suspension>
#6      FutureHandlerProviderElementMixin.handleFuture.<anonymous closure>.<anonymous closure> (package:riverpod/src/async_notifier/base.dart:348)
<asynchronous suspension>
 |
#0      ApiClient.invokeAPI (package:openapi/api_client.dart:104)
<asynchronous suspension>
#1      PersonApi.getAllPeople (package:openapi/api/person_api.dart:103)
<asynchronous suspension>
#2      PersonService.getAllPeople (package:immich_mobile/services/person.service.dart:25)
<asynchronous suspension>
#3      getAllPeople (package:immich_mobile/providers/search/people.provider.dart:16)
<asynchronous suspension>
#4      FutureHandlerProviderElementMixin.handleFuture.<anonymous closure>.<anonymous closure> (package:riverpod/src/async_notifier/base.dart:348)
<asynchronous suspension>

2024-05-16 13:54:33.161549 | SEVERE   | SearchService        | Failed to getExploreData | ApiException 400: Socket operation failed: GET /search/explore (Inner exception: Failed host lookup: 'immich.mydomain.com')

#0      IOClient.send (package:http/src/io_client.dart:94)
<asynchronous suspension>
#1      BaseClient._sendUnstreamed (package:http/src/base_client.dart:93)
<asynchronous suspension>
#2      ApiClient.invokeAPI (package:openapi/api_client.dart:101)
<asynchronous suspension>
#3      SearchApi.getExploreData (package:openapi/api/search_api.dart:90)
<asynchronous suspension>
#4      SearchService.getExploreData (package:immich_mobile/services/search.service.dart:116)
<asynchronous suspension>
#5      getPreviewPlacesProvider.<anonymous closure> (package:immich_mobile/providers/search/search_page_state.provider.dart:10)
<asynchronous suspension>
#6      FutureHandlerProviderElementMixin.handleFuture.<anonymous closure>.<anonymous closure> (package:riverpod/src/async_notifier/base.dart:348)
<asynchronous suspension>
 |
#0      ApiClient.invokeAPI (package:openapi/api_client.dart:104)
<asynchronous suspension>
#1      SearchApi.getExploreData (package:openapi/api/search_api.dart:90)
<asynchronous suspension>
#2      SearchService.getExploreData (package:immich_mobile/services/search.service.dart:116)
<asynchronous suspension>
#3      getPreviewPlacesProvider.<anonymous closure> (package:immich_mobile/providers/search/search_page_state.provider.dart:10)
<asynchronous suspension>
#4      FutureHandlerProviderElementMixin.handleFuture.<anonymous closure>.<anonymous closure> (package:riverpod/src/async_notifier/base.dart:348)
<asynchronous suspension>

Additional information

I'm using the https://github.com/imagegenius/docker-immich monolythic dockerimage with tensorchord/pgvecto-rs:pg16-v0.2.0

alextran1502 commented 5 months ago

The app will need to finish indexing/hashing all the assets on your device (spinning circle) to show them in the app properly

Deathproof76 commented 5 months ago

After hours it does not seem to be moving along in any way, still spinning. Especially the second device wasn't used with immich before and I've only added one folder with 2 photos to backup. With v1.104.0. it does take less then a minute to be ready, but with v1.105.0. it looks awfully similar to https://github.com/immich-app/immich/issues/9018 https://github.com/immich-app/immich/issues/8023 https://github.com/immich-app/immich/issues/7498

The server has 128gb RAM, backed by a 13600k and all assets are on an nvme. 110000 assets total, my account about 45k. My wifes android phone 35k assets seems to work just fine. So the problem might be specific to my account.

edit: There are orphaned files in the repair section, which ironically all belong to my wifes problem-free account๐Ÿคก Just set logging on server to debug, restartet the phone. 20min later still spinning and nothing in the server logs.

mobile logs since phone reboot:

2024-05-16 22:20:16.335226 | FINE     | socket_io_client:engine.Socket | socket receive: type "ping", data "null" |
2024-05-16 22:20:14.051972 | INFO     | BackupNotifier       | _getBackupAlbumsInfo: Found 116 available albums |
2024-05-16 22:20:14.051164 | INFO     | BackupNotifier       | Found 116 local albums |
2024-05-16 22:20:13.822800 | INFO     | BackupNotifier       | [_resumeBackup] Start back up |
2024-05-16 22:19:59.098350 | INFO     | AlbumService         | refreshDeviceAlbums is already in progress |
2024-05-16 22:19:57.712441 | INFO     | AlbumService         | 'Recents' is not selected, keeping only selected albums |
2024-05-16 22:19:57.712207 | INFO     | AlbumService         | Found 116 device albums |
2024-05-16 22:19:51.465255 | FINE     | socket_io_client:engine.Socket | socket receive: type "message", data "2["on_new_release",{"isAvailable":0,"checkedAt":null,"serverVersion":{"major":1,"minor":105,"patch":1},"releaseVersion":{"major":1,"minor":105,"patch":1}}]" |
2024-05-16 22:19:51.464801 | FINE     | socket_io_client:engine.Socket | socket receive: type "message", data "2["on_server_version",{"major":1,"minor":105,"patch":1}]" |
2024-05-16 22:19:51.463840 | FINE     | socket_io_client:engine.Socket | socket receive: type "message", data "0{"sid":"ZPUcg7CURFJLkX9-AAAT"}" |
2024-05-16 22:19:51.369551 | FINE     | socket_io_client:engine.Socket | flushing 1 packets in socket |
2024-05-16 22:19:51.369539 | FINE     | socket_io:parser.Encoder | encoded {type: 0, data: null, nsp: /} as 0 |
2024-05-16 22:19:51.369512 | FINE     | socket_io:parser.Encoder | encoding packet {type: 0, data: null, nsp: /} |
2024-05-16 22:19:51.369505 | FINE     | socket_io_client:Manager | writing packet {type: 0, data: null, nsp: /} |
2024-05-16 22:19:51.369494 | FINE     | socket_io_client:Socket | transport is open - connecting |
2024-05-16 22:19:51.369470 | FINE     | socket_io_client:Manager | cleanup |
2024-05-16 22:19:51.369465 | FINE     | socket_io_client:Manager | open |
2024-05-16 22:19:51.369457 | FINE     | socket_io_client:engine.Socket | socket open |
2024-05-16 22:19:51.369363 | FINE     | socket_io_client:engine.Socket | socket receive: type "open", data "{"sid":"J-IV_m2iP1sftELUAAAS","upgrades":[],"pingInterval":25000,"pingTimeout":20000,"maxPayload":1000000}" |
2024-05-16 22:19:51.223360 | FINE     | socket_io_client:Manager | readyState opening |
2024-05-16 22:19:51.223331 | FINE     | socket_io_client:Manager | connect attempt will timeout after 20000 |
2024-05-16 22:19:51.223281 | FINE     | socket_io_client:engine.Socket | setting transport websocket |
2024-05-16 22:19:51.222974 | FINE     | socket_io_client:engine.Socket | creating transport "websocket" |
2024-05-16 22:19:51.222926 | FINE     | socket_io_client:Manager | opening https://immich.mydomain.com |
2024-05-16 22:19:51.222904 | FINE     | socket_io_client:Manager | readyState closed |
2024-05-16 22:19:51.222863 | FINE     | socket_io_client     | ignoring socket cache for https://immich.mydomain.com |
2024-05-16 22:19:51.121030 | INFO     | ApiService           | Pinging server with response code 200 |
2024-05-16 22:06:34.663443 | FINE     | socket_io:parser.Encoder | encoded {type: 2, data: [disconnecting, io client disconnect], options: {compress: false}, nsp: /} as 2["disconnecting","io client disconnect"] |
2024-05-16 22:06:34.663371 | FINE     | socket_io:parser.Encoder | encoding packet {type: 2, data: [disconnecting, io client disconnect], options: {compress: false}, nsp: /} |
2024-05-16 22:06:34.663311 | FINE     | socket_io_client:Manager | writing packet {type: 2, data: [disconnecting, io client disconnect], options: {compress: false}, nsp: /} |
2024-05-16 22:06:34.663031 | FINE     | socket_io_client:Socket | close (io client disconnect) |
2024-05-16 22:06:34.662975 | FINE     | socket_io_client:Manager | disconnect |
2024-05-16 22:06:34.662295 | FINE     | socket_io_client:engine.Socket | flushing 1 packets in socket |
2024-05-16 22:06:34.662260 | FINE     | socket_io:parser.Encoder | encoded {type: 1, nsp: /} as 1 |
2024-05-16 22:06:34.662226 | FINE     | socket_io:parser.Encoder | encoding packet {type: 1, nsp: /} |
2024-05-16 22:06:34.662183 | FINE     | socket_io_client:Manager | writing packet {type: 1, nsp: /} |
2024-05-16 22:06:34.662100 | FINE     | socket_io_client:Socket | performing disconnect (/) |
2024-05-16 22:06:31.603595 | INFO     | BackupNotifier       | _getBackupAlbumsInfo: Found 116 available albums |
2024-05-16 22:06:31.595575 | INFO     | BackupNotifier       | Found 116 local albums |
2024-05-16 22:06:31.534741 | FINE     | socket_io_client:engine.Socket | socket receive: type "message", data "2["on_new_release",{"isAvailable":0,"checkedAt":null,"serverVersion":{"major":1,"minor":105,"patch":1},"releaseVersion":{"major":1,"minor":105,"patch":1}}]" |
2024-05-16 22:06:31.534400 | FINE     | socket_io_client:engine.Socket | socket receive: type "message", data "2["on_server_version",{"major":1,"minor":105,"patch":1}]" |
2024-05-16 22:06:31.533646 | FINE     | socket_io_client:engine.Socket | socket receive: type "message", data "0{"sid":"_dH_CNUZRrwD9uChAAAN"}" |
2024-05-16 22:06:31.487149 | FINE     | socket_io_client:engine.Socket | flushing 1 packets in socket |
2024-05-16 22:06:31.487144 | FINE     | socket_io:parser.Encoder | encoded {type: 0, data: null, nsp: /} as 0 |
2024-05-16 22:06:31.487137 | FINE     | socket_io:parser.Encoder | encoding packet {type: 0, data: null, nsp: /} |
2024-05-16 22:06:31.487131 | FINE     | socket_io_client:Manager | writing packet {type: 0, data: null, nsp: /} |
2024-05-16 22:06:31.487122 | FINE     | socket_io_client:Socket | transport is open - connecting |
2024-05-16 22:06:31.487112 | FINE     | socket_io_client:Manager | cleanup |
2024-05-16 22:06:31.487106 | FINE     | socket_io_client:Manager | open |
2024-05-16 22:06:31.487098 | FINE     | socket_io_client:engine.Socket | socket open |
2024-05-16 22:06:31.487020 | FINE     | socket_io_client:engine.Socket | socket receive: type "open", data "{"sid":"p4gUF1EgU56gB8TeAAAM","upgrades":[],"pingInterval":25000,"pingTimeout":20000,"maxPayload":1000000}" |
2024-05-16 22:06:31.418864 | INFO     | BackupNotifier       | [_resumeBackup] Start back up |
2024-05-16 22:06:31.393117 | FINE     | socket_io_client:Manager | readyState opening |
2024-05-16 22:06:31.393027 | FINE     | socket_io_client:Manager | connect attempt will timeout after 20000 |
2024-05-16 22:06:31.393004 | FINE     | socket_io_client:engine.Socket | setting transport websocket |
2024-05-16 22:06:31.392912 | FINE     | socket_io_client:engine.Socket | creating transport "websocket" |
2024-05-16 22:06:31.392872 | FINE     | socket_io_client:Manager | opening https://immich.mydomain.com |
2024-05-16 22:06:31.392853 | FINE     | socket_io_client:Manager | readyState closed |
2024-05-16 22:06:31.392832 | FINE     | socket_io_client     | ignoring socket cache for https://immich.mydomain.com |
2024-05-16 22:01:43.033088 | INFO     | AssetNotifier        | Load assets: 959748ms |
2024-05-16 22:01:43.032864 | SEVERE   | ImmichErrorLogger    | PlatformDispatcher - Catch all | ApiException 502:  |
#0      AlbumApi.getAllAlbums (package:openapi/api/album_api.dart:373)
<asynchronous suspension>
#1      AlbumService.refreshRemoteAlbums (package:immich_mobile/services/album.service.dart:154)
<asynchronous suspension>
#2      Future.wait.<anonymous closure> (dart:async/future.dart:518)
<asynchronous suspension>

2024-05-16 22:01:43.032633 | INFO     | AlbumService         | Syncing completed. Changes: true |
2024-05-16 22:01:43.032594 | FINE     | SyncService          | 0 assets to delete, 0 to update |
2024-05-16 22:01:43.032548 | FINE     | SyncService          | Syncing all local albums almost done. Collected 0 asset candidates to delete |
2024-05-16 22:01:43.032441 | FINE     | SyncService          | Local album Facetune has not changed. Skipping sync. |
2024-05-16 22:01:43.024893 | FINE     | SyncService          | Local album GalaxyEnhance-X has not changed. Skipping sync. |
2024-05-16 22:01:43.018492 | FINE     | SyncService          | Local album Reddit has not changed. Skipping sync. |
2024-05-16 22:01:43.012065 | FINE     | SyncService          | Local album Snapseed has not changed. Skipping sync. |
2024-05-16 22:01:43.005736 | FINE     | SyncService          | Local album Snapshot has not changed. Skipping sync. |
2024-05-16 22:01:43.000069 | FINE     | SyncService          | Local album Instagram has not changed. Skipping sync. |
2024-05-16 22:01:42.993719 | FINE     | SyncService          | Local album DCIM has not changed. Skipping sync. |
2024-05-16 22:01:42.985919 | FINE     | SyncService          | Local album WhatsApp Images has not changed. Skipping sync. |
2024-05-16 22:01:42.941018 | FINE     | SyncService          | Local album Camera has not changed. Skipping sync. |
2024-05-16 22:01:42.815083 | FINE     | SyncService          | Local album Pictures has not changed. Skipping sync. |
2024-05-16 22:01:42.804531 | FINE     | SyncService          | Local album WhatsApp Video has not changed. Skipping sync. |
2024-05-16 22:01:42.789326 | INFO     | SyncService          | Fast synced local album Screenshots to DB |
2024-05-16 22:01:42.783407 | FINE     | HashService          | Hashed 1/1 assets |
2024-05-16 22:01:36.073916 | INFO     | AlbumService         | refreshDeviceAlbums is already in progress |
2024-05-16 22:01:36.072353 | SEVERE   | AssetService         | Error while getting remote assets | ApiException 502:  |
#0      SyncApi.getFullSyncForUser (package:openapi/api/sync_api.dart:101)
<asynchronous suspension>
#1      AssetService._getRemoteAssets (package:immich_mobile/services/asset.service.dart:116)
<asynchronous suspension>
#2      SyncService._syncRemoteAssetsForUser (package:immich_mobile/services/sync.service.dart:241)
<asynchronous suspension>
#3      SyncService._syncRemoteAssetsFull (package:immich_mobile/services/sync.service.dart:231)
<asynchronous suspension>
#4      SyncService.syncRemoteAssetsToDb.<anonymous closure> (package:immich_mobile/services/sync.service.dart:56)
<asynchronous suspension>
#5      AsyncMutex.run.<anonymous closure> (package:immich_mobile/utils/async_mutex.dart:15)
<asynchronous suspension>

full mobile log Immich_log_2024-05-16T22_24_12.149723.log

wardwygaerts commented 5 months ago

I think I have the same issue. In the past all my photo's were visible in the app immediately. Now it only loads them till 2021 (and there are pictures from 2007...). The circle next photos keeps turning, but no additional pictures appear. I have 62500 assets in my account and on the web everything is fine.

Deathproof76 commented 5 months ago

I have to correct myself when I said "v1.104.0. works perfectly on the secondary phone". It may actually finish indexing/hashing but only photos up until april are shown in the timeline. No problems in the webui. So it's likely that it's not just contained to the mobile app but in combination with the server. I will test downgrading server and app, when I can, to see if it works when both are on an older release. Did full vacuum and analyze of the db which helped nothing, but at least didn't show any grave issues with the db.

justin13888 commented 5 months ago

I'm on Android and I upgraded my server and mobile app version yesterday. Couldn't replicate this though but wondering if you tried clearing your mobile app's cache (in phone settings)?

wardwygaerts commented 5 months ago

I already tried it, but it only clears the thumbnails and not the amount of assets downloaded.

Error in the logs:

ApiException 400: HTTP connection failed: POST /sync/full-sync (Inner exception: Connection closed before full header was received)

#0      IOClient.send (package:http/src/io_client.dart:96)
<asynchronous suspension>
#1      BaseClient._sendUnstreamed (package:http/src/base_client.dart:93)
<asynchronous suspension>
#2      ApiClient.invokeAPI (package:openapi/api_client.dart:96)
<asynchronous suspension>
#3      SyncApi.getFullSyncForUser (package:openapi/api/sync_api.dart:99)
<asynchronous suspension>
#4      AssetService._getRemoteAssets (package:immich_mobile/services/asset.service.dart:116)
<asynchronous suspension>
#5      SyncService._syncRemoteAssetsForUser (package:immich_mobile/services/sync.service.dart:241)
<asynchronous suspension>
#6      SyncService._syncRemoteAssetsFull (package:immich_mobile/services/sync.service.dart:231)
<asynchronous suspension>
#7      SyncService.syncRemoteAssetsToDb.<anonymous closure> (package:immich_mobile/services/sync.service.dart:56)
<asynchronous suspension>
#8      AssetService.refreshRemoteAssets (package:immich_mobile/services/asset.service.dart:55)
<asynchronous suspension>
#9      AssetNotifier.getAllAsset (package:immich_mobile/providers/asset.provider.dart:54)
<asynchronous suspension>
Deathproof76 commented 5 months ago

Same here. As I said, still confused that my wifes account/mobile app (also android/Samsung on latest Oneui) works/syncs without a problem. Which seems to narrow the bug down to being account specific. Screenshot_20240518_101450

@wardwygaerts did you use https://github.com/vale46n1/immich_duplicate_finder by any chance? I've tried it a week and a half before running into this, even though everything seemed fine until now. It's the only thing I can think about regarding differences between my admin account and the one my wife uses. Even though it should just analyze the photos and delete them via api request.

update: used my secondary phone to log in to my wifes and also my mothers account and then back to my account. Their accounts sync without a hitch, only mine doesn't:

2024-05-18 12:47:45.604081 | SEVERE   | ImmichErrorLogger    | PlatformDispatcher - Catch all | ApiException 400: Socket operation failed: GET /album/00813ea5-6b8b-421b-b89b-2ab439cb659c (Inner exception: Failed host lookup: 'immich.**************.com')

#0      IOClient.send (package:http/src/io_client.dart:94)
<asynchronous suspension>
#1      BaseClient._sendUnstreamed (package:http/src/base_client.dart:93)
<asynchronous suspension>
#2      ApiClient.invokeAPI (package:openapi/api_client.dart:101)
<asynchronous suspension>
#3      AlbumApi.getAlbumInfo (package:openapi/api/album_api.dart:311)
<asynchronous suspension>
#4      AlbumService.refreshRemoteAlbums.<anonymous closure> (package:immich_mobile/services/album.service.dart:164)
<asynchronous suspension>
#5      SyncService._addAlbumFromServer (package:immich_mobile/services/sync.service.dart:436)
<asynchronous suspension>
#6      diffSortedLists (package:immich_mobile/utils/diff.dart:30)
<asynchronous suspension>
#7      SyncService._syncRemoteAlbumsToDb (package:immich_mobile/services/sync.service.dart:306)
<asynchronous suspension>
#8      AlbumService.refreshRemoteAlbums (package:immich_mobile/services/album.service.dart:159)
<asynchronous suspension>
#9      Future.wait.<anonymous closure> (dart:async/future.dart:518)
<asynchronous suspension>
 |
#0      ApiClient.invokeAPI (package:openapi/api_client.dart:104)
<asynchronous suspension>
#1      AlbumApi.getAlbumInfo (package:openapi/api/album_api.dart:311)
<asynchronous suspension>
#2      AlbumService.refreshRemoteAlbums.<anonymous closure> (package:immich_mobile/services/album.service.dart:164)
<asynchronous suspension>
#3      SyncService._addAlbumFromServer (package:immich_mobile/services/sync.service.dart:436)
<asynchronous suspension>
#4      diffSortedLists (package:immich_mobile/utils/diff.dart:30)
<asynchronous suspension>
#5      SyncService._syncRemoteAlbumsToDb (package:immich_mobile/services/sync.service.dart:306)
<asynchronous suspension>
#6      AlbumService.refreshRemoteAlbums (package:immich_mobile/services/album.service.dart:159)
<asynchronous suspension>
#7      Future.wait.<anonymous closure> (dart:async/future.dart:518)
<asynchronous suspension>

2024-05-18 12:47:45.387893 | INFO     | AssetNotifier        | Load assets: 50724ms |
2024-05-18 12:47:45.378575 | SEVERE   | AssetService         | Error while getting remote assets | ApiException 400: HTTP connection failed: POST /sync/full-sync (Inner exception: Software caused connection abort)

#0      IOClient.send (package:http/src/io_client.dart:96)
<asynchronous suspension>
#1      BaseClient._sendUnstreamed (package:http/src/base_client.dart:93)
<asynchronous suspension>
#2      ApiClient.invokeAPI (package:openapi/api_client.dart:96)
<asynchronous suspension>
#3      SyncApi.getFullSyncForUser (package:openapi/api/sync_api.dart:99)
<asynchronous suspension>
#4      AssetService._getRemoteAssets (package:immich_mobile/services/asset.service.dart:116)
<asynchronous suspension>
#5      SyncService._syncRemoteAssetsForUser (package:immich_mobile/services/sync.service.dart:241)
<asynchronous suspension>
#6      SyncService._syncRemoteAssetsFull (package:immich_mobile/services/sync.service.dart:231)
<asynchronous suspension>
#7      SyncService.syncRemoteAssetsToDb.<anonymous closure> (package:immich_mobile/services/sync.service.dart:56)
<asynchronous suspension>
#8      AsyncMutex.run.<anonymous closure> (package:immich_mobile/utils/async_mutex.dart:15)
<asynchronous suspension>
 |
#0      ApiClient.invokeAPI (package:openapi/api_client.dart:125)
<asynchronous suspension>
#1      SyncApi.getFullSyncForUser (package:openapi/api/sync_api.dart:99)
<asynchronous suspension>
#2      AssetService._getRemoteAssets (package:immich_mobile/services/asset.service.dart:116)
<asynchronous suspension>
#3      SyncService._syncRemoteAssetsForUser (package:immich_mobile/services/sync.service.dart:241)
<asynchronous suspension>
#4      SyncService._syncRemoteAssetsFull (package:immich_mobile/services/sync.service.dart:231)
<asynchronous suspension>
#5      SyncService.syncRemoteAssetsToDb.<anonymous closure> (package:immich_mobile/services/sync.service.dart:56)
<asynchronous suspension>
#6      AsyncMutex.run.<anonymous closure> (package:immich_mobile/utils/async_mutex.dart:15)
<asynchronous suspension>

2024-05-18 12:46:54.564413 | INFO     | ApiService           | Pinging server with response code 200 |
2024-05-18 12:46:11.361466 | INFO     | ApiService           | Pinging server with response code 200 |
2024-05-18 12:42:51.320504 | INFO     | ApiService           | Pinging server with response code 200 |
2024-05-18 12:42:47.181308 | INFO     | ApiService           | Pinging server with response code 200 |
2024-05-18 12:42:39.805081 | INFO     | ApiService           | Pinging server with response code 200 |
2024-05-18 12:42:29.045126 | INFO     | ApiService           | Pinging server with response code 200 |
2024-05-18 12:42:27.980490 | INFO     | AuthenticationNotifier | Logout was successful for a**************@gmail.com |
2024-05-18 12:41:04.614573 | INFO     | AssetNotifier        | Load assets: 4299ms |
2024-05-18 12:41:04.604285 | INFO     | SyncService          | Upserted 15409 assets into the DB |
2024-05-18 12:41:00.175413 | INFO     | ApiService           | Pinging server with response code 200 |
2024-05-18 12:40:48.096697 | INFO     | ApiService           | Pinging server with response code 200 |
2024-05-18 12:40:30.843974 | INFO     | ApiService           | Pinging server with response code 200 |
2024-05-18 12:40:15.736006 | INFO     | ApiService           | Pinging server with response code 200 |
2024-05-18 12:40:11.645644 | INFO     | ApiService           | Pinging server with response code 200 |
2024-05-18 12:39:30.799694 | INFO     | ApiService           | Pinging server with response code 200 |
2024-05-18 12:39:29.294631 | INFO     | AuthenticationNotifier | Logout was successful for k***************@gmail.com |
2024-05-18 12:39:09.021752 | INFO     | SyncService          | Synced changes of remote album xmas 23 to DB |
2024-05-18 12:39:08.982685 | INFO     | AssetNotifier        | Load assets: 235ms |
2024-05-18 12:39:08.592249 | INFO     | ApiService           | Pinging server with response code 200 |
2024-05-18 12:38:26.453083 | INFO     | BackupNotifier       | No assets are selected for back up |
2024-05-18 12:38:26.402385 | INFO     | BackupNotifier       | _getBackupAlbumsInfo: Found 2 available albums |
2024-05-18 12:38:26.401336 | INFO     | BackupNotifier       | Found 2 local albums |
2024-05-18 12:37:55.426576 | INFO     | SyncService          | Upserted 2 assets into the DB |
2024-05-18 12:37:55.384052 | INFO     | AssetNotifier        | Load assets: 10073ms |
2024-05-18 12:37:55.365990 | INFO     | SyncService          | Upserted 35575 assets into the DB |
2024-05-18 12:37:45.147704 | INFO     | ApiService           | Pinging server with response code 200 |
2024-05-18 12:37:34.934560 | INFO     | ApiService           | Pinging server with response code 200 |
2024-05-18 12:34:25.115294 | INFO     | ApiService           | Pinging server with response code 200 |
alextran1502 commented 5 months ago

@Deathproof76 can you check the server log to see if there is error when you sync your account?

Deathproof76 commented 5 months ago

@alextran1502 doesn't look like it. The logs show the exact time my Account logged in:

Screenshot_20240518_181910_AndroTainer

Edit: I just came back home, connected to my Wi-Fi and immich uploaded the screenshot I made for you. It's visible in the web ui, but the mobile app keeps spinning and doesn't refresh ๐Ÿคท

alextran1502 commented 5 months ago

@Deathproof76 And it works fine on 1.104 APK?

Deathproof76 commented 5 months ago

@Deathproof76 And it works fine on 1.104 APK?

Well, yes and no. The syncing on my backup phone seems to finish on 1.104 without errors (no spinning or refresh problem), but the timeline stops last Month. I can only see photos up until April. Similar to @wardwygaerts

alextran1502 commented 5 months ago

@Deathproof76 Thank you, let me look at the stack trace to see what can be the potential issue

alextran1502 commented 5 months ago

@Deathproof76 Can you try accessing your instance over local IP on your account?

Deathproof76 commented 5 months ago

@Deathproof76 Can you try accessing your instance over local IP on your account?

@alextran1502 same problem. This is a log from just now. I logged in using the local IP (20:58:07) -> waited for a few minutes > still building timeline, won't go away for hours -> I then turned off WiFi -> the connection switches to mobile data (21:06:22) -> I'm able to see all photos-> but can't refresh them -> if I'd take a photo and turn wifi on, it wouldn't be added to the timeline (on mobile app), but still uploaded to the server and be visible in webui.

Immich_log_2024-05-18T21_06_36.072048.log

wardwygaerts commented 5 months ago

I also tested with my local ip, but even less assets are loaded. New pictures are still uploaded from my phone to the server without issues.

wardwygaerts commented 5 months ago

I just uninstalled v1.105 and reinstalled v1.104. The timeline was completely build after 15seconds. Also tried again with v1.105, but same issue. I stay on v1.104 for now.

alextran1502 commented 5 months ago

@wardwygaerts what is your server version?

wardwygaerts commented 5 months ago

@wardwygaerts what is your server version?

1.105.1

vfr456 commented 5 months ago

I meet this issue too. You need to pull down refresh, then the sync state on photos will become ok .

Android App version: 1.105.0 build.139 Server Version: 1.105.1

Deathproof76 commented 5 months ago

@alextran1502 I downgraded the server to v1.104.0 and everything works with apk v1.104.0 on my secondary phone (No errors in logs, indexing/caching/refreshing working, all photos visible in timeline). Also tried with apk v1.105.0 and server v1.104.0 which sadly shows the same errors as apk v1.105.0 with server v1.105.1.

server v1.104.0 and apk v1.105.0 logs:

2024-05-23 00:33:59.106643 | SEVERE   | ImmichErrorLogger    | PlatformDispatcher - Catch all | Key 'currentUser' not found in Store |
#0      Store.get (package:immich_mobile/entities/store.entity.dart:35)
#1      SyncService._syncRemoteAlbumsToDb (package:immich_mobile/services/sync.service.dart:297)
#2      SyncService.syncRemoteAlbumsToDb.<anonymous closure> (package:immich_mobile/services/sync.service.dart:66)
#3      new Future.sync (dart:async/future.dart:305)
#4      AsyncMutex.run.<anonymous closure> (package:immich_mobile/utils/async_mutex.dart:17)
#5      _RootZone.run (dart:async/zone.dart:1655)
#6      _FutureListener.handleWhenComplete (dart:async/future_impl.dart:205)
#7      Future._propagateToListeners.handleWhenCompleteCallback (dart:async/future_impl.dart:808)
#8      Future._propagateToListeners (dart:async/future_impl.dart:864)
#9      Future._completeWithValue (dart:async/future_impl.dart:643)
<asynchronous suspension>

2024-05-23 00:33:59.104956 | INFO     | AssetNotifier        | Load assets: 43447ms |
2024-05-23 00:33:59.104734 | INFO     | AlbumService         | Syncing completed. Changes: false |
2024-05-23 00:33:59.104700 | FINE     | SyncService          | 0 assets to delete, 0 to update |
2024-05-23 00:33:59.104627 | FINE     | SyncService          | Syncing all local albums almost done. Collected 0 asset candidates to delete |
2024-05-23 00:33:59.103973 | INFO     | AlbumService         | refreshDeviceAlbums is already in progress |
2024-05-23 00:33:59.103723 | SEVERE   | AssetService         | Error while getting remote assets | ApiException 401: {"message":"Invalid user token","error":"Unauthorized","statusCode":401} |
#0      SyncApi.getFullSyncForUser (package:openapi/api/sync_api.dart:101)
<asynchronous suspension>
#1      AssetService._getRemoteAssets (package:immich_mobile/services/asset.service.dart:116)
<asynchronous suspension>
#2      SyncService._syncRemoteAssetsForUser (package:immich_mobile/services/sync.service.dart:241)
<asynchronous suspension>
#3      SyncService._syncRemoteAssetsFull (package:immich_mobile/services/sync.service.dart:231)
<asynchronous suspension>
#4      SyncService.syncRemoteAssetsToDb.<anonymous closure> (package:immich_mobile/services/sync.service.dart:56)
<asynchronous suspension>
#5      AsyncMutex.run.<anonymous closure> (package:immich_mobile/utils/async_mutex.dart:15)
<asynchronous suspension>

what I understand so far: It's a user specific problem (my other users work without a problem on v1.105.0) and it definitely happened between v1.104.0 and v1.105.0 for both apk and server.

server v1.104.0 and apk v1.104.0 logs:

2024-05-23 00:31:16.246604 | INFO     | AssetNotifier        | Load assets: 147ms |
2024-05-23 00:31:16.241473 | INFO     | AssetNotifier        | Load partner assets: 281ms |
2024-05-23 00:30:44.395962 | INFO     | SyncService          | Upserted 28 assets into the DB |
2024-05-23 00:30:43.181089 | INFO     | SyncService          | Upserted 23 assets into the DB |
2024-05-23 00:30:42.957408 | INFO     | SyncService          | Upserted 10 assets into the DB |
2024-05-23 00:30:41.984955 | INFO     | SyncService          | Upserted 2 assets into the DB |
2024-05-23 00:30:41.912367 | INFO     | SyncService          | Upserted 13 assets into the DB |
2024-05-23 00:30:41.271662 | INFO     | SyncService          | Upserted 241 assets into the DB |
2024-05-23 00:30:40.247343 | INFO     | SyncService          | Upserted 60 assets into the DB |
2024-05-23 00:30:40.108896 | INFO     | SyncService          | Upserted 39 assets into the DB |
2024-05-23 00:30:39.125883 | INFO     | SyncService          | Upserted 597 assets into the DB |
2024-05-23 00:30:38.445827 | INFO     | SyncService          | Upserted 6 assets into the DB |
2024-05-23 00:30:37.716907 | INFO     | SyncService          | Upserted 413 assets into the DB |
2024-05-23 00:30:36.682918 | INFO     | SyncService          | Upserted 16 assets into the DB |
2024-05-23 00:30:36.623191 | INFO     | SyncService          | Upserted 6 assets into the DB |
2024-05-23 00:30:35.047184 | INFO     | SyncService          | Upserted 203 assets into the DB |
2024-05-23 00:30:33.723776 | INFO     | SyncService          | Upserted 315 assets into the DB |
2024-05-23 00:30:32.931906 | INFO     | SyncService          | Upserted 257 assets into the DB |
2024-05-23 00:30:32.293886 | INFO     | SyncService          | Upserted 179 assets into the DB |
2024-05-23 00:30:31.638597 | INFO     | SyncService          | Upserted 91 assets into the DB |
2024-05-23 00:30:29.958754 | INFO     | SyncService          | Upserted 1047 assets into the DB |
2024-05-23 00:30:28.747342 | INFO     | SyncService          | Upserted 38 assets into the DB |
2024-05-23 00:30:27.817792 | INFO     | SyncService          | Upserted 42 assets into the DB |
2024-05-23 00:30:26.521455 | INFO     | SyncService          | Upserted 6 assets into the DB |
2024-05-23 00:30:25.852739 | INFO     | SyncService          | Upserted 3 assets into the DB |
2024-05-23 00:30:25.675704 | INFO     | SyncService          | Upserted 6 assets into the DB |
2024-05-23 00:30:24.503972 | INFO     | SyncService          | Upserted 531 assets into the DB |
2024-05-23 00:30:23.422837 | INFO     | SyncService          | Upserted 3 assets into the DB |
2024-05-23 00:30:23.370103 | INFO     | SyncService          | Upserted 5 assets into the DB |
2024-05-23 00:30:22.837367 | INFO     | SyncService          | Upserted 40 assets into the DB |
2024-05-23 00:30:22.278149 | INFO     | SyncService          | Upserted 75 assets into the DB |
2024-05-23 00:30:21.656460 | INFO     | SyncService          | Upserted 189 assets into the DB |
2024-05-23 00:30:21.095073 | INFO     | SyncService          | Upserted 34 assets into the DB |
2024-05-23 00:30:19.715731 | INFO     | SyncService          | Upserted 561 assets into the DB |
2024-05-23 00:30:18.753212 | INFO     | SyncService          | Upserted 19 assets into the DB |
2024-05-23 00:30:18.067559 | INFO     | SyncService          | Upserted 32 assets into the DB |
2024-05-23 00:30:17.452421 | INFO     | SyncService          | Upserted 82 assets into the DB |
2024-05-23 00:30:16.874727 | INFO     | SyncService          | Upserted 162 assets into the DB |
2024-05-23 00:30:15.887762 | INFO     | SyncService          | Upserted 29 assets into the DB |
2024-05-23 00:30:15.345906 | INFO     | SyncService          | Upserted 14 assets into the DB |
2024-05-23 00:30:15.215961 | INFO     | SyncService          | Upserted 1 assets into the DB |
2024-05-23 00:30:13.218978 | INFO     | SyncService          | Upserted 1018 assets into the DB |
2024-05-23 00:30:11.835806 | INFO     | SyncService          | Upserted 4 assets into the DB |
2024-05-23 00:30:11.059433 | INFO     | SyncService          | Upserted 126 assets into the DB |
2024-05-23 00:30:10.086015 | INFO     | SyncService          | Upserted 14 assets into the DB |
2024-05-23 00:30:09.996579 | INFO     | AssetNotifier        | Load partner assets: 12947ms |
2024-05-23 00:30:09.995200 | INFO     | AssetNotifier        | Load assets: 12919ms |
2024-05-23 00:30:09.975736 | INFO     | SyncService          | Upserted 46595 assets into the DB |
2024-05-23 00:29:53.533564 | INFO     | ApiService           | Pinging server with response code 200 |
2024-05-23 00:29:51.981107 | INFO     | ApiService           | Pinging server with response code 200 |
2024-05-23 00:29:53.533564 | INFO     | ApiService           | Pinging server with response code 200 |
2024-05-23 00:29:51.981107 | INFO     | ApiService           | Pinging server with response code 200 |
Deathproof76 commented 5 months ago

@alextran1502 sorry to bother you, but do you have any guidance on how I could debug this further? Or maybe a workaround? Maybe like creating a new account and migrating the assets/created and shared albums to the new account via db queries?

I mean with errors like:

ApiException 401: {"message":"Invalid user token","error":"Unauthorized","statusCode":401} 

and

Key 'currentUser' not found in Store

Isn't there a way to find out what is wrong with the user token? Maybe what it should look like and a way to modify it? (I don't know if it even is part of the problem and not just a red herring)

I would love to be able to use immich on my phone again. If there's anything I can do, I'd be glad if you could tell me.

wardwygaerts commented 5 months ago

@Deathproof76 Did you try with the previous mobile version? For me it works with app v1.104.0 As soon as I install the latest one, it's broken again. Server version is on v1.105.1 I know this is not perfect, but at least I can use Immich.

Deathproof76 commented 5 months ago

@Deathproof76 Did you try with the previous mobile version? For me it works with app v1.104.0 As soon as I install the latest one, it's broken again. Server version is on v1.105.1 I know this is not perfect, but at least I can use Immich.

Yeah, it works on my main phone when installing the v1.104.0 apk from github.

But the problem is that all the already backed up photos in the selected backup albums will be re-uploaded again, creating duplicates due to https://github.com/immich-app/immich/issues/9495#issuecomment-2113818459 as I've been using the playstore version.

I'd have to create new albums and/or clear the old ones. And there's no guarantee that the next version e.g. v1.106.0 won't have the same problem. Even if it works, I'd have to duplicate and reclear the albums again for not having duplicate photos in the account.

wardwygaerts commented 5 months ago

But the problem is that all the already backed up photos in the selected backup albums will be re-uploaded again, creating duplicates due to #9495 (comment) as I've been using the playstore version.

I also switched from the PlayStore version to the GitHub apk. The backup indeed started from scratch, but I don't have duplicates.

Deathproof76 commented 5 months ago

you're right. It works just as you said ๐Ÿ˜„๐Ÿ‘

xs2usun commented 5 months ago

Same problems over here with Play store version 1.105. Downgrading to 1.104 worked! ๐Ÿ‘

Deathproof76 commented 5 months ago

Really good to know that this problem affects more than two people ๐Ÿ‘€. Makes it much more likely of it being a "true" bug and not just some isolated incident related to rare user specific shenanigans.

@xs2usun you don't happen to have any logs from v1.105?

xs2usun commented 5 months ago

Unfortunately I have not. I searched Google with the following error in the log of 1.105:

ApiException 400: HTTP connection failed: POST /sync/full-sync (Inner exception: Software caused connection abort)

That led me to this bug and the solution. I have similar problems with the iOS app, but I can't downgrade on iOS.

alextran1502 commented 5 months ago

@xs2usun is your server on 1.105 as well?

Deathproof76 commented 5 months ago

Unfortunately I have not. I searched Google with the following error in the log of 1.105:

ApiException 400: HTTP connection failed: POST /sync/full-sync (Inner exception: Software caused connection abort)

That led me to this bug and the solution. I have similar problems with the iOS app, but I can't downgrade on iOS.

Ah, this part then:

2024-05-18 21:06:22.507417 | SEVERE   | AssetService         | Error while getting remote assets | ApiException 400: HTTP connection failed: POST /sync/full-sync (Inner exception: Software caused connection abort)

#0      IOClient.send (package:http/src/io_client.dart:96)
<asynchronous suspension>
#1      BaseClient._sendUnstreamed (package:http/src/base_client.dart:93)
<asynchronous suspension>
#2      ApiClient.invokeAPI (package:openapi/api_client.dart:96)
<asynchronous suspension>
#3      SyncApi.getFullSyncForUser (package:openapi/api/sync_api.dart:99)
<asynchronous suspension>
#4      AssetService._getRemoteAssets (package:immich_mobile/services/asset.service.dart:116)
<asynchronous suspension>
#5      SyncService._syncRemoteAssetsForUser (package:immich_mobile/services/sync.service.dart:241)
<asynchronous suspension>
#6      SyncService._syncRemoteAssetsFull (package:immich_mobile/services/sync.service.dart:231)
<asynchronous suspension>
#7      SyncService.syncRemoteAssetsToDb.<anonymous closure> (package:immich_mobile/services/sync.service.dart:56)
<asynchronous suspension>
#8      AsyncMutex.run.<anonymous closure> (package:immich_mobile/utils/async_mutex.dart:15)
<asynchronous suspension>
 |
#0      ApiClient.invokeAPI (package:openapi/api_client.dart:125)
<asynchronous suspension>
#1      SyncApi.getFullSyncForUser (package:openapi/api/sync_api.dart:99)
<asynchronous suspension>
#2      AssetService._getRemoteAssets (package:immich_mobile/services/asset.service.dart:116)
<asynchronous suspension>
#3      SyncService._syncRemoteAssetsForUser (package:immich_mobile/services/sync.service.dart:241)
<asynchronous suspension>
#4      SyncService._syncRemoteAssetsFull (package:immich_mobile/services/sync.service.dart:231)
<asynchronous suspension>
#5      SyncService.syncRemoteAssetsToDb.<anonymous closure> (package:immich_mobile/services/sync.service.dart:56)
<asynchronous suspension>
#6      AsyncMutex.run.<anonymous closure> (package:immich_mobile/utils/async_mutex.dart:15)
<asynchronous suspension>
jarelllama commented 5 months ago

Really good to know that this problem affects more than two people ๐Ÿ‘€. Makes it much more likely of it being a "true" bug and not just some isolated incident related to rare user specific shenanigans.

Definitely not the only one. Been having this issue for a while now too.

Details:

ApiException 400: HTTP connection failed: POST /sync/full-sync (Inner exception: Broken pipe)

#0      IOClient.send (package:http/src/io_client.dart:96)
<asynchronous suspension>
#1      BaseClient._sendUnstreamed (package:http/src/base_client.dart:93)
<asynchronous suspension>
#2      ApiClient.invokeAPI (package:openapi/api_client.dart:96)
<asynchronous suspension>
#3      SyncApi.getFullSyncForUser (package:openapi/api/sync_api.dart:99)
<asynchronous suspension>
#4      AssetService._getRemoteAssets (package:immich_mobile/services/asset.service.dart:116)
<asynchronous suspension>
#5      SyncService._syncRemoteAssetsForUser (package:immich_mobile/services/sync.service.dart:241)
<asynchronous suspension>
#6      SyncService._syncRemoteAssetsFull (package:immich_mobile/services/sync.service.dart:231)
<asynchronous suspension>
#7      SyncService.syncRemoteAssetsToDb.<anonymous closure> (package:immich_mobile/services/sync.service.dart:56)
<asynchronous suspension>
#8      AsyncMutex.run.<anonymous closure> (package:immich_mobile/utils/async_mutex.dart:15)
<asynchronous suspension>

Stack trace:

#0      ApiClient.invokeAPI (package:openapi/api_client.dart:125)
<asynchronous suspension>
#1      SyncApi.getFullSyncForUser (package:openapi/api/sync_api.dart:99)
<asynchronous suspension>
#2      AssetService._getRemoteAssets (package:immich_mobile/services/asset.service.dart:116)
<asynchronous suspension>
#3      SyncService._syncRemoteAssetsForUser (package:immich_mobile/services/sync.service.dart:241)
<asynchronous suspension>
#4      SyncService._syncRemoteAssetsFull (package:immich_mobile/services/sync.service.dart:231)
<asynchronous suspension>
#5      SyncService.syncRemoteAssetsToDb.<anonymous closure> (package:immich_mobile/services/sync.service.dart:56)
<asynchronous suspension>
#6      AsyncMutex.run.<anonymous closure> (package:immich_mobile/utils/async_mutex.dart:15)
<asynchronous suspension>
alextran1502 commented 5 months ago

@fyfrey Hi Fynn, do you have any pointer that I should look into regarding this bug? I can't seem to find a way to reproduce it. Ever

fyfrey commented 5 months ago

I think there are two different issues mentioned here

  1. the invalid user token. Maybe we changed something about in login process in 105 compared to 104?

  2. The connection abort during full sync. We'd need to find out what these dart library error messages mean (maybe timeout, maybe something else...). Next, we'd need to add logging for this to the server (if it's not already included in the most verbose setting). I have no idea how to replicate the issue, though.

alextran1502 commented 5 months ago

For all of the users in this thread, are you guys connecting to your instance over dns/reverse proxy?

Deathproof76 commented 5 months ago

For all of the users in this thread, are you guys connecting to your instance over dns/reverse proxy?

https://github.com/immich-app/immich/issues/9534#issuecomment-2118980855 I tried direct and via caddy to the same effect. And as I said the weirdest part is, that other accounts using the same instance, like if I log in using my wifes account with my phone on 1.105 for server and apk, work without a problem.

wardwygaerts commented 5 months ago

By default, I connect via reverse proxy (traefik), but also tried it locally.

fyfrey commented 5 months ago

Do all affected accounts use the stacking feature extensively?

xs2usun commented 5 months ago

@xs2usun is your server on 1.105 as well?

My server is 1.105.1. It runs as a docker container in Unraid. On iOS the app build version is 1.105.0 build 157. I connect through reverse proxy, but it behaves the same when I log in with local IP.

xs2usun commented 5 months ago

I've attached 3 logfiles. Timeline works on 1.104. But on 1.105 the timeline never gets updated past March 10.

xs2usun commented 5 months ago

I deinstalled v1.105 on my Android phone and installed v1.104 apk. Timeline is fine again.

Deathproof76 commented 5 months ago

Do all affected accounts use the stacking feature extensively?

To be honest I don't even know how to do that or search for stacks in immich. Does it happen automatically? Like if I'd set my phone to output raw and heic/jpeg at the same time when shooting a photo, the uploaded files will be part of a stack? If that's the case than no. If it's something that one would have to do manually then also no.

wardwygaerts commented 5 months ago

To be honest I don't even know how to do that or search for stacks in immich.

I don't know if stacks are created automatically, but you can check if you have any stacks by running this query on the db: select * from asset_stack

I have only 3 stacks in total.

Deathproof76 commented 5 months ago

thank you @wardwygaerts I have none in that case.

fyfrey commented 5 months ago

I've made a trial-and-error patch for Android. Anyone who uses the GitHub apk and want's to try a patched v1.105.1 feel free to report if the issue is solved (and if not the new error log): you would need to build the PR #9919 locally and test on your device Edit: link to pre-built APKs removed because Github runner does not build the PR but the result of merging into main..

Deathproof76 commented 5 months ago

@fyfrey Uninstalled previous apk and installed the PR https://github.com/immich-app/immich/pull/9919 apk. But it seems that I'm not even able to login anymore. Tried via reverse proxy in Lan and via mobile data and also direct ip:port. OAuth wasn't available, changed passwords and retried and also tried via a different "problemfree" user to no avail. Nothing in the immich docker logs, even with debug.

mobile log:

2024-06-03 16:01:47.189619 | INFO     | ApiService           | Pinging server with response code 200 |
2024-06-03 16:01:38.495875 | INFO     | ApiService           | Pinging server with response code 200 |
2024-06-03 16:01:29.138983 | INFO     | ApiService           | Pinging server with response code 200 |
2024-06-03 16:01:00.071776 | SEVERE   | AuthenticationNotifier | Unable to get user information from the server. |
2024-06-03 16:01:00.071548 | SEVERE   | AuthenticationNotifier | Error getting user information from the server [API EXCEPTION] | ApiException 404: {"message":"Cannot GET /api/users/me","error":"Not Found","statusCode":404} |
#0      UsersApi.getMyUser (package:openapi/api/users_api.dart:179)
<asynchronous suspension>
#1      AuthenticationNotifier.setSuccessLoginInfo (package:immich_mobile/providers/authentication.provider.dart:182)
<asynchronous suspension>
#2      LoginForm.build.login (package:immich_mobile/widgets/forms/login_form.dart:156)
<asynchronous suspension>

2024-06-03 16:00:59.780714 | INFO     | ApiService           | Pinging server with response code 200 |
2024-06-03 16:00:56.842813 | INFO     | ApiService           | Pinging server with response code 200 |
2024-06-03 16:00:27.872983 | SEVERE   | AuthenticationNotifier | Unable to get user information from the server. |
2024-06-03 16:00:27.872706 | SEVERE   | AuthenticationNotifier | Error getting user information from the server [API EXCEPTION] | ApiException 404: {"message":"Cannot GET /api/users/me","error":"Not Found","statusCode":404} |
#0      UsersApi.getMyUser (package:openapi/api/users_api.dart:179)
<asynchronous suspension>
#1      AuthenticationNotifier.setSuccessLoginInfo (package:immich_mobile/providers/authentication.provider.dart:182)
<asynchronous suspension>
#2      LoginForm.build.login (package:immich_mobile/widgets/forms/login_form.dart:156)
<asynchronous suspension>

2024-06-03 16:00:26.231533 | INFO     | ApiService           | Pinging server with response code 200 |
2024-06-03 16:00:16.038605 | SEVERE   | AuthenticationNotifier | Unable to get user information from the server. |
2024-06-03 16:00:16.038433 | SEVERE   | AuthenticationNotifier | Error getting user information from the server [API EXCEPTION] | ApiException 404: {"message":"Cannot GET /api/users/me","error":"Not Found","statusCode":404} |
#0      UsersApi.getMyUser (package:openapi/api/users_api.dart:179)
<asynchronous suspension>
#1      AuthenticationNotifier.setSuccessLoginInfo (package:immich_mobile/providers/authentication.provider.dart:182)
<asynchronous suspension>
#2      LoginForm.build.login (package:immich_mobile/widgets/forms/login_form.dart:156)
<asynchronous suspension>

2024-06-03 16:00:15.912165 | INFO     | ApiService           | Pinging server with response code 200 |
2024-06-03 15:58:48.356878 | SEVERE   | AuthenticationNotifier | Unable to get user information from the server. |
2024-06-03 15:58:48.356714 | SEVERE   | AuthenticationNotifier | Error getting user information from the server [API EXCEPTION] | ApiException 404: {"message":"Cannot GET /api/users/me","error":"Not Found","statusCode":404} |
#0      UsersApi.getMyUser (package:openapi/api/users_api.dart:179)
<asynchronous suspension>
#1      AuthenticationNotifier.setSuccessLoginInfo (package:immich_mobile/providers/authentication.provider.dart:182)
<asynchronous suspension>
#2      LoginForm.build.login (package:immich_mobile/widgets/forms/login_form.dart:156)
<asynchronous suspension>

2024-06-03 15:58:48.224141 | INFO     | ApiService           | Pinging server with response code 200 |
2024-06-03 15:39:36.022990 | SEVERE   | AuthenticationNotifier | Unable to get user information from the server. |
2024-06-03 15:39:36.022817 | SEVERE   | AuthenticationNotifier | Error getting user information from the server [API EXCEPTION] | ApiException 404: {"message":"Cannot GET /api/users/me","error":"Not Found","statusCode":404} |
#0      UsersApi.getMyUser (package:openapi/api/users_api.dart:179)
<asynchronous suspension>
#1      AuthenticationNotifier.setSuccessLoginInfo (package:immich_mobile/providers/authentication.provider.dart:182)
<asynchronous suspension>
#2      LoginForm.build.login (package:immich_mobile/widgets/forms/login_form.dart:156)
<asynchronous suspension>

2024-06-03 15:39:35.900831 | INFO     | ApiService           | Pinging server with response code 200 |
2024-06-03 15:39:05.078632 | SEVERE   | AuthenticationNotifier | Unable to get user information from the server. |
2024-06-03 15:39:05.078486 | SEVERE   | AuthenticationNotifier | Error getting user information from the server [API EXCEPTION] | ApiException 404: {"message":"Cannot GET /api/users/me","error":"Not Found","statusCode":404} |
#0      UsersApi.getMyUser (package:openapi/api/users_api.dart:179)
<asynchronous suspension>
#1      AuthenticationNotifier.setSuccessLoginInfo (package:immich_mobile/providers/authentication.provider.dart:182)
<asynchronous suspension>
#2      LoginForm.build.login (package:immich_mobile/widgets/forms/login_form.dart:156)
<asynchronous suspension>

2024-06-03 15:39:04.933217 | INFO     | ApiService           | Pinging server with response code 200 |
2024-06-03 15:38:47.351839 | INFO     | ApiService           | Pinging server with response code 200 |
fyfrey commented 5 months ago

@Deathproof76 sorry for the inconvenience. it seems the Github build pipeline does not provide the APKs of the PR but the result on merging the PR into main. Main branch is currently incompatible with the released server. So you would need to build the PR yourself to test it :/

Deathproof76 commented 5 months ago

That might take a while for me to figure out how to do that ๐Ÿ˜… I'll try when I find the time. Still, thank you for trying.

Deathproof76 commented 5 months ago

@fyfrey I don't have any git or programming knowledge so it may have been a crude trial and error based method, but I think I've got it. I basically downloaded the v1.105.1 tagged repo and modified the mobile/lib/services/asset.service.dart file with the pr #9919 changes. Had to change the pubspec.yaml by upping intl: ^0.19.0. (Don't ask my why, there were errors, never done that before. I tried my best๐Ÿ˜…)

I then build the apk via mobile>flutter build apk --debug.

Due to

FAILURE: Build failed with an exception.

* What went wrong:
A problem was found with the configuration of task ':app:packageRelease' (type 'PackageApplication').
  - In plugin 'com.android.internal.version-check' type 'com.android.build.gradle.tasks.PackageApplication' property 'signingConfigData.signingConfigData.storeFile' specifies file 'C:\immich\mobile\android\key.jks' which doesn't exist.

Which seems to relate to signing the app for a playstore release ๐Ÿคทโ€โ™‚๏ธ

And well, in general it works as before and still spits out similar errors like before but different specifically in relation to chunking. Sorry it's late in my timezone.

Here's the mobile log Immich_log_2024-06-03T22_52_05.227853.log

Here is a link to the debug apk (used a throwaway mail for privacy). I hope that it helps in debugging the issue. Maybe @wardwygaerts @jarelllama and @xs2usun can give it a try.

Mod edit: Link to APK removed

1cae5971-4b2a-4404-83c8-79dc62d5a295

fyfrey commented 5 months ago

@Deathproof76 wow! That's quite an achievement for no git or programming experience! The new log is super helpful. (I've removed the link to the build APK so others don't install "random" APKs from the Internet, that was my reason for not building/sharing an APK of my PR...)

The log shows it fetches asset data in over 6000 chunks, so it could load up to 6,000,000 remote assets and then fails (it needs to get all successfully to continue...). How many assets are on the server for your account? Probably less xD I have the feeling it never stops for some reason (I'll look into this). The operating system then aborts all network connections for the process because it's doing too many requests in quick succession. This is also shown by the websockets getting closed.

I have a hunch these non-stop requests occur due to duplicates on the server. Do you use the external library feature? It allows having duplicates...

Deathproof76 commented 5 months ago

I absolutely understand that random debug apks from internet strangers are a divisive issue๐Ÿ˜„ My account has approximately 46k assets, photos and videos combined. I don't have any external libraries. Everything uploaded directly from phone, webui or via immich-go (must have been almost a year ago, from a google photos takeout, basically via immich-cli).

The only duplicate adjacent occurrence seems to be due to the reuploaded duplicates and therefore blocked files from the mobile app. Because of the change of device id as a result of the different install route. I can't see any actual duplicates in the webui or mobile:

0fc516e4-2060-42ca-aa93-a6a0a918fe50

Another thing I noticed when I try a db query like:

SELECT "users"."email", "assets"."type", COUNT(*) FROM "assets"
  JOIN "users" ON "assets"."ownerId" = "users"."id"
  GROUP BY "assets"."type", "users"."email"
  ORDER BY "users"."email";

I can see:

11 my@account.com IMAGE 43022
12 my@account.com VIDEO 6250

Under Server Stats it's:

Photos 43.022  
Videos 3.650

Which does seem to indicate a discrepancy. But it's similar with my wifes account. She has more than double the amount of videos shown in the db query in comparison to Server Stats (maybe transcoded previews?). But her account works without a problem.