Author: dcreager
Date: Thu May 12 15:02:32 2011
New Revision: 1102334

URL: http://svn.apache.org/viewvc?rev=1102334&view=rev
Log:
Merge change 1102332 from trunk into 1.5 branch

Modified:
    avro/branches/branch-1.5/   (props changed)
    avro/branches/branch-1.5/CHANGES.txt
    avro/branches/branch-1.5/lang/c/examples/CMakeLists.txt
    avro/branches/branch-1.5/lang/c/examples/quickstop.c
    avro/branches/branch-1.5/lang/c/src/datafile.c

Propchange: avro/branches/branch-1.5/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu May 12 15:02:32 2011
@@ -1 +1 @@
-/avro/trunk:1075938,1075993,1078917,1079055,1079060,1079063,1083246,1085921,1086727,1086730,1086866,1087076,1087129,1087136,1087439-1087440,1087463,1087472,1087792,1089128,1089131,1089550,1094812,1095206-1095208,1095493,1095529,1095548,1095550,1096798,1097916,1097927,1097968,1097974
+/avro/trunk:1075938,1075993,1078917,1079055,1079060,1079063,1083246,1085921,1086727,1086730,1086866,1087076,1087129,1087136,1087439-1087440,1087463,1087472,1087792,1089128,1089131,1089550,1094812,1095206-1095208,1095493,1095529,1095548,1095550,1096798,1097916,1097927,1097968,1097974,1102332

Modified: avro/branches/branch-1.5/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/avro/branches/branch-1.5/CHANGES.txt?rev=1102334&r1=1102333&r2=1102334&view=diff
==============================================================================
--- avro/branches/branch-1.5/CHANGES.txt (original)
+++ avro/branches/branch-1.5/CHANGES.txt Thu May 12 15:02:32 2011
@@ -1,5 +1,15 @@
 Avro Change Log
 
+Avro 1.5.2 (unreleased)
+
+  NEW FEATURES
+
+  IMPROVEMENTS
+
+  BUG FIXES
+
+    AVRO-818. C: Fix data file corruption bug in C library (dcreager)
+
 Avro 1.5.1 (3 May 2011)
 
   NEW FEATURES

Modified: avro/branches/branch-1.5/lang/c/examples/CMakeLists.txt
URL: 
http://svn.apache.org/viewvc/avro/branches/branch-1.5/lang/c/examples/CMakeLists.txt?rev=1102334&r1=1102333&r2=1102334&view=diff
==============================================================================
--- avro/branches/branch-1.5/lang/c/examples/CMakeLists.txt (original)
+++ avro/branches/branch-1.5/lang/c/examples/CMakeLists.txt Thu May 12 15:02:32 
2011
@@ -20,3 +20,6 @@
 add_executable(quickstop quickstop.c)
 target_link_libraries(quickstop avro-static)
 
+add_test(quickstop
+    ${CMAKE_COMMAND} -E chdir ${AvroC_SOURCE_DIR}/examples
+    ${CMAKE_CURRENT_BINARY_DIR}/quickstop)

Modified: avro/branches/branch-1.5/lang/c/examples/quickstop.c
URL: 
http://svn.apache.org/viewvc/avro/branches/branch-1.5/lang/c/examples/quickstop.c?rev=1102334&r1=1102333&r2=1102334&view=diff
==============================================================================
--- avro/branches/branch-1.5/lang/c/examples/quickstop.c (original)
+++ avro/branches/branch-1.5/lang/c/examples/quickstop.c Thu May 12 15:02:32 
2011
@@ -82,7 +82,7 @@ add_person(avro_file_writer_t db, const 
        avro_datum_decref(phone_datum);
        avro_datum_decref(person);
 
-       fprintf(stdout, "Successfully added %s, %s id=%"PRId64"\n", last, 
first, id);
+       //fprintf(stdout, "Successfully added %s, %s id=%"PRId64"\n", last, 
first, id);
 }
 
 int print_person(avro_file_reader_t db, avro_schema_t reader_schema)
