You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@avro.apache.org by th...@apache.org on 2012/08/27 06:53:02 UTC

svn commit: r1377567 - in /avro/trunk: CHANGES.txt lang/c++/impl/FileStream.cc lang/c++/test/DataFileTests.cc

Author: thiru
Date: Mon Aug 27 04:53:02 2012
New Revision: 1377567

URL: http://svn.apache.org/viewvc?rev=1377567&view=rev
Log:
AVRO-1141. Avro data files are created without O_TRUNC

Modified:
    avro/trunk/CHANGES.txt
    avro/trunk/lang/c++/impl/FileStream.cc
    avro/trunk/lang/c++/test/DataFileTests.cc

Modified: avro/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/avro/trunk/CHANGES.txt?rev=1377567&r1=1377566&r2=1377567&view=diff
==============================================================================
--- avro/trunk/CHANGES.txt (original)
+++ avro/trunk/CHANGES.txt Mon Aug 27 04:53:02 2012
@@ -21,6 +21,8 @@ Avro 1.7.2 (unreleased)
 
     AVRO-1140. Buffer.hh includes Config.hh without "../" (Jan van der Lugt via thiru)
 
+    AVRO-1141. Avro data files are created without O_TRUNC (Martin Nagy via thiru)
+
 Avro 1.7.1 (16 July 2012)
 
   NEW FEATURES

Modified: avro/trunk/lang/c++/impl/FileStream.cc
URL: http://svn.apache.org/viewvc/avro/trunk/lang/c%2B%2B/impl/FileStream.cc?rev=1377567&r1=1377566&r2=1377567&view=diff
==============================================================================
--- avro/trunk/lang/c++/impl/FileStream.cc (original)
+++ avro/trunk/lang/c++/impl/FileStream.cc Mon Aug 27 04:53:02 2012
@@ -236,7 +236,7 @@ struct FileBufferCopyOut : public Buffer
     const int fd_;
 
     FileBufferCopyOut(const char* filename) :
-        fd_(::open(filename, O_WRONLY | O_CREAT | O_BINARY, 0644)) {
+        fd_(::open(filename, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, 0644)) {
 
         if (fd_ < 0) {
             throw Exception(boost::format("Cannot open file: %1%") %

Modified: avro/trunk/lang/c++/test/DataFileTests.cc
URL: http://svn.apache.org/viewvc/avro/trunk/lang/c%2B%2B/test/DataFileTests.cc?rev=1377567&r1=1377566&r2=1377567&view=diff
==============================================================================
--- avro/trunk/lang/c++/test/DataFileTests.cc (original)
+++ avro/trunk/lang/c++/test/DataFileTests.cc Mon Aug 27 04:53:02 2012
@@ -188,6 +188,17 @@ public:
         df.close();
     }
 
+    void testTruncate() {
+        testWriteDouble();
+        uintmax_t size = boost::filesystem::file_size(filename);
+        {
+            avro::DataFileWriter<Pair> df(filename, writerSchema, 100);
+            df.close();
+        }
+        uintmax_t new_size = boost::filesystem::file_size(filename);
+        BOOST_CHECK(size > new_size);
+    }
+
     void testReadFull() {
         avro::DataFileReader<ComplexInteger> df(filename, writerSchema);
         int i = 0;
@@ -364,5 +375,10 @@ init_unit_test_suite( int argc, char* ar
     ts->add(BOOST_CLASS_TEST_CASE(&DataFileTest::testReadDoubleTwoStepProject,
         t3));
     ts->add(BOOST_CLASS_TEST_CASE(&DataFileTest::testCleanup, t3));
+
+    shared_ptr<DataFileTest> t4(new DataFileTest("test4.df", dsch, dblsch));
+    ts->add(BOOST_CLASS_TEST_CASE(&DataFileTest::testTruncate, t4));
+    ts->add(BOOST_CLASS_TEST_CASE(&DataFileTest::testCleanup, t4));
+
     return ts;
 }