-
Notifications
You must be signed in to change notification settings - Fork 71
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
"No bytes were copied", derivative generation broken #1896
Comments
|
In case this point of reference helps: I have not seen this happen. I'm on PHP 7.4, but not Drupal 9. |
Not touching Ansible; however, it appears we've encountered it (or something extremely) similar. Appears to be related to interactions between chunked encoding and how PHP's being run:
So, Crayfish generates the derivative, and streams it back to the connector, the derivative connector |
@adam-vessey Thanks for the links; the handling (or lack of handling) of transfer-encoding: chunked in Apache via FPM/FastCGI seems very relevant. However, in my VM, I updated to Apache/2.4.48 and added |
Hmm, do I'd actually need to run Apache as a proxy to spool the chunked transfer and generate a valid content-length. Might be easier to try nginx instead... |
Problem needs to be addressed in ISLE, maybe |
I resolved this on my local VM by reverting the switch to PHP FPM in favour of Apache 2 Handler.
|
@dannylamb is going to look into this for us, Whitman and JHU, likely next week. The resulting fix will be made in the community version of ISLE as well as the individual projects in question. |
I'm still getting this in a fresh playbook. Is 'switching to PHP FPM' a solution that could be baked into the playbook? |
We ran into and (unfortunately) didn't find this issue for a couple days. My understanding is that Apache will spool the content to calculate the length if required, so if you are using a patched version of Apache (>= 2.4.47) and have Our campus IT is spinning us a RHEL 9 box with 2.4.53 which we will attempt Apache with php-fpm on again. Will report back. |
Happening on a local development VM (vagrant, Virtualbox, playbook via Ansible) after updating to PHP 7.4 and Drupal 9.2.5.
When adding new content, e.g. PDF as Digital document, Drupal watchdog reports:
Symfony\Component\HttpKernel\Exception\HttpException: No bytes were copied to public://2021-09/50355-Extracted Text.txt in Drupal\islandora\MediaSource\MediaSourceService->updateFile() (line 206 of /var/www/html/drupal/web/modules/contrib/islandora/src/MediaSource/MediaSourceService.php).
Previously encountered by Eli Zoller, and Jordan Dukart, discussed at https://islandora.slack.com/archives/CM5PPAV28/p1619194482331900
I encountered it on a different instance but it somehow resolved itself. I want to ensure this is logged as an issue since it has been encountered by three parties so far.
In this case, I can revert the VM to PHP 7.2, Drupal 8.9.18 and derivatives are ok. So it's something attributable or triggered by changes to PHP version, PHP config, or Drupal core and islandora* code changes (not microservices, or camel, etc. AFAICT)
The error occurs when the derivative file is sent to Drupal as an HTTP PUT. This is handled by
islandora/src/MediaSource/MediaSourceService.php
:MediaSourceService->putToNode()
MediaSourceService->updateFile()
$content_length = stream_copy_to_stream($resource, $destination);
$resource
is Resource from$request->getContent(TRUE)
and$destination
is Resource fromfopen($uri, 'wb');
sudo tail -f -n100 /opt/karaf/data/log/karaf.log
claw.dev:80 127.0.0.1 - - [08/Sep/2021:20:47:30 +0000] "PUT /node/50355/media/extracted_text/500 HTTP/1.1" 400 79898 "-" "Apache-HttpClient/4.5.3 (Java/1.8.0_292)"
The text was updated successfully, but these errors were encountered: