iOS App: multiple errors in the log
Hi guys,
I just finished uploading all my iCloud media to my immich instance (running on a Hetzner VPS behind a nginx Reverse Proxy and Cloudflare, currently my iPhone connects directly to immich bypassing Cloudflare and nginx). Immich version was updated to v1.125.7, iOS App also updated to the latest version.
In general, immich keeps uploading the last 4-6 assets, without ever finishing them - actually I find them in immich when accessing it using a browser. In the app I find those erros which I have not been able to get rid of.
I will post them as a comment to this message.
In addition, there is one warning telling me "Ignored 4 duplicate assets on device".
I want to roll-out immich to my wife's phone, so I really want to get rid of this behaviour first. Do you have any idea where I could start?
39 Replies
:wave: Hey @andreas,
Thanks for reaching out to us. Please carefully read this message and follow the recommended actions. This will help us be more effective in our support effort and leave more time for building Immich :immich:.
References
- Container Logs:
docker compose logs
docs
- Container Status: docker ps -a
docs
- Reverse Proxy: https://immich.app/docs/administration/reverse-proxy
- Code Formatting https://support.discord.com/hc/en-us/articles/210298617-Markdown-Text-101-Chat-Formatting-Bold-Italic-Underline#h_01GY0DAKGXDEHE263BCAYEGFJAChecklist
I have...
1. :ballot_box_with_check: verified I'm on the latest release(note that mobile app releases may take some time).
2. :ballot_box_with_check: read applicable release notes.
3. :ballot_box_with_check: reviewed the FAQs for known issues.
4. :ballot_box_with_check: reviewed Github for known issues.
5. :ballot_box_with_check: tried accessing Immich via local ip (without a custom reverse proxy).
6. :ballot_box_with_check: uploaded the relevant information (see below).
7. :ballot_box_with_check: tried an incognito window, disabled extensions, cleared mobile app cache, logged out and back in, different browsers, etc. as applicable
(an item can be marked as "complete" by reacting with the appropriate number)
Information
In order to be able to effectively help you, we need you to provide clear information to show what the problem is. The exact details needed vary per case, but here is a list of things to consider:
- Your docker-compose.yml and .env files.
- Logs from all the containers and their status (see above).
- All the troubleshooting steps you've tried so far.
- Any recent changes you've made to Immich or your system.
- Details about your system (both software/OS and hardware).
- Details about your storage (filesystems, type of disks, output of commands like
fdisk -l
and df -h
).
- The version of the Immich server, mobile app, and other relevant pieces.
- Any other information that you think might be relevant.
Please paste files and logs with proper code formatting, and especially avoid blurry screenshots.
Without the right information we can't work out what the problem is. Help us help you ;)
If this ticket can be closed you can use the /close
command, and re-open it later if needed.GitHub
immich-app immich · Discussions
Explore the GitHub Discussions forum for immich-app immich. Discuss code, ask questions & collaborate with the developer community.
FAQ | Immich
User
GitHub
Issues · immich-app/immich
High performance self-hosted photo and video management solution. - Issues · immich-app/immich
PlatformDispatcher - Catch all
Null check operator used on a null value
#0 AssetResponseDto.fromJson (package:openapi/model/asset_response_dto.dart:292)
#1 AssetResponseDto.listFromJson (package:openapi/model/asset_response_dto.dart:324)
#2 AlbumResponseDto.fromJson (package:openapi/model/album_response_dto.dart:198)
#3 ApiClient.fromJson (package:openapi/api_client.dart:204)
#4 ApiClient.deserialize (package:openapi/api_client.dart:158)
<asynchronous suspension>
#5 AlbumsApi.getAlbumInfo (package:openapi/api/albums_api.dart:278)
<asynchronous suspension>
#6 ApiRepository.checkNull (package:immich_mobile/repositories/api.repository.dart:5)
<asynchronous suspension>
#7 AlbumApiRepository.get (package:immich_mobile/repositories/album_api.repository.dart:22)
<asynchronous suspension>
#8 SyncService._addAlbumFromServer (package:immich_mobile/services/sync.service.dart:452)
<asynchronous suspension>
#9 diffSortedLists (package:immich_mobile/utils/diff.dart:34)
<asynchronous suspension>
#10 SyncService._syncRemoteAlbumsToDb (package:immich_mobile/services/sync.service.dart:323)
<asynchronous suspension>
#11 AsyncMutex.run.<anonymous closure> (package:immich_mobile/utils/async_mutex.dart:15)
<asynchronous suspension>
Error while getting remote assets
Null check operator used on a null value
#0 AssetResponseDto.fromJson (package:openapi/model/asset_response_dto.dart:292)
#1 ApiClient.fromJson (package:openapi/api_client.dart:260)
#2 ApiClient.fromJson.<anonymous closure> (package:openapi/api_client.dart:653)
#3 MappedIterable.elementAt (dart:_internal/iterable.dart:385)
#4 ListIterator.moveNext (dart:_internal/iterable.dart:354)
#5 new _List._ofEfficientLengthIterable (dart:core-patch/array.dart:163)
#6 new _List.of (dart:core-patch/array.dart:128)
#7 new List.of (dart:core-patch/array_patch.dart:39)
#8 ListIterable.toList (dart:_internal/iterable.dart:224)
#9 ApiClient.fromJson (package:openapi/api_client.dart:654)
#10 ApiClient.deserialize (package:openapi/api_client.dart:158)
<asynchronous suspension>
#11 SyncApi.getFullSyncForUser (package:openapi/api/sync_api.dart:108)
<asynchronous suspension>
#12 AssetService._getRemoteAssets (package:immich_mobile/services/asset.service.dart:145)
<asynchronous suspension>
#13 SyncService._syncRemoteAssetsForUser (package:immich_mobile/services/sync.service.dart:267)
<asynchronous suspension>
#14 SyncService._syncRemoteAssetsFull (package:immich_mobile/services/sync.service.dart:257)
<asynchronous suspension>
#15 SyncService.syncRemoteAssetsToDb.<anonymous closure> (package:immich_mobile/services/sync.service.dart:92)
<asynchronous suspension>
#16 AsyncMutex.run.<anonymous closure> (package:immich_mobile/utils/async_mutex.dart:15)
<asynchronous suspension>
Cloudflare has a 100MB limit, are these assets larger than that?
Ah sorry I see you bypassed it with direct IP
The errors are from the iOS app I assume? I'll bow out because they mean nothing to me as I don't have experience there 🙃
Yes, i am bypassing cloudflare for the initial update. And also yes, those are the log entries shown in the ios app. 🙂
Mh there is one addition: it seems that plenty of my assets are showing the „not synced to cloud“ icon, while still being available using the browser. It seems like that’s the case for 30%-ish of the assets. 😦
Wdym your iPhone connects “direct to immich
You port forwarded 2283..?
I am using the public ip and the port 2283 (opened in the firewall) instead of the domain pointed to the server through Cloudflare and the reverse proxy.
So: http://111.111.111.111:2283/api
Ok. So just so you know your entire photo library just got transmitted in plaintext over the internet
That’s, really not great
As well as your immich password / API key
Yes, i wanted to bypass the cloudflare file size limit for the initial upload and wasn’t able to come up with another idea. 😦
VPN? Reverse proxy?
Yeah will fix this as soon as i was able to fix those issues i am having. 🙂
There is a malform value because of a bad date in the fileNodifiedAt column
So we need to remove that from the database
I see... do you happen to have any guidance on how to find the value and how to delete it?
Yes from the terminal, you can run the following commands
Then run
and
The first query returns 11074 results (having around 9500 assets)
can you copy some of the result please
the second query returns the same amount of results
hmm strange one sec
oh I got the wrong query
Ah ok. this returns one result

