[ https://issues.apache.org/jira/browse/AVRO-1405?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14105449#comment-14105449 ]
Christopher Ng commented on AVRO-1405: -------------------------------------- I'm getting a different kind of error with this now, it doesn't detect end of file correctly. In the files I'm having a problem with, feof is not set even though file->cur == file->end. I'm not really a C coder, but casual googling indicates that feof() returning false doesn't necessarily mean that the file has data left, ie you can be at the end of the file and feof() will return 0. http://stackoverflow.com/questions/5431941/while-feof-file-is-always-wrong This post says that feof will return 0 until something has already tried to read past the end of the file. This manifests itself as "Error reading: Cannot read file block count: Cannot read 1 bytes from file" It might be difficult for me to provide a test case for this though, as we're running a local fork where we have added LZ4 compression to Avro, but only for Java, Python and C (the implementations that we use). I still think that the eof check is wrong, but it may be that the behaviour only manifests itself because of some interaction with the LZ4 codec. > Avro-c may not handle eof correctly if avro data file contains multiple sync > markers > ------------------------------------------------------------------------------------ > > Key: AVRO-1405 > URL: https://issues.apache.org/jira/browse/AVRO-1405 > Project: Avro > Issue Type: Bug > Components: c > Affects Versions: 1.7.5 > Reporter: Mika Ristimaki > Assignee: Mika Ristimaki > Priority: Minor > Fix For: 1.7.6 > > Attachments: AVRO-1405.patch, AVRO-1405.patch > > > I encountered a bug in the Avro C API. If the following is done, it seems > that the Avro data file reader can not read the file correctly > {code} > while (has values to write) { > Open file for writing > Write a value to the file > Close the writer > } > {code} > Reading this file with Avro data file reader fails with EOF after only the > first item has been read from the file. -- This message was sent by Atlassian JIRA (v6.2#6252)