zero length read from file
Without a communication channel, there's no guaranteed method to prevent zero-byte reads or even long periods of hanging without reading any data when reading a file that is actively being written. The Linux implementation of tail
uses inotify
to effectively create a communication channel and obtain information about the file write activity.
It's an interesting enough problem to that IBM has even published a Redbook describing an implementation that was able to do such "read-behind-write" at about 15 GB/sec:
Read-behind-write is a technique used by some high-end customers to
lower latency and improve performance. The read-behind-write technique
means that once the writer starts to write, the reader will
immediately trail behind to read; the idea is to overlap the write
time with read time. This concept is beneficial on machines with slow
I/O performance. For a high I/O throughput machine such as pSeries
690, it may be worth considering first writing the entire file out in
parallel and then reading the data back in parallel.There are many ways that read-behind-write can be implemented. In the
scheme implemented by Xdd, after the writer writes one record, it will
wait for the reader to read that record before the writer can proceed.
Although this scheme keeps the writer and reader in sync just one
record apart, it takes system time to do the locking and
synchronization between writer and reader.If one does not care about how many records that a reader lags behind
the writer, then one can implement a scheme for the writer to stream
down the writes as fast as possible. The writer can update a global
variable after a certain number of records are written. The reader can
then pull the global variable to find out how many records it has to
read.
Without a communications channel, you're pretty much left having to keep trying, perhaps calling sleep()
or something similar after a number of zero-byte read()
results.
Why is len(file.read()) giving me a value of zero?
Files act like a long tape in a casette; you can read the file but by the time you are done you have passed the tape all the way to the end. Reading again won't give you the data again.
As such your second function tried to read data from a file that is already wound all the way to the end.
You can rewind the 'tape' by re-opening the file, or by using target.seek(0)
to send it back to the start.
PHP readfile returns zero length file
My. Lame. Fault. Sorry for everyone.
Just tweaked the code a week ago and added:
if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) {
ob_start('ob_gzhandler');
} else {
ob_start();
}
What caused this anomaly. :(
inputStream read method constantly reading 0
You're misreading the file length in the receiver. You are getting zero, so you're constructing a zero length byte array, so read()
returns zero.
You need to send the length via DataOutputStream.writeLong()
and read it via DataInputStream.readLong()
. And then your sending and receiving code is all wrong as well. See my answer here for complete code.
Ghostscript pdfwrite produces zero length output when reading from PDF files, no error reported, fine with other inputs
This turned out to not be limited to PDF input, it's just easier to trigger it that way. The problem was that an internal data type was changed from a build-dependent size to always be 64-bits, but a #define'd value wasn't correctly updated so the 64-bit Windows build was still using a value intended for 32-bit builds.
There's a commit to fix the problem here. However this seems serious enough that a new build 9.53.1 (so that's patch level 1 already...) will be forthcoming shortly (if it's not already there).
It would help a lot if people could report bugs when they find this kind of problem, and even better if there are any volunteers to try out the release candidates, we would really prefer not to make releases with serious problems.....
Related Topics
Gedit Syntax Highlighting for Assembler Files (*.Asm)
Understanding Bash Short-Circuiting
Copy Folder Structure (Without Files) from One Location to Another
How to Wait for Server Restart Using Ansible
Which Signal Does Ctrl-X Send When Used in a Terminal
How to Remove All Non-Numeric Characters from a String in Bash
How to Get Coordinates of Touchscreen Rawdata Using Linux
Glibc: Elf File Os Abi Invalid
Why Is This Kernel Module Marked at Permanent on 2.6.39
Loading U-Boot in Memory Instead of Flashing It
How to Get Started Developing on *Nix
How to Find Out Mount/Partition a Directory or File Is On? (Linux Server)
One Core Exclusively for My Process
Encrypt a String Using Openssl Command Line
Identifying Received Signal Name in Bash
Strange Behaviour of Git: Mysterious Changes Cannot Be Undone