You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by al...@apache.org on 2016/03/29 18:58:19 UTC

[03/15] cassandra git commit: COPY FROM fails when importing blob

COPY FROM fails when importing blob

patch by Stefania Alborghetti; reviewed by Paulo Motta for CASSANDRA-11375


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/5a45aa62
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/5a45aa62
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/5a45aa62

Branch: refs/heads/trunk
Commit: 5a45aa62dd57f59753396c5d5541dbf3a0a1b220
Parents: 8b8a3f5
Author: Stefania Alborghetti <st...@datastax.com>
Authored: Fri Mar 18 16:46:37 2016 +0800
Committer: Aleksey Yeschenko <al...@apache.org>
Committed: Tue Mar 29 17:56:33 2016 +0100

----------------------------------------------------------------------
 CHANGES.txt                |  1 +
 pylib/cqlshlib/copyutil.py | 16 ++++++++++------
 2 files changed, 11 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/5a45aa62/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 7794d4f..65d094f 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.1.14
+ * COPY FROM fails when importing blob (CASSANDRA-11375)
  * Backport CASSANDRA-10679 (CASSANDRA-9598)
  * Don't do defragmentation if reading from repaired sstables (CASSANDRA-10342)
  * Fix streaming_socket_timeout_in_ms not enforced (CASSANDRA-11286)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/5a45aa62/pylib/cqlshlib/copyutil.py
----------------------------------------------------------------------
diff --git a/pylib/cqlshlib/copyutil.py b/pylib/cqlshlib/copyutil.py
index ba2a47b..28e08b1 100644
--- a/pylib/cqlshlib/copyutil.py
+++ b/pylib/cqlshlib/copyutil.py
@@ -1176,7 +1176,7 @@ class FeedingProcess(mp.Process):
                     if rows:
                         sent += self.send_chunk(ch, rows)
                 except Exception, exc:
-                    self.outmsg.send(ImportTaskError(exc.__class__.__name__, exc.message))
+                    self.outmsg.send(ImportTaskError(exc.__class__.__name__, str(exc)))
 
                 if reader.exhausted:
                     break
@@ -1679,7 +1679,11 @@ class ImportConversion(object):
             return converters.get(t.typename, convert_unknown)(unprotect(v), ct=t)
 
         def convert_blob(v, **_):
-            return bytearray.fromhex(v[2:])
+            try:
+                return bytearray.fromhex(v[2:])
+            except TypeError:
+                # Work-around for Python 2.6 bug
+                return bytearray.fromhex(unicode(v[2:]))
 
         def convert_text(v, **_):
             return v
@@ -1869,7 +1873,7 @@ class ImportConversion(object):
         try:
             return [conv(val) for conv, val in zip(converters, row)]
         except Exception, e:
-            raise ParseError(e.message)
+            raise ParseError(str(e))
 
     def get_null_primary_key_message(self, idx):
         message = "Cannot insert null value for primary key column '%s'." % (self.columns[idx],)
@@ -2183,7 +2187,7 @@ class ImportProcess(ChildProcess):
             try:
                 return conv.convert_row(r)
             except Exception, err:
-                errors[err.message].append(r)
+                errors[str(err)].append(r)
                 return None
 
         converted_rows = filter(None, [convert_row(r) for r in rows])
@@ -2248,7 +2252,7 @@ class ImportProcess(ChildProcess):
                 pk = get_row_partition_key_values(row)
                 rows_by_ring_pos[get_ring_pos(ring, pk_to_token_value(pk))].append(row)
             except Exception, e:
-                errors[e.message].append(row)
+                errors[str(e)].append(row)
 
         if errors:
             for msg, rows in errors.iteritems():
@@ -2286,7 +2290,7 @@ class ImportProcess(ChildProcess):
     def report_error(self, err, chunk, rows=None, attempts=1, final=True):
         if self.debug:
             traceback.print_exc(err)
-        self.outmsg.send(ImportTaskError(err.__class__.__name__, err.message, rows, attempts, final))
+        self.outmsg.send(ImportTaskError(err.__class__.__name__, str(err), rows, attempts, final))
         if final:
             self.update_chunk(rows, chunk)