@@ -134,6 +134,7 @@ int main(void)
        avro_schema_t projection_schema, first_name_schema, phone_schema;
        int64_t i;
        const char *dbname = "quickstop.db";
+       char number[15] = {0};
 
        /* Initialize the schema structure from JSON */
        init_schema();
@@ -146,13 +147,18 @@ int main(void)
                fprintf(stderr, "There was an error creating %s\n", dbname);
                exit(EXIT_FAILURE);
        }
-       /* Add people to the database */
-       add_person(db, "Dante", "Hicks", "(555) 123-4567", 32);
-       add_person(db, "Randal", "Graves", "(555) 123-5678", 30);
-       add_person(db, "Veronica", "Loughran", "(555) 123-0987", 28);
-       add_person(db, "Caitlin", "Bree", "(555) 123-2323", 27);
-       add_person(db, "Bob", "Silent", "(555) 123-6422", 29);
-       add_person(db, "Jay", "???", "(555) 123-9182", 26);
+
+       /* Add lots of people to the database */
+       for (i = 0; i < 1000; i++)
+       {
+               sprintf(number, "(%d)", (int)i);
+               add_person(db, "Dante", "Hicks", number, 32);
+               add_person(db, "Randal", "Graves", "(555) 123-5678", 30);
+               add_person(db, "Veronica", "Loughran", "(555) 123-0987", 28);
+               add_person(db, "Caitlin", "Bree", "(555) 123-2323", 27);
+               add_person(db, "Bob", "Silent", "(555) 123-6422", 29);
+               add_person(db, "Jay", "???", number, 26);
+       }
        avro_file_writer_close(db);
 
        fprintf(stdout, "\nNow let's read all the records back out\n");

Modified: avro/branches/branch-1.5/lang/c/src/datafile.c
URL: 
http://svn.apache.org/viewvc/avro/branches/branch-1.5/lang/c/src/datafile.c?rev=1102334&r1=1102333&r2=1102334&view=diff
==============================================================================
--- avro/branches/branch-1.5/lang/c/src/datafile.c (original)
+++ avro/branches/branch-1.5/lang/c/src/datafile.c Thu May 12 15:02:32 2011
@@ -40,6 +40,7 @@ struct avro_file_writer_t_ {
        avro_writer_t writer;
        char sync[16];
        int block_count;
+       size_t block_size;
        avro_writer_t datum_writer;
        char datum_buffer[16 * 1024];
 };
@@ -315,15 +316,14 @@ static int file_write_block(avro_file_wr
        int rval;
 
        if (w->block_count) {
-               int64_t blocklen = avro_writer_tell(w->datum_writer);
                /* Write the block count */
                check_prefix(rval, enc->write_long(w->writer, w->block_count),
                             "Cannot write file block count: ");
                /* Write the block length */
-               check_prefix(rval, enc->write_long(w->writer, blocklen),
+               check_prefix(rval, enc->write_long(w->writer, w->block_size),
                             "Cannot write file block size: ");
                /* Write the block */
-               check_prefix(rval, avro_write(w->writer, w->datum_buffer, 
blocklen),
+               check_prefix(rval, avro_write(w->writer, w->datum_buffer, 
w->block_size),
                             "Cannot write file block: ");
                /* Write the sync marker */
                check_prefix(rval, write_sync(w),
@@ -331,6 +331,7 @@ static int file_write_block(avro_file_wr
                /* Reset the datum writer */
                avro_writer_reset(w->datum_writer);
                w->block_count = 0;
+               w->block_size = 0;
        }
        return 0;
 }
@@ -354,6 +355,7 @@ int avro_file_writer_append(avro_file_wr
                }
        }
        w->block_count++;
+       w->block_size = avro_writer_tell(w->datum_writer);
        return 0;
 }
 


Reply via email to