Skip to content

constantly failing on the reupload/metadata update with io: read/write on closed pipe during the later stages of file #1271

Closed

Description

@jspatel

I tried to upload google takeout zip file and it was failing due to missing metadata for some of the files. It only uploaded partial set of files from the zip. So I reset the immich server and used the from-folder option was able to upload all files. I was able to upload over 1TB of data successfully.
However later I realized that there is an option for -u in the from-google-photos as well. So I tried using that and reupload the existing zip file so it can populate the missing metadata without uploading all files again. It works up to some extend, however it fails later in the stage after processing some random set of files.

I am running immich-go version 0.31.0 on MacOS Darwin Arm64 platform. My immich-server is running 2.4.1. I have set the concurrent-tasks = 1 to avoid any server side issue but it still fails.

Following is the example of failure. This only fails after having many successful API completed. eg.

2025-12-31 22:09:02 INF server has duplicate file=takeout-20251222T185233Z-3-002:Takeout/Google Photos/Art /IMG_1203.JPG
2025-12-31 22:09:02 INF metadata updated file=takeout-20251222T185233Z-3-002:Takeout/Google Photos/Art /IMG_1203.JPG
2025-12-31 22:09:02 INF server has duplicate file=takeout-20251222T185233Z-3-002:Takeout/Google Photos/Art /IMG_1205.JPG
2025-12-31 22:09:02 INF metadata updated file=takeout-20251222T185233Z-3-002:Takeout/Google Photos/Art /IMG_1205.JPG
2025-12-31 22:09:02 INF server has duplicate file=takeout-20251222T185233Z-3-002:Takeout/Google Photos/Art /IMG_1206.JPG
2025-12-31 22:09:02 INF metadata updated file=takeout-20251222T185233Z-3-002:Takeout/Google Photos/Art /IMG_1206.JPG
2025-12-31 22:09:02 INF server has duplicate file=takeout-20251222T185233Z-3-002:Takeout/Google Photos/Art /IMG_1207.JPG
2025-12-31 22:09:02 INF metadata updated file=takeout-20251222T185233Z-3-002:Takeout/Google Photos/Art /IMG_1207.JPG
2025-12-31 22:09:02 INF server has duplicate file=takeout-20251222T185233Z-3-002:Takeout/Google Photos/Art /IMG_1208.JPG
2025-12-31 22:09:02 INF metadata updated file=takeout-20251222T185233Z-3-002:Takeout/Google Photos/Art /IMG_1208.JPG
2025-12-31 22:09:02 INF server has duplicate file=takeout-20251222T185233Z-3-002:Takeout/Google Photos/Art /IMG_1211.JPG
2025-12-31 22:09:02 INF metadata updated file=takeout-20251222T185233Z-3-002:Takeout/Google Photos/Art /IMG_1211.JPG
2025-12-31 22:09:02 INF server has duplicate file=takeout-20251222T185233Z-3-002:Takeout/Google Photos/Art /IMG_1212.JPG
2025-12-31 22:09:02 INF metadata updated file=takeout-20251222T185233Z-3-002:Takeout/Google Photos/Art /IMG_1212.JPG
2025-12-31 22:09:02 INF server has duplicate file=takeout-20251222T185233Z-3-002:Takeout/Google Photos/Art /IMG_1213.HEIC
2025-12-31 22:09:02 INF metadata updated file=takeout-20251222T185233Z-3-002:Takeout/Google Photos/Art /IMG_1213.HEIC
2025-12-31 22:09:02 INF server has duplicate file=takeout-20251222T185233Z-3-002:Takeout/Google Photos/Art /IMG_1225.JPG
2025-12-31 22:09:02 INF metadata updated file=takeout-20251222T185233Z-3-002:Takeout/Google Photos/Art /IMG_1225.JPG
2025-12-31 22:09:02 WRN discarded local duplicate file=takeout-20251222T185233Z-3-002:Takeout/Google Photos/Art /IMG_0988.JPG reason=already present in input as
 unknown
