[Bug]: Saved Media Progress showing double entries #2672

Open
opened 2026-02-20 02:20:51 -05:00 by deekerman · 12 comments
Owner

Originally created by @matieke on GitHub (Jan 16, 2025).

What happened?

When going through a user's Saved Media Progress there are double entries.
Users showing this issue are using Plappa 1.5.0
image

What did you expect to happen?

Saved Media Progress should only show 1 entry for each book.

Steps to reproduce the issue

  1. Start listening to an audiobook on a Plappa client for >1m
  2. Saved Media Progress starts showing double entries

Audiobookshelf version

2.17.7

How are you running audiobookshelf?

Docker

What OS is your Audiobookshelf server hosted from?

Linux

If the issue is being seen in the UI, what browsers are you seeing the problem on?

Chrome

Logs

No response

Additional Notes

  • There are no actual double audiobook files
  • Purging all cache does not do anything
Originally created by @matieke on GitHub (Jan 16, 2025). ### What happened? When going through a user's Saved Media Progress there are double entries. Users showing this issue are using Plappa 1.5.0 ![image](https://github.com/user-attachments/assets/661a14fb-f6d7-4ef2-b39f-31ef0eee0e1f) ### What did you expect to happen? Saved Media Progress should only show 1 entry for each book. ### Steps to reproduce the issue 1. Start listening to an audiobook on a Plappa client for >1m 2. Saved Media Progress starts showing double entries ### Audiobookshelf version 2.17.7 ### How are you running audiobookshelf? Docker ### What OS is your Audiobookshelf server hosted from? Linux ### If the issue is being seen in the UI, what browsers are you seeing the problem on? Chrome ### Logs _No response_ ### Additional Notes - There are no actual double audiobook files - Purging all cache does not do anything
Author
Owner

@advplyr commented on GitHub (Jan 17, 2025):

Can you check the created timestamps for those to see if they are the same time? That would indicate a race condition

@advplyr commented on GitHub (Jan 17, 2025): Can you check the created timestamps for those to see if they are the same time? That would indicate a race condition
Author
Owner

@matieke commented on GitHub (Jan 30, 2025):

I checked a couple where progress was at 0% but still had a duplicate entry.
"The eyes are the best part" audiobook for example has only 1 listening session logged of 36s.

Image

Now even triple entries are being created also with only 1 listening session.
All occurrences of this bug present as 1 entry having the correct progress percentage while the duplicates stay at 0%

Image