ok let's remove that
then you should be good
remove directly in the db?
yes
ok done, will check it out! thanks for your support! is this an error in my meta data somewhere?
correct, however we should handle this case and not error out on the mobile app
this problem start surfacing after we switch the database underlaying query engine in this release
mh the app still reported those errors after logout/login.
I found 31 results for fileModifiedAt
should i delete those too?
seems fixed now! awesome! 🙂 Now i am left with the "ignored 4 duplicate assets on device" warning. Thanks again for your support
👍
mh now the app tries to upload a file which just is not there at all... can i somehow delete the cache or something on the iphone? its looking for a picutre with the name "..." and created on "2020 10 04", but i have no asset created on that date.
that is a placeholder, if it appear to be uploading, and no return result. It perhaps an UI bug or related to reverse proxy/CF limitation. Do you use any of the two?
Currently i am directly connected to immich without CF or Reverse Proxy. Now the sync screen shows 1 remaining asset. The asset information is showing details from the last upload, though it’s not uploading whatever might be missing.

It will always show the last file uploaded there
Mh i can not figure out what’s happening with the sync. Meanwhile, another error is thrown:
ApiException 400: HTTP connection failed: GET /partners (Inner exception: ClientException: Bad file descriptor).
Any idea?
ApiException 400: HTTP connection failed: GET /partners (Inner exception: ClientException: Bad file descriptor, uri=http://xxxxxx:2283/api/partners?direction=shared-by)
#0 IOClient.send (package:http/src/io_client.dart:156)
<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 PartnersApi.getPartners (package:openapi/api/partners_api.dart:102)
<asynchronous suspension>
#4 ApiRepository.checkNull (package:immich_mobile/repositories/api.repository.dart:5)
<asynchronous suspension>
#5 PartnerApiRepository.getAll (package:immich_mobile/repositories/partner_api.repository.dart:22)
<asynchronous suspension>
#6 UserService.getUsersFromServer (package:immich_mobile/services/user.service.dart:63)
<asynchronous suspension>
#7 UserService.refreshUsers (package:immich_mobile/services/user.service.dart:102)
<asynchronous suspension>
#8 AlbumService.refreshRemoteAlbums (package:immich_mobile/services/album.service.dart:171)
<asynchronous suspension>
#9 AlbumNotifier.refreshRemoteAlbums (package:immich_mobile/providers/album/album.provider.dart:35)
<asynchronous suspension>
Is the server on the latest version?
Yes it is. Updated to 1.125.7 a couple of days ago.
Can you try signout and sign back in?
i’ll try. so far only the „one duplicate is ignored“ message showed up.
that can be ignored, sounds like it is working again
yes looks better. the app still says there is one asset to sync and keeps spinning the „sync icon“ forever. the log says all is up to date though.