2025-12-31 22:09:02 INF server has duplicate file=takeout-20251222T185233Z-3-002:Takeout/Google Photos/Art /IMG_3081.JPG
2025-12-31 22:09:02 INF metadata updated file=takeout-20251222T185233Z-3-002:Takeout/Google Photos/Art /IMG_3081.JPG
2025-12-31 22:09:02 INF server has duplicate file=takeout-20251222T185233Z-3-002:Takeout/Google Photos/Art /IMG_5141.HEIC
2025-12-31 22:09:02 INF metadata updated file=takeout-20251222T185233Z-3-002:Takeout/Google Photos/Art /IMG_5141.HEIC
2025-12-31 22:09:02 INF server has duplicate file=takeout-20251222T185233Z-3-002:Takeout/Google Photos/Art /IMG_5186.HEIC
2025-12-31 22:09:02 INF metadata updated file=takeout-20251222T185233Z-3-002:Takeout/Google Photos/Art /IMG_5186.HEIC
2025-12-31 22:09:02 INF server has duplicate file=takeout-20251222T185233Z-3-002:Takeout/Google Photos/Art /IMG_5256.HEIC
2025-12-31 22:09:02 INF metadata updated file=takeout-20251222T185233Z-3-002:Takeout/Google Photos/Art /IMG_5256.HEIC
2025-12-31 22:09:02 INF server has duplicate file=takeout-20251222T185233Z-3-002:Takeout/Google Photos/Art /IMG_5268.JPG
2025-12-31 22:09:02 INF metadata updated file=takeout-20251222T185233Z-3-002:Takeout/Google Photos/Art /IMG_5268.JPG
2025-12-31 22:09:02 ERR server error file=takeout-20251222T185233Z-3-002:Takeout/Google Photos/Art /IMG_0542.JPG error=io: read/write on closed pipe
2025-12-31 22:09:02 ERR Error err=io: read/write on closed pipe
2025-12-31 22:09:02 ERR server error file=takeout-20251222T185233Z-3-002:Takeout/Google Photos/Art /IMG_0989.JPG error=AssetUpload, POST, https://immich-server/api/assets
Post "https://immich-server/api/assets": io: read/write on closed pipe

2025-12-31 22:09:02 ERR server error file=takeout-20251222T185233Z-3-002:Takeout/Google Photos/Art /IMG_0479.JPG error=AssetUpload, POST, https://immich-server/api/assets
Post "https://immich-server/api/assets": io: read/write on closed pipe

I also enabled api-trace to get more details.

Method: POST, URL: https://immich-server/api/assets
Timestamp: 2025-12-31T22:09:01.795-08:00
Headers:
  Content-Type: multipart/form-data; boundary=93c8f5b3cade130883901fc6cbaf64d16d4ab4518ddfbe712dce6e539999
  X-Api-Key: *********
  Accept: application/json
  X-Immich-Checksum: 1wvlp3hi0NirDiT+ukaeuuJFQT8=
Body:
  [Multipart]
  --- Part 1 ---
  Content-Disposition: form-data; name="fileCreatedAt"
  Content:
    2024-04-25T16:48:43.000Z
  --- Part 2 ---
  Content-Disposition: form-data; name="fileModifiedAt"
  Content:
    2026-01-01T06:09:01.794Z
  --- Part 3 ---
  Content-Disposition: form-data; name="isReadOnly"
  Content:
    false
  --- Part 4 ---
  Content-Disposition: form-data; name="deviceAssetId"
  Content:
    IMG_0542.JPG-1076161
  --- Part 5 ---
  Content-Disposition: form-data; name="deviceId"
  Content:
    MacStudio-M1-Max.local
  --- Part 6 ---
  Content-Disposition: form-data; name="assetType"
  Content:
    image
  --- Part 7 ---
  Content-Disposition: form-data; name="isFavorite"
  Content:
    false
  --- Part 8 ---
  Content-Disposition: form-data; name="fileExtension"
  Content:
    .JPG
  --- Part 9 ---
  Content-Disposition: form-data; name="duration"
  Content:
    00:00:00.000000
  --- Part 10 ---
  Content-Disposition: form-data; name="visibility"
  Content:
    timeline
  --- Part 11 ---
  Content-Disposition: form-data; name="assetData"; filename="IMG_0542.JPG"
  Content-Type: application/octet-stream
  Error reading part data: unexpected EOF
  Error reading part 11: multipart: NextPart: EOF
+---- response  ---------------------------------------------------
Timestamp: 2025-12-31T22:09:02.794-08:00
Duration: 999ms
Status: 200 OK: 200
Headers:
  Etag: "42-UWN2RfeaDCYSXBMijLlIGFAG59Q"
  Vary: Accept-Encoding
  X-Immich-Cid: osjqytbm
  X-Powered-By: Express
  Content-Length: 66
  Content-Type: application/json; charset=utf-8
  Date: Thu, 01 Jan 2026 06:09:02 GMT
Body:
  [JSON]
  {"status":"duplicate","id":"9d440e44-5722-4453-a045-2bc7a75119da"}

Failed API request/response log


/---- client #1 request  #119 ---------------------------------------------------
Method: POST, URL: https://immich-server/api/assets
Timestamp: 2025-12-31T22:09:01.82-08:00
Headers:
  X-Api-Key: *******
  Accept: application/json
  X-Immich-Checksum: QLb7bHUA82PceLGMFvrRE9Qfhi0=
  Content-Type: multipart/form-data; boundary=02ee280d50ec344a2292f8aaabea7c4e933e14e0a2e13c0813e4b01752fd