@matieke commented on GitHub (Jan 30, 2025): I checked a couple where progress was at 0% but still had a duplicate entry. "The eyes are the best part" audiobook for example has only 1 listening session logged of 36s. ![Image](https://github.com/user-attachments/assets/d1eb9f3d-b68e-4ec4-8614-20591d1107ca) Now even triple entries are being created also with only 1 listening session. All occurrences of this bug present as 1 entry having the correct progress percentage while the duplicates stay at 0% ![Image](https://github.com/user-attachments/assets/cf83a9d9-fd9d-4463-8cc7-6b46a641d2dc)
Author
Owner

@advplyr commented on GitHub (Jan 30, 2025):

Can you check the created timestamps for those to see if they are the same time? That would indicate a race condition

@advplyr commented on GitHub (Jan 30, 2025): Can you check the created timestamps for those to see if they are the same time? That would indicate a race condition
Author
Owner

@matieke commented on GitHub (Jan 30, 2025):

I'm not entirely sure what you mean, taking "The eyes are the best part" as an example. The user only has 1 timestamp in the listening history.

Image

There are no duplicate timestamps, only duplicate entries in the saved media progress

@matieke commented on GitHub (Jan 30, 2025): I'm not entirely sure what you mean, taking "The eyes are the best part" as an example. The user only has 1 timestamp in the listening history. ![Image](https://github.com/user-attachments/assets/f7a0365e-4fa6-45b4-ad39-b03e5d12d942) There are no duplicate timestamps, only duplicate entries in the saved media progress
Author
Owner

@advplyr commented on GitHub (Jan 30, 2025):

Image

@advplyr commented on GitHub (Jan 30, 2025): ![Image](https://github.com/user-attachments/assets/81f95d59-93ad-4a4c-bf15-0deb01418b10)
Author
Owner

@matieke commented on GitHub (Jan 30, 2025):

Yes, they all have the exact same timestamp.

@matieke commented on GitHub (Jan 30, 2025): Yes, they all have the exact same timestamp.
Author
Owner

@akriegshauser commented on GitHub (Feb 25, 2025):

My related issue #4038 does not duplicate media progress until the book is complete.

@akriegshauser commented on GitHub (Feb 25, 2025): My related issue #4038 does not duplicate media progress until the book is complete.
Author
Owner

@argash commented on GitHub (Feb 26, 2025):

Just want to note that I am also seeing this behavior. I'm currently on 2.19.5 and the current version of Plappa. I will note it doesn't seem to happen every time though. Happy to help provide logs or anything else you might want me to test.

Image

@argash commented on GitHub (Feb 26, 2025): Just want to note that I am also seeing this behavior. I'm currently on 2.19.5 and the current version of Plappa. I will note it doesn't seem to happen every time though. Happy to help provide logs or anything else you might want me to test. ![Image](https://github.com/user-attachments/assets/aecfd01b-b9b8-488f-897e-388c74c467b1)
Author
Owner

@akriegshauser commented on GitHub (Feb 26, 2025):

I have some more insight into this - I listen on both Plappa and through ABS on Chrome.

Today I started another book with my first listening session of it being on Plappa, and when I went to pick it up on ABS, I noticed a duplicate entry appear (this contradicts what I was previously reporting). I have since finished the book and it is now stuck in "Continue Listening" as well, showing a progress entry at 0% and one at 100%.

To test this theory, I have since started another book with my first listening session being on ABS via Chrome, and I currently do not see any duplicated events.

Below are all the logs generated relating to this book. Not sure if relevant as the logs may be related to playback, but I did not request Plappa download the book files to my device. These coincide with when I was listening to the book via Plappa, and no entries show for my ABS listening in the afternoon.

2025-02-26 08:59:38.238

INFO

[LibraryItemController] User "akriegshauser" requested download for item "Livesuit" file at "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b"

2025-02-26 08:59:38.240

INFO

[LibraryItemController] Downloaded file "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b"

2025-02-26 08:59:38.270

INFO

[LibraryItemController] User "akriegshauser" requested download for item "Livesuit" file at "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b"

2025-02-26 08:59:38.298

ERROR

[LibraryItemController] Failed to download file "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" Error: Request aborted at onaborted (/node_modules/express/lib/response.js:1052:15) at Immediate.<anonymous> (/node_modules/express/lib/response.js:1094:9) at process.processImmediate (node:internal/timers:483:21) { code: 'ECONNABORTED' }

2025-02-26 08:59:38.318

INFO

[LibraryItemController] User "akriegshauser" requested download for item "Livesuit" file at "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b"

2025-02-26 08:59:38.356

INFO

[LibraryItemController] Downloaded file "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b"

2025-02-26 08:59:38.520

INFO

[LibraryItemController] User "akriegshauser" requested download for item "Livesuit" file at "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b"

2025-02-26 08:59:40.398

ERROR

[LibraryItemController] Failed to download file "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" Error: Request aborted at onaborted (/node_modules/express/lib/response.js:1052:15) at Immediate.<anonymous> (/node_modules/express/lib/response.js:1094:9) at process.processImmediate (node:internal/timers:483:21) { code: 'ECONNABORTED' }

2025-02-26 09:01:36.728

INFO

[LibraryItemController] User "akriegshauser" requested download for item "Livesuit" file at "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b"

2025-02-26 09:01:36.926

ERROR

[LibraryItemController] Failed to download file "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" Error: Request aborted at onaborted (/node_modules/express/lib/response.js:1052:15) at Immediate.<anonymous> (/node_modules/express/lib/response.js:1094:9) at process.processImmediate (node:internal/timers:483:21) { code: 'ECONNABORTED' }

2025-02-26 09:03:12.056

INFO

[LibraryItemController] User "akriegshauser" requested download for item "Livesuit" file at "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b"

2025-02-26 09:03:12.188

ERROR

[LibraryItemController] Failed to download file "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" Error: Request aborted at onaborted (/node_modules/express/lib/response.js:1052:15) at Immediate.<anonymous> (/node_modules/express/lib/response.js:1094:9) at process.processImmediate (node:internal/timers:483:21) { code: 'ECONNABORTED' }

2025-02-26 09:04:47.384

INFO

[LibraryItemController] User "akriegshauser" requested download for item "Livesuit" file at "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b"

2025-02-26 09:04:47.512

ERROR

[LibraryItemController] Failed to download file "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" Error: Request aborted at onaborted (/node_modules/express/lib/response.js:1052:15) at Immediate.<anonymous> (/node_modules/express/lib/response.js:1094:9) at process.processImmediate (node:internal/timers:483:21) { code: 'ECONNABORTED' }

2025-02-26 09:06:22.973

INFO

[LibraryItemController] User "akriegshauser" requested download for item "Livesuit" file at "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b"

2025-02-26 09:06:23.240

ERROR

[LibraryItemController] Failed to download file "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" Error: Request aborted at onaborted (/node_modules/express/lib/response.js:1052:15) at Immediate.<anonymous> (/node_modules/express/lib/response.js:1094:9) at process.processImmediate (node:internal/timers:483:21) { code: 'ECONNABORTED' }

2025-02-26 09:07:57.991

INFO

[LibraryItemController] User "akriegshauser" requested download for item "Livesuit" file at "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b"

2025-02-26 09:07:58.151

ERROR

[LibraryItemController] Failed to download file "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" Error: Request aborted at onaborted (/node_modules/express/lib/response.js:1052:15) at Immediate.<anonymous> (/node_modules/express/lib/response.js:1094:9) at process.processImmediate (node:internal/timers:483:21) { code: 'ECONNABORTED' }

2025-02-26 09:09:33.284

INFO

[LibraryItemController] User "akriegshauser" requested download for item "Livesuit" file at "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b"

2025-02-26 09:09:33.427

ERROR

[LibraryItemController] Failed to download file "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" Error: Request aborted at onaborted (/node_modules/express/lib/response.js:1052:15) at Immediate.<anonymous> (/node_modules/express/lib/response.js:1094:9) at process.processImmediate (node:internal/timers:483:21) { code: 'ECONNABORTED' }

2025-02-26 09:11:08.613

INFO

[LibraryItemController] User "akriegshauser" requested download for item "Livesuit" file at "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b"

2025-02-26 09:11:08.798

ERROR

[LibraryItemController] Failed to download file "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" Error: write EPIPE at WriteWrap.onWriteComplete [as oncomplete] (node:internal/stream_base_commons:95:16) { errno: -32, code: 'EPIPE', syscall: 'write' }

2025-02-26 09:12:43.918

INFO

[LibraryItemController] User "akriegshauser" requested download for item "Livesuit" file at "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b"

2025-02-26 09:12:44.041

ERROR

[LibraryItemController] Failed to download file "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" Error: Request aborted at onaborted (/node_modules/express/lib/response.js:1052:15) at Immediate.<anonymous> (/node_modules/express/lib/response.js:1094:9) at process.processImmediate (node:internal/timers:483:21) { code: 'ECONNABORTED' }

2025-02-26 09:14:19.339

INFO

[LibraryItemController] User "akriegshauser" requested download for item "Livesuit" file at "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b"

2025-02-26 09:14:19.549

ERROR

[LibraryItemController] Failed to download file "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" Error: Request aborted at onaborted (/node_modules/express/lib/response.js:1052:15) at Immediate.<anonymous> (/node_modules/express/lib/response.js:1094:9) at process.processImmediate (node:internal/timers:483:21) { code: 'ECONNABORTED' }

2025-02-26 09:38:23.249

INFO

[LibraryItemController] User "akriegshauser" requested download for item "Livesuit" file at "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b"

2025-02-26 09:38:23.516

ERROR

[LibraryItemController] Failed to download file "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" Error: Request aborted at onaborted (/node_modules/express/lib/response.js:1052:15) at Immediate.<anonymous> (/node_modules/express/lib/response.js:1094:9) at process.processImmediate (node:internal/timers:483:21) { code: 'ECONNABORTED' }

2025-02-26 09:41:54.938

INFO

[LibraryItemController] User "akriegshauser" requested download for item "Livesuit" file at "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b"

2025-02-26 09:41:54.940

INFO

[LibraryItemController] Downloaded file "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b"

2025-02-26 09:41:55.611

INFO

[LibraryItemController] User "akriegshauser" requested download for item "Livesuit" file at "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b"

2025-02-26 09:41:55.707

ERROR

[LibraryItemController] Failed to download file "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" Error: Request aborted at onaborted (/node_modules/express/lib/response.js:1052:15) at Immediate.<anonymous> (/node_modules/express/lib/response.js:1094:9) at process.processImmediate (node:internal/timers:483:21) { code: 'ECONNABORTED' }

2025-02-26 09:41:55.731

INFO

[LibraryItemController] User "akriegshauser" requested download for item "Livesuit" file at "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b"

2025-02-26 09:41:55.745

INFO

[LibraryItemController] Downloaded file "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b"

2025-02-26 09:41:56.309

INFO

[LibraryItemController] User "akriegshauser" requested download for item "Livesuit" file at "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b"

2025-02-26 09:41:57.547

ERROR

[LibraryItemController] Failed to download file "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" Error: write EPIPE at WriteWrap.onWriteComplete [as oncomplete] (node:internal/stream_base_commons:95:16) { errno: -32, code: 'EPIPE', syscall: 'write' }
@akriegshauser commented on GitHub (Feb 26, 2025): I have some more insight into this - I listen on both Plappa and through ABS on Chrome. Today I started another book with my first listening session of it being on Plappa, and when I went to pick it up on ABS, I noticed a duplicate entry appear (this contradicts what I was previously reporting). I have since finished the book and it is now stuck in "Continue Listening" as well, showing a progress entry at 0% and one at 100%. To test this theory, I have since started another book with my first listening session being on ABS via Chrome, and I currently do not see any duplicated events. Below are all the logs generated relating to this book. Not sure if relevant as the logs may be related to playback, but I did not request Plappa download the book files to my device. These coincide with when I was listening to the book via Plappa, and no entries show for my ABS listening in the afternoon. ``` 2025-02-26 08:59:38.238 INFO [LibraryItemController] User "akriegshauser" requested download for item "Livesuit" file at "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" 2025-02-26 08:59:38.240 INFO [LibraryItemController] Downloaded file "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" 2025-02-26 08:59:38.270 INFO [LibraryItemController] User "akriegshauser" requested download for item "Livesuit" file at "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" 2025-02-26 08:59:38.298 ERROR [LibraryItemController] Failed to download file "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" Error: Request aborted at onaborted (/node_modules/express/lib/response.js:1052:15) at Immediate.<anonymous> (/node_modules/express/lib/response.js:1094:9) at process.processImmediate (node:internal/timers:483:21) { code: 'ECONNABORTED' } 2025-02-26 08:59:38.318 INFO [LibraryItemController] User "akriegshauser" requested download for item "Livesuit" file at "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" 2025-02-26 08:59:38.356 INFO [LibraryItemController] Downloaded file "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" 2025-02-26 08:59:38.520 INFO [LibraryItemController] User "akriegshauser" requested download for item "Livesuit" file at "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" 2025-02-26 08:59:40.398 ERROR [LibraryItemController] Failed to download file "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" Error: Request aborted at onaborted (/node_modules/express/lib/response.js:1052:15) at Immediate.<anonymous> (/node_modules/express/lib/response.js:1094:9) at process.processImmediate (node:internal/timers:483:21) { code: 'ECONNABORTED' } 2025-02-26 09:01:36.728 INFO [LibraryItemController] User "akriegshauser" requested download for item "Livesuit" file at "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" 2025-02-26 09:01:36.926 ERROR [LibraryItemController] Failed to download file "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" Error: Request aborted at onaborted (/node_modules/express/lib/response.js:1052:15) at Immediate.<anonymous> (/node_modules/express/lib/response.js:1094:9) at process.processImmediate (node:internal/timers:483:21) { code: 'ECONNABORTED' } 2025-02-26 09:03:12.056 INFO [LibraryItemController] User "akriegshauser" requested download for item "Livesuit" file at "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" 2025-02-26 09:03:12.188 ERROR [LibraryItemController] Failed to download file "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" Error: Request aborted at onaborted (/node_modules/express/lib/response.js:1052:15) at Immediate.<anonymous> (/node_modules/express/lib/response.js:1094:9) at process.processImmediate (node:internal/timers:483:21) { code: 'ECONNABORTED' } 2025-02-26 09:04:47.384 INFO [LibraryItemController] User "akriegshauser" requested download for item "Livesuit" file at "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" 2025-02-26 09:04:47.512 ERROR [LibraryItemController] Failed to download file "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" Error: Request aborted at onaborted (/node_modules/express/lib/response.js:1052:15) at Immediate.<anonymous> (/node_modules/express/lib/response.js:1094:9) at process.processImmediate (node:internal/timers:483:21) { code: 'ECONNABORTED' } 2025-02-26 09:06:22.973 INFO [LibraryItemController] User "akriegshauser" requested download for item "Livesuit" file at "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" 2025-02-26 09:06:23.240 ERROR [LibraryItemController] Failed to download file "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" Error: Request aborted at onaborted (/node_modules/express/lib/response.js:1052:15) at Immediate.<anonymous> (/node_modules/express/lib/response.js:1094:9) at process.processImmediate (node:internal/timers:483:21) { code: 'ECONNABORTED' } 2025-02-26 09:07:57.991 INFO [LibraryItemController] User "akriegshauser" requested download for item "Livesuit" file at "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" 2025-02-26 09:07:58.151 ERROR [LibraryItemController] Failed to download file "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" Error: Request aborted at onaborted (/node_modules/express/lib/response.js:1052:15) at Immediate.<anonymous> (/node_modules/express/lib/response.js:1094:9) at process.processImmediate (node:internal/timers:483:21) { code: 'ECONNABORTED' } 2025-02-26 09:09:33.284 INFO [LibraryItemController] User "akriegshauser" requested download for item "Livesuit" file at "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" 2025-02-26 09:09:33.427 ERROR [LibraryItemController] Failed to download file "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" Error: Request aborted at onaborted (/node_modules/express/lib/response.js:1052:15) at Immediate.<anonymous> (/node_modules/express/lib/response.js:1094:9) at process.processImmediate (node:internal/timers:483:21) { code: 'ECONNABORTED' } 2025-02-26 09:11:08.613 INFO [LibraryItemController] User "akriegshauser" requested download for item "Livesuit" file at "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" 2025-02-26 09:11:08.798 ERROR [LibraryItemController] Failed to download file "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" Error: write EPIPE at WriteWrap.onWriteComplete [as oncomplete] (node:internal/stream_base_commons:95:16) { errno: -32, code: 'EPIPE', syscall: 'write' } 2025-02-26 09:12:43.918 INFO [LibraryItemController] User "akriegshauser" requested download for item "Livesuit" file at "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" 2025-02-26 09:12:44.041 ERROR [LibraryItemController] Failed to download file "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" Error: Request aborted at onaborted (/node_modules/express/lib/response.js:1052:15) at Immediate.<anonymous> (/node_modules/express/lib/response.js:1094:9) at process.processImmediate (node:internal/timers:483:21) { code: 'ECONNABORTED' } 2025-02-26 09:14:19.339 INFO [LibraryItemController] User "akriegshauser" requested download for item "Livesuit" file at "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" 2025-02-26 09:14:19.549 ERROR [LibraryItemController] Failed to download file "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" Error: Request aborted at onaborted (/node_modules/express/lib/response.js:1052:15) at Immediate.<anonymous> (/node_modules/express/lib/response.js:1094:9) at process.processImmediate (node:internal/timers:483:21) { code: 'ECONNABORTED' } 2025-02-26 09:38:23.249 INFO [LibraryItemController] User "akriegshauser" requested download for item "Livesuit" file at "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" 2025-02-26 09:38:23.516 ERROR [LibraryItemController] Failed to download file "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" Error: Request aborted at onaborted (/node_modules/express/lib/response.js:1052:15) at Immediate.<anonymous> (/node_modules/express/lib/response.js:1094:9) at process.processImmediate (node:internal/timers:483:21) { code: 'ECONNABORTED' } 2025-02-26 09:41:54.938 INFO [LibraryItemController] User "akriegshauser" requested download for item "Livesuit" file at "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" 2025-02-26 09:41:54.940 INFO [LibraryItemController] Downloaded file "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" 2025-02-26 09:41:55.611 INFO [LibraryItemController] User "akriegshauser" requested download for item "Livesuit" file at "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" 2025-02-26 09:41:55.707 ERROR [LibraryItemController] Failed to download file "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" Error: Request aborted at onaborted (/node_modules/express/lib/response.js:1052:15) at Immediate.<anonymous> (/node_modules/express/lib/response.js:1094:9) at process.processImmediate (node:internal/timers:483:21) { code: 'ECONNABORTED' } 2025-02-26 09:41:55.731 INFO [LibraryItemController] User "akriegshauser" requested download for item "Livesuit" file at "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" 2025-02-26 09:41:55.745 INFO [LibraryItemController] Downloaded file "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" 2025-02-26 09:41:56.309 INFO [LibraryItemController] User "akriegshauser" requested download for item "Livesuit" file at "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" 2025-02-26 09:41:57.547 ERROR [LibraryItemController] Failed to download file "/audiobooks/James S. A. Corey/Livesuit/Livesuit.m4b" Error: write EPIPE at WriteWrap.onWriteComplete [as oncomplete] (node:internal/stream_base_commons:95:16) { errno: -32, code: 'EPIPE', syscall: 'write' } ```
Author
Owner

@nichwall commented on GitHub (Feb 26, 2025):

The aborted downloads seems to be related to Plappa, as reported in https://github.com/advplyr/audiobookshelf/issues/3803

@nichwall commented on GitHub (Feb 26, 2025): The aborted downloads seems to be related to Plappa, as reported in https://github.com/advplyr/audiobookshelf/issues/3803
Author
Owner

@Vito0912 commented on GitHub (Apr 12, 2025):

I came across this issue, because of Discord.

I don't know if it is related (and I did not check every related issue, so sorry if this has been brought up), but after I checked https://github.com/advplyr/audiobookshelf/issues/4196, I noticed Plappa uses an unconventional method for syncing progress:

https://github.com/advplyr/audiobookshelf/issues/4196#issuecomment-2797497694

Specifically, instead of syncing /sync, the following endpoints are used:

  • /api/session/local
  • /api/me/progress/batch/update
  • /api/authorize

The first two endpoints is used to sync the session. I can imagine there is a race condition that creates double entries since both requests are executed at the same time.

Additionally, the third endpoint is also executed every sync (approximately every 10 seconds), loading all media data each time. This might also create a race condition (bc loading while updating (?)). I am actually surprised that nobody has complained about data usage for Plappa, as the user endpoint gets quite large very quickly (at least I found no issue).

However, I can imagine that all of this creates some race condition or similar issue. The developer said he will refine the API endpoints eventually (no ETA) but still we should investigate further.

@Vito0912 commented on GitHub (Apr 12, 2025): I came across this issue, because of Discord. I don't know if it is related (and I did not check every related issue, so sorry if this has been brought up), but after I checked https://github.com/advplyr/audiobookshelf/issues/4196, I noticed Plappa uses an unconventional method for syncing progress: https://github.com/advplyr/audiobookshelf/issues/4196#issuecomment-2797497694 Specifically, instead of syncing `/sync`, the following endpoints are used: - `/api/session/local` - `/api/me/progress/batch/update` - `/api/authorize` The first two endpoints is used to sync the session. I can imagine there is a race condition that creates double entries since both requests are executed at the same time. Additionally, the third endpoint is also executed every sync (approximately every 10 seconds), loading all media data each time. This might also create a race condition (bc loading while updating (?)). I am actually surprised that nobody has complained about data usage for Plappa, as the user endpoint gets quite large very quickly (at least I found no issue). However, I can imagine that all of this creates some race condition or similar issue. The developer said he will refine the API endpoints eventually (no ETA) but still we should investigate further.
Author
Owner

@Vito0912 commented on GitHub (Jun 19, 2025):

I found the cause.
It is indeed a race condition that happens when /api/session/local and /api/me/progress/batch/update are used at the same time, because both create a new progress.
I cannot say if or when this will be fixed on the ABS site. Unfortunately, I do not know enough about the backend (regarding the model schema / SQL lite) right now to fix this myself.

But at least I can tell how to avoid it :): To avoid this problem for now, start the book using another app or the web, wait for the first sync (for the official apps, this should take about 20 seconds), and then listen with Plappa. The issue should only occur if there is no progress and you start the first progress with plappa

Tagging @LeoKlaus so you are informed.

@Vito0912 commented on GitHub (Jun 19, 2025): I found the cause. It is indeed a race condition that happens when `/api/session/local` and `/api/me/progress/batch/update` are used at the same time, because both create a new progress. I cannot say if or when this will be fixed on the ABS site. Unfortunately, I do not know enough about the backend (regarding the model schema / SQL lite) right now to fix this myself. But at least I can tell how to avoid it :): To avoid this problem for now, start the book using another app or the web, wait for the first sync (for the official apps, this should take about 20 seconds), and then listen with Plappa. The issue should only occur if there is no progress and you start the first progress with plappa Tagging @LeoKlaus so you are informed.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/audiobookshelf#2672
No description provided.