From 18c2f886b6411d9df222b191b9c489916325ebb5 Mon Sep 17 00:00:00 2001 From: Chris Henson Date: Mon, 30 Jan 2017 17:19:19 -0500 Subject: [PATCH 1/3] 0002974: 3.8 is not backwards compatible with pre 3.0 versions when multiple batches with the same table are received --- .../io/data/writer/SimpleStagingDataWriter.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/writer/SimpleStagingDataWriter.java b/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/writer/SimpleStagingDataWriter.java index 6e34940ce9..43b6cf73ba 100644 --- a/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/writer/SimpleStagingDataWriter.java +++ b/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/writer/SimpleStagingDataWriter.java @@ -79,7 +79,6 @@ public void process() throws IOException { IStagedResource resource = null; String line = null; long startTime = System.currentTimeMillis(), ts = startTime, lineCount = 0; - while (reader.readRecord()) { line = reader.getRawRecord(); @@ -175,7 +174,16 @@ public void process() throws IOException { } else if (line.startsWith(CsvConstants.CHANNEL)) { channelLine = line; } else { - int size = line.length(); + TableLine batchLine = batchTableLines.get(tableLine); + if (batchLine != null && batchLine.columnsLine == null) { + TableLine syncLine = syncTableLines.get(tableLine); + if (syncLine != null) { + log.debug("Injecting keys and columns to be backwards compatible"); + writeLine(syncLine.keysLine); + writeLine(syncLine.columnsLine); + } + } + int size = line.length(); if (size > MAX_WRITE_LENGTH) { log.debug("Exceeded max line length with {}", size); for (int i = 0; i < size; i = i + MAX_WRITE_LENGTH) { From e33d7eb2570023ccb93d3be35762b63bb85d2664 Mon Sep 17 00:00:00 2001 From: Chris Henson Date: Mon, 30 Jan 2017 17:43:54 -0500 Subject: [PATCH 2/3] 0002974: 3.8 is not backwards compatible with pre 3.0 versions when multiple batches with the same table are received --- .../symmetric/io/data/writer/SimpleStagingDataWriter.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/writer/SimpleStagingDataWriter.java b/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/writer/SimpleStagingDataWriter.java index 43b6cf73ba..6895c154e3 100644 --- a/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/writer/SimpleStagingDataWriter.java +++ b/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/writer/SimpleStagingDataWriter.java @@ -179,7 +179,9 @@ public void process() throws IOException { TableLine syncLine = syncTableLines.get(tableLine); if (syncLine != null) { log.debug("Injecting keys and columns to be backwards compatible"); + batchLine.keysLine = syncLine.keysLine; writeLine(syncLine.keysLine); + batchLine.columnsLine = syncLine.columnsLine; writeLine(syncLine.columnsLine); } } From 5c3d8c040368b8f9fccf76905f0a2d325f3f4bbc Mon Sep 17 00:00:00 2001 From: Chris Henson Date: Mon, 30 Jan 2017 17:48:50 -0500 Subject: [PATCH 3/3] 0002974: 3.8 is not backwards compatible with pre 3.0 versions when multiple batches with the same table are received --- .../symmetric/io/data/writer/SimpleStagingDataWriter.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/writer/SimpleStagingDataWriter.java b/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/writer/SimpleStagingDataWriter.java index 6895c154e3..0bca155eaf 100644 --- a/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/writer/SimpleStagingDataWriter.java +++ b/symmetric-io/src/main/java/org/jumpmind/symmetric/io/data/writer/SimpleStagingDataWriter.java @@ -175,10 +175,15 @@ public void process() throws IOException { channelLine = line; } else { TableLine batchLine = batchTableLines.get(tableLine); - if (batchLine != null && batchLine.columnsLine == null) { + if (batchLine == null || (batchLine != null && batchLine.columnsLine == null)) { TableLine syncLine = syncTableLines.get(tableLine); if (syncLine != null) { log.debug("Injecting keys and columns to be backwards compatible"); + if (batchLine == null) { + batchLine = syncLine; + batchTableLines.put(batchLine, batchLine); + writeLine(batchLine.tableLine); + } batchLine.keysLine = syncLine.keysLine; writeLine(syncLine.keysLine); batchLine.columnsLine = syncLine.columnsLine;