Body:
  [Multipart]
  --- Part 1 ---
  Content-Disposition: form-data; name="deviceAssetId"
  Content:
    IMG_0400.JPG-912826
  --- Part 2 ---
  Content-Disposition: form-data; name="fileCreatedAt"
  Content:
    2026-01-01T06:09:01.820Z
  --- Part 3 ---
  Content-Disposition: form-data; name="fileModifiedAt"
  Content:
    2026-01-01T06:09:01.820Z
  --- Part 4 ---
  Content-Disposition: form-data; name="isFavorite"
  Content:
    false
  --- Part 5 ---
  Content-Disposition: form-data; name="fileExtension"
  Content:
    .JPG
  --- Part 6 ---
  Content-Disposition: form-data; name="isReadOnly"
  Content:
    false
  --- Part 7 ---
  Content-Disposition: form-data; name="visibility"
  Content:
    timeline
  --- Part 8 ---
  Content-Disposition: form-data; name="deviceId"
  Content:
    MacStudio-M1-Max.local
  --- Part 9 ---
  Content-Disposition: form-data; name="assetType"
  Content:
    image
  --- Part 10 ---
  Content-Disposition: form-data; name="duration"
  Content:
    00:00:00.000000
  --- Part 11 ---
  Content-Disposition: form-data; name="assetData"; filename="IMG_0400.JPG"
  Content-Type: application/octet-stream
  Error reading part data: unexpected EOF
  Error reading part 11: multipart: NextPart: EOF
+---- response  ---------------------------------------------------
Timestamp: 2025-12-31T22:09:02.797-08:00
Duration: 978ms
Error: io: read/write on closed pipe
\---- client #1 request  #119 ---------------------------------------------------

Why does it fail after some files? Is there a way to import metadata only?

I am running immich-server behing traefik proxy. I don't see any logs on the immich-server side or treafik side.

Activity

  1. changed the title [-]constantly failing on the reupload[/-] [+]constantly failing on the reupload/metadata update with `io: read/write on closed pipe` during the later stages of file[/+] on Jan 1, 2026
  2. simulot commented on Jan 1, 2026

    @simulot
    Owner

    The error just says that the source is closed, but without the root cause.
    Proxies are well known to interfere with immich-go.
    But anything else can cause the problem:

    • takeout files on a distant folder
    • couldflare tunnels
    • ...

    Can you simplify your setup in order to let immich-go talking directly to the immich server?

  3. jspatel commented on Jan 1, 2026

    @jspatel
    Author

    Here is my setup immich-go -----> Internet ----> VPS Hosting Immich. So there is no other network level proxy involved here. I am using traefik via docker compose to setup immich-server. With this setup I was able to upload over 1TB of data (with from-folder option) few days back and now I am trying to update metadata (using from-google-photos) and it is failing.

    I have over 500 google takeout files sized ~2GB each. During the from-folder based options, when I tried
    immich-go upload from-folder takeout*.zip This failed after 3-4 files and started to give errors because server was overwhelmed. So I wrote a script to upload one file at a time and delay of 30 seconds in between. That worked fine and uploaded over 1TB of data.

    Now I am trying to run from-google-photos for a single file and it is still failing.

    $ immich-go upload --api-trace from-google-photos -u  takeout-20251222T185233Z-3-002.zip
    . _ _  _ _ . _|_     _  _
    || | || | ||(_| | ─ (_)(_)
                v 0.31.0 _)
    
    Log file: ~/Library/Caches/immich-go/immich-go_2025-12-31_22-07-37.log
    Check the API-TRACE file: ~/Library/Caches/immich-go/immich-go_2025-12-31_22-07-37.trace.log
    Immich read 100%, Assets found: 765, Upload errors: 11, Uploaded 0
    
    Asset Tracking Report:
    =====================
    Total Assets:        765  (2.0 GB)
      Processed:          85  (112.7 MB)
      Discarded:           3  (2.0 MB)
      Errors:             11  (10.1 MB)
      Pending:           666  (1.9 GB)
    
    ⚠️  WARNING: 666 assets did not reach a final state!
    
    
    Event Report:
    =============
    
    Discovery (Assets):
      discovered image                   :     721  (966.4 MB)
      discovered video                   :      44  (1.0 GB)
    
    Discovery (Non-Assets):
      discovered sidecar                 :     911  (655.9 KB)
      discovered unknown file            :       5  (19.1 MB)
      discovered unsupported file        :       1  (3 B)
    
    Asset Lifecycle (PROCESSED):
      metadata updated                   :      85  (112.7 MB)
    
    Asset Lifecycle (DISCARDED):
      server has duplicate               :      85  (112.7 MB)
      discarded local duplicate          :       3  (2.0 MB)
    
    Asset Lifecycle (ERROR):
      server error                       :      11
    
    Processing Events:
      associated metadata                :     616
      missing metadata                   :     149
      stacked                            :      12
    
    Error: io: read/write on closed pipe
    
    

    Keep in mind all files are already uploaded earlier when I performed from-folder operation.

    I have set the concurrent-tasks = 1 for simplicity and see if it still fails and it did. Does immich-go make too many metadata calls etc.. causing the failure?

  4. jspatel commented on Jan 1, 2026

    @jspatel
    Author

    I was able to solve the problem using following middleware in traefik for the immich-server

            immich-buffering:
                buffering:
                    maxRequestBodyBytes: 0 # No limit on request body size
                    memRequestBodyBytes: 104857600 # 100MB in memory
                    maxResponseBodyBytes: 0 # No limit on response body size
                    memResponseBodyBytes: 104857600 # 100MB in memory
                    retryExpression: "IsNetworkError() && Attempts() < 3"

    And for the docker compose file

    immich-server:
    ....
            labels:
    ....
                - "traefik.http.routers.immich.middlewares=immich-buffering@file"
    ....

    However I still don't get on what is that immich-go is doing which cause it to fail at traefik layer. Is it too many request, or too large of a request etc.. I didn't see this issue while doing the upload.

    I haven't look at the immich-go source code, but I think there should be an option to have a retry mechanism with time based backoff for the failure scenario as such.

    I also noticed that it makes lot of calls to POST /api/search/metadata to process files. I have over 70K+ images/photos. I noticed that it makes the same API call with different page index with size of 1000 each. {"page":12,"size":1000,"withExif":true,"visibility":"timeline","order":"asc"} . I honestly don't know if this is the most efficient way of querying and updating the metadata for maybe 100 files in a zip.

    This has to be repeated for each file I process and it takes about 90 seconds to get all 70 APIs done for the metadata. The actual processing is very limited at that point as this is just metadata only update.

  5. jspatel commented on Jan 2, 2026

    @jspatel
    Author

    As an update, I tried with the above settings and uploaded more files on the server and still got intermittent failures. I have to retry the same file again to finish the upload for the remaining file.

    Most of my takeout folders have larger portion is occupied by videos over images. However I noticed when I have lots of images in a single takeout file, it fails more often. So if I have 2GB takeout with all images, it is bound to fail again and again.

    I have to keep retry it few times to complete the upload. For each retry Server error counter would go down as well as counter for the WARNING: XXX assets did not reach a final stage! message.

  6. dartmoordunbar commented on Jan 15, 2026

    @dartmoordunbar

    Similar issue, this is an upload from local google docs folder. Immich-Go is running in a container on the same machine as immich and the files are mapped to a local disk.

    2026-01-15 10:28:39 INF tagged file=drive:Takeout/Google Photos/Photos from 2025/IMG_1985.JPG tag=drive
    2026-01-15 10:28:39 INF uploaded successfully file=drive:Takeout/Google Photos/Photos from 2025/IMG_1918.MOV
    2026-01-15 10:28:40 INF metadata updated file=drive:Takeout/Google Photos/Photos from 2025/IMG_1918.MOV
    2026-01-15 10:28:40 INF tagged file=drive:Takeout/Google Photos/Photos from 2025/IMG_1918.MOV tag=drive
    2026-01-15 10:28:40 ERR server error file=drive:Takeout/Google Photos/Photos from 2025/IMG_1922.MOV error=AssetUpload, POST, http://192.168.1.233:2283/api/assets
    Post "http://192.168.1.233:2283/api/assets": write tcp 172.17.0.10:46010->192.168.1.233:2283: use of closed network connection
    
    io: read/write on closed pipe
    2026-01-15 10:28:40 ERR Error err=AssetUpload, POST, http://192.168.1.233:2283/api/assets
    Post "http://192.168.1.233:2283/api/assets": write tcp 172.17.0.10:46010->192.168.1.233:2283: use of closed network connection
    
    io: read/write on closed pipe
    2026-01-15 10:28:40 ERR server error file=drive:Takeout/Google Photos/Photos from 2025/IMG_1961.PNG error=CopyAsset, PUT, http://192.168.1.233:2283/api/assets/copy
    
    2026-01-15 10:28:40 ERR server error file=drive:Takeout/Google Photos/Photos from 2025/IMG_2001.JPG error=AssetUpload, POST, http://192.168.1.233:2283/api/assets
    
    2026-01-15 10:28:40 ERR server error file=drive:Takeout/Google Photos/Photos from 2025/IMG_1998.JPG error=AssetUpload, POST, http://192.168.1.233:2283/api/assets
    
    2026-01-15 10:28:40 ERR Error err=AssetUpload, POST, http://192.168.1.233:2283/api/assets
    
    2026-01-15 10:28:40 INF stacked file=drive:Takeout/Google Photos/Photos from 2025/IMG_1961(1).PNG
    2026-01-15 10:28:40 INF stacked file=drive:Takeout/Google Photos/Photos from 2025/IMG_1961.PNG
    2026-01-15 10:28:40 ERR Can't create stack error=createStack, POST, http://192.168.1.233:2283/api/stacks
    
    2026-01-15 10:28:40 ERR server error file=drive:Takeout/Google Photos/Photos from 2025/IMG_1999.JPG error=AssetUpload, POST, http://192.168.1.233:2283/api/assets
    
    2026-01-15 10:28:40 ERR Error err=AssetUpload, POST, http://192.168.1.233:2283/api/assets
    
    2026-01-15 10:28:40 ERR server error file=drive:Takeout/Google Photos/Photos from 2025/IMG_1983.JPG error=AssetUpload, POST, http://192.168.1.233:2283/api/assets
    
    2026-01-15 10:28:40 ERR Error err=AssetUpload, POST, http://192.168.1.233:2283/api/assets
    
    2026-01-15 10:28:40 ERR Error err=CopyAsset, PUT, http://192.168.1.233:2283/api/assets/copy
    
    2026-01-15 10:28:40 ERR server error file=drive:Takeout/Google Photos/Photos from 2025/IMG_1997.JPG error=AssetUpload, POST, http://192.168.1.233:2283/api/assets
    
    2026-01-15 10:28:40 ERR Error err=AssetUpload, POST, http://192.168.1.233:2283/api/assets
    
    2026-01-15 10:28:40 ERR server error file=drive:Takeout/Google Photos/Photos from 2025/IMG_1986.JPG error=AssetUpload, POST, http://192.168.1.233:2283/api/assets
    
    2026-01-15 10:28:40 ERR Error err=AssetUpload, POST, http://192.168.1.233:2283/api/assets
    
    2026-01-15 10:28:40 ERR Error err=AssetUpload, POST, http://192.168.1.233:2283/api/assets
    
    2026-01-15 10:28:40 ERR server error file=drive:Takeout/Google Photos/Photos from 2025/IMG_1908.MOV error=AssetUpload, POST, http://192.168.1.233:2283/api/assets
    
    io: read/write on closed pipe
    2026-01-15 10:28:40 ERR Error err=AssetUpload, POST, http://192.168.1.233:2283/api/assets
    
    io: read/write on closed pipe
    2026-01-15 10:28:40 ERR server error file=drive:Takeout/Google Photos/Photos from 2025/IMG_1920.MOV error=AssetUpload, POST, http://192.168.1.233:2283/api/assets
    
    io: read/write on closed pipe
    2026-01-15 10:28:40 ERR Error err=AssetUpload, POST, http://192.168.1.233:2283/api/assets
    
    io: read/write on closed pipe
    2026-01-15 10:28:40 ERR server error file=drive:Takeout/Google Photos/Photos from 2025/IMG_2002.JPG error=AssetUpload, POST, http://192.168.1.233:2283/api/assets
    
    io: read/write on closed pipe
    2026-01-15 10:28:40 ERR Error err=AssetUpload, POST, http://192.168.1.233:2283/api/assets
    
    io: read/write on closed pipe
    2026-01-15 10:28:40 ERR server error file=drive:Takeout/Google Photos/Photos from 2025/IMG_2004(1).PNG error=AssetUpload, POST, http://192.168.1.233:2283/api/assets
    
    io: read/write on closed pipe
    2026-01-15 10:28:41 ERR server error file=drive:Takeout/Google Photos/Photos from 2025/IMG_1992.MOV error=AssetUpload, POST, http://192.168.1.233:2283/api/assets
    
    io: read/write on closed pipe
    2026-01-15 10:28:41 ERR Error err=AssetUpload, POST, http://192.168.1.233:2283/api/assets
    
    io: read/write on closed pipe
    2026-01-15 10:28:41 ERR server error file=drive:Takeout/Google Photos/Photos from 2025/IMG_2004.PNG error=AssetUpload, POST, http://192.168.1.233:2283/api/assets
    
    io: read/write on closed pipe
    2026-01-15 10:28:41 INF stacked file=drive:Takeout/Google Photos/Photos from 2025/IMG_2004(1).PNG
    2026-01-15 10:28:41 INF stacked file=drive:Takeout/Google Photos/Photos from 2025/IMG_2004.PNG
    2026-01-15 10:28:41 ERR Error err=AssetUpload, POST, http://192.168.1.233:2283/api/assets
    
    io: read/write on closed pipe
    2026-01-15 10:28:41 INF created album album=USA, Caribbean and Bahamas 2025 assets=29
    2026-01-15 10:28:41 INF created album album=Tresco assets=4
    2026-01-15 10:28:41 INF updated album album=J assets=15
    2026-01-15 10:28:41 INF created album album=Flagler Beach assets=13
    2026-01-15 10:28:41 INF updated tag tag=drive assets=21
    2026-01-15 10:28:41 INF Immich Job command sent resume=thumbnailGeneration
    2026-01-15 10:28:41 INF Immich Job command sent resume=metadataExtraction
    2026-01-15 10:28:41 INF Immich Job command sent resume=videoConversion
    2026-01-15 10:28:41 INF Immich Job command sent resume=faceDetection
    2026-01-15 10:28:41 INF Immich Job command sent resume=smartSearch
    2026-01-15 10:28:41 INF 
    2026-01-15 10:28:41 INF Asset Tracking Report:
    2026-01-15 10:28:41 INF =====================
    2026-01-15 10:28:41 INF Total Assets:      38821  (185.1 GB)
    2026-01-15 10:28:41 INF   Processed:       33044  (144.3 GB)
    2026-01-15 10:28:41 INF   Discarded:         285  (630.1 MB)
    2026-01-15 10:28:41 INF   Errors:             14  (2.0 GB)
    2026-01-15 10:28:41 INF   Pending:          5478  (38.2 GB)
    2026-01-15 10:28:41 INF 
    2026-01-15 10:28:41 INF ⚠️  WARNING: 5478 assets did not reach a final state!
    2026-01-15 10:28:41 INF 
    2026-01-15 10:28:41 INF 
    2026-01-15 10:28:41 INF Event Report:
    2026-01-15 10:28:41 INF =============
    2026-01-15 10:28:41 INF 
    2026-01-15 10:28:41 INF Discovery (Assets):
    2026-01-15 10:28:41 INF   discovered image                   :   37663  (98.7 GB)
    2026-01-15 10:28:41 INF   discovered video                   :    1158  (86.5 GB)
    2026-01-15 10:28:41 INF 
    2026-01-15 10:28:41 INF Discovery (Non-Assets):
    2026-01-15 10:28:41 INF   discovered sidecar                 :   38756  (24.2 MB)
    2026-01-15 10:28:41 INF   discovered unknown file            :     207  (445.6 MB)
    2026-01-15 10:28:41 INF   discovered unsupported file        :      64  (827 B)
    2026-01-15 10:28:41 INF 
    2026-01-15 10:28:41 INF Asset Lifecycle (PROCESSED):
    2026-01-15 10:28:41 INF   uploaded successfully              :    3355  (12.9 GB)
    2026-01-15 10:28:41 INF   server asset upgraded              :      16  (34.9 MB)
    2026-01-15 10:28:41 INF   metadata updated                   :   33183  (131.7 GB)
    2026-01-15 10:28:41 INF 
    2026-01-15 10:28:41 INF Asset Lifecycle (DISCARDED):
    2026-01-15 10:28:41 INF   server has duplicate               :   29673  (131.4 GB)
    2026-01-15 10:28:41 INF   discarded filtered                 :      51  (120.5 MB)
    2026-01-15 10:28:41 INF   discarded local duplicate          :      79  (174.4 MB)
    2026-01-15 10:28:41 INF 
    2026-01-15 10:28:41 INF Asset Lifecycle (ERROR):
    2026-01-15 10:28:41 INF   server error                       :      14
    2026-01-15 10:28:41 INF 
    2026-01-15 10:28:41 INF Processing Events:
    2026-01-15 10:28:41 INF   associated metadata                :   38821
    2026-01-15 10:28:41 INF   stacked                            :     379
    2026-01-15 10:28:41 INF   added to album                     :     111
    2026-01-15 10:28:41 INF   tagged                             :    3371
    2026-01-15 10:28:41 INF 
    2026-01-15 10:30:43 ERR Some errors have occurred. Look at the log file for details
    
  7. speters commented on Jan 17, 2026

    @speters

    I have run into - what I think is - the same problem on current main branch immich-go.
    The problem does not occur on a version built from current develop branch.

  8. thrillhouse2342 commented on Jan 17, 2026

    @thrillhouse2342

    I believe I am experiencing the same issue. I tried to move from main to develop however unfortunately it's still crashing.

    Details:
    1.) Using Immich-Go to move images from one folder (old inactive immich) to a new immich installation on the same local HDD drive
    2.) Attempted changing concurrent tasks all the way down to 1 and it still crashed
    3.) Attempted using admin API key so Immich jobs could be paused just in case.
    4.) Attempted using develop branch instead of main branch like previously suggested however I'm still experiencing the same issues with the develop branch.

    Post "http://10.1.80.10:2283/api/assets": write tcp 10.1.80.10:56286->10.1.80.10:2283: write: connection reset by peer
    
    io: read/write on closed pipe
    2026-01-17 08:21:17 ERR Error err=AssetUpload, POST, http://10.1.80.10:2283/api/assets
    Post "http://10.1.80.10:2283/api/assets": write tcp 10.1.80.10:56286->10.1.80.10:2283: write: connection reset by peer
    
    io: read/write on closed pipe
    2026-01-17 08:21:17 ERR server error file=alex:2018/2018-07-20/b31f664b-826b-4311-b439-f7cbed2dd121.png error=AssetUpload, POST, http://10.1.80.10:2283/api/>
    
    2026-01-17 08:21:17 ERR Error err=AssetUpload, POST, http://10.1.80.10:2283/api/assets
    
    2026-01-17 08:21:17 ERR server error file=alex:2018/2018-07-11/e472ef8d-bd61-409d-b5e5-b21791cc9793.mp4 error=AssetUpload, POST, http://10.1.80.10:2283/api/>
    
    io: read/write on closed pipe
    2026-01-17 08:21:17 ERR server error file=alex:2018/2018-07-11/b43949ae-538e-48b0-afc2-e1c1f837c1a5.png error=AssetUpload, POST, http://10.1.80.10:2283/api/>
    
    2026-01-17 08:21:17 ERR Error err=AssetUpload, POST, http://10.1.80.10:2283/api/assets
    
    io: read/write on closed pipe
    2026-01-17 08:21:17 ERR Error err=AssetUpload, POST, http://10.1.80.10:2283/api/assets
    
    
    
  9. Antoine1983 commented on Jan 18, 2026

    @Antoine1983
  10. Jakeler commented on Jan 30, 2026

    @Jakeler

    Just got the error using from-folder with the (source) folder on a network share, especially if it's 100% busy (Gbit Ethernet).
    If I understand correctly the problem is reading from the file system, not the connection to immich for upload. With folders on local SSD storage or ramdisk I never get the error.
    Tested it countless times with main/v0.31.0, develop and branches with my changes and can't detect a correlation. Seems to be external factors/load related, sometimes it fails repeatably unless I wait a few seconds.

  11. emelendez89 commented on Feb 27, 2026

    @emelendez89

    Well... we gather here friends together with the same issue :(

    All immich services, immich-go and takeout-*.zip folders in the same Debian WSL2 VM. I believe it's choking on resources.

    Reducing the --concurrent-tasks or stopping the ML docker compose stop immich-machine-learning doesn't help. It's something else, need to check the logs of the Redis and Database containers. If I find the culprit I'll share some details. I'm also pending create a C:\Users\<you>\.wslconfig file to define my WSL2 resources.

  12. leonbohn commented on Mar 1, 2026

    @leonbohn

    I had a similar problem when importing to an instance on a VPS. Reducing the number of concurrent tasks did not fix the problems on its own. But combined with a longer duration before a timeout is triggered led to a successful, albeit painfully slow import. Did you already try setting --client-timeout to 60m or even higher?

  13. alternativesurfer commented on Mar 16, 2026

    @alternativesurfer

    Similar issue:

    │2026-03-16 11:22:09 ERR server error file=20250725-Google Photos:07112024- Mission San Luis Rey/IMG_7408.HEIC error=AssetUpload, POST, http://10.60.1.4:2283/api/assets │
    │Post "http://10.60.1.4:2283/api/assets": write tcp 192.168.50.201:48130->10.60.1.4:2283: write: connection timed out │
    │ │
    │io: read/write on closed pipe │
    │2026-03-16 11:22:09 DBG upload asset file.OriginalFileName=IMG_7408.HEIC file.FileName=20250725-Google Photos:07112024- Mission San Luis Rey/IMG_7408.HEIC file.ID= │
    │file.FileDate=2025-07-24 09:30:28 file.Description= file.FileSize=1588540 file.CaptureDate=2024-07-11 18:57:50 file.Trashed=false file.Archived=false file.FromPartner=false │
    │file.Favorite=false file.Stars=0 file.Latitude=33.xxxxx file.Longitude=-117.xxxxx │
    │2026-03-16 11:22:09 ERR Error err=AssetUpload, POST, http://10.60.1.4:2283/api/assets │
    │Post "http://10.60.1.4:2283/api/assets": write tcp 192.168.50.201:48130->10.60.1.4:2283: write: connection timed out │
    │ │
    │io: read/write on closed pipe

    All local to rule out any funny stuff with proxies/etc
    Source is a mounted disk.

    import:
    immich-go upload from-google-photos --server=http://10.60.1.4:2283 --manage-burst=Stack --concurrent-tasks=1 --client-timeout=120m --on-errors=continue --session-tag --tag="2025-05-20 phone dump" --pause-immich-jobs=true --log-file=/mnt/import/import.log --log-level=DEBUG --admin-api-key=ANAPIKEY --api-key=ANOTHERAPIKEY "/mnt/import/20250725-Google Photos"

    logs show nothing more than what is listed above

  14. sztupy commented on May 16, 2026

    @sztupy

    Having the same issue importing video files from a local SSD to an immich running locally, also on a (different) SSD, so there should be neither a problem of network, nor disk speed at all.

    However mp4 video files still fail occasionally, even after multiple retries, even if I select the failing files to be uploaded one-by-one, and even if the file was already uploaded and is therefore a duplicate.

    Size of the videos are around 200-300MB so I would assume nothing major.

    Trying with something like -concurrent-tasks=1 --client-timeout=120m also doesn't work.

    Uploading the files manually through the web interface works fine, but then I have to manually fix the album metadata.

  15. 7robertodantas commented on Jun 25, 2026

    @7robertodantas

    One thing that helped me was not trusting --pause-immich-jobs=true. Instead, I manually triggered each job and paused before starting the import. That generally made it work. I also set the concurrent tasks to 1.

    immich-go upload from-google-photos \
      --server=https://immich \
      --api-key=REDACTED \
      --manage-raw-jpeg=StackCoverRaw \
      --concurrent-tasks=1 \
      --pause-immich-jobs=true \
      --manage-burst=Stack \
    /volume1/archive/takeout-*.zip
    
  16. bakelite105 commented on Jul 6, 2026

    @bakelite105

    One thing that helped me was not trusting --pause-immich-jobs=true. Instead, I manually triggered each job and paused before starting the import. That generally made it work. I also set the concurrent tasks to 1.

    immich-go upload from-google-photos \
      --server=https://immich \
      --api-key=REDACTED \
      --manage-raw-jpeg=StackCoverRaw \
      --concurrent-tasks=1 \
      --pause-immich-jobs=true \
      --manage-burst=Stack \
    /volume1/archive/takeout-*.zip
    

    This works. Processing speed is much slower but still acceptable. However, there's still Some errors occurred (the amount is much less than before, in my case, it's 1). According to the logs, the file that has caused the error is an iPhone screen recording video, which named RPReplay_Final1626707824.mp4 and sized 457.1 MBit.

    The logs say,

    ERR Error err=io: read/write on closed pipe
    │2026-07-06 22:15:29 ERR server error file=HaveEXIF:202107/RPReplay_Final1626707824.mp4 error=AssetUpload, POST, http://localhost:2283/api/assets
    │Post "http://localhost:2283/api/assets": io: read/write on closed pipe
    │io: read/write on closed pipe
    │2026-07-06 22:15:29 ERR Error err=AssetUpload, POST, http://localhost:2283/api/assets
    │Post "http://localhost:2283/api/assets": io: read/write on closed pipe
    │io: read/write on closed pipe

    ...

    │2026-07-06 22:15:29 INF Asset Tracking Report:
    │2026-07-06 22:15:29 INF =====================
    │2026-07-06 22:15:29 INF Total Assets: 3406 (21.5 GB)
    │2026-07-06 22:15:29 INF Processed: 3403 (20.9 GB)
    │2026-07-06 22:15:29 INF Discarded: 0 (0 B)
    │2026-07-06 22:15:29 INF Errors: 2 (457.1 MB)
    │2026-07-06 22:15:29 INF Pending: 1 (152.2 MB)
    │2026-07-06 22:15:29 INF
    │2026-07-06 22:15:29 INF ⚠️ WARNING: 1 assets did not reach a final state!

    And worth noticing, even I upload this file individually, still fail. I eventually found this file has existed on the server, but there's another server-existed file process successfully (skipped, cause no error). Strange.

    BTW, I upload from local SSD to local server.

  17. smurfmckenzie commented on Sep 13, 2026

    @smurfmckenzie

    Using these parmeters is clearly helping: https://github.com/simulot/immich-go/blob/main/docs/examples.md#conservative-upload-slow-network

    This did it for me! Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions