This is an automated email from the ASF dual-hosted git repository.

brandonwilliams pushed a commit to branch cassandra-3.0
in repository https://gitbox.apache.org/repos/asf/cassandra.git


The following commit(s) were added to refs/heads/cassandra-3.0 by this push:
     new 75e0e8c  Fix cqlsh COPY abort on window resize
75e0e8c is described below

commit 75e0e8cf41f8cac1a8d6abf5b19dba9968cb4316
Author: Johannes Weißl <jar...@molb.org>
AuthorDate: Tue Jul 16 22:58:21 2019 +0200

    Fix cqlsh COPY abort on window resize
    
    Patch by Johannes Weißl; reviewed by brandonwilliams and bereng for
    CASSANDRA-15230
---
 CHANGES.txt                |  1 +
 pylib/cqlshlib/copyutil.py | 13 +++++++++++--
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/CHANGES.txt b/CHANGES.txt
index 6ed2033..20fbb32 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 3.0.26:
+ * Fix abort when window resizing during cqlsh COPY (CASSANDRA-15230)
  * Fix slow keycache load which blocks startup for tables with many sstables 
(CASSANDRA-14898)
  * Fix rare NPE caused by batchlog replay / node decomission races 
(CASSANDRA-17049)
  * Allow users to view permissions of the roles they created (CASSANDRA-16902)
diff --git a/pylib/cqlshlib/copyutil.py b/pylib/cqlshlib/copyutil.py
index 987a125..9692db5 100644
--- a/pylib/cqlshlib/copyutil.py
+++ b/pylib/cqlshlib/copyutil.py
@@ -31,6 +31,8 @@ import sys
 import threading
 import time
 import traceback
+import select
+import errno
 
 from bisect import bisect_right
 from calendar import timegm
@@ -39,7 +41,6 @@ from decimal import Decimal
 from Queue import Queue
 from random import randint
 from StringIO import StringIO
-from select import select
 from uuid import UUID
 from util import profile_on, profile_off
 
@@ -191,7 +192,15 @@ class ReceivingChannels(object):
         Implementation of the recv method for Linux, where select is 
available. Receive an object from
         all pipes that are ready for reading without blocking.
         """
-        readable, _, _ = select(self._readers, [], [], timeout)
+        while True:
+            try:
+                readable, _, _ = select.select(self._readers, [], [], timeout)
+            except select.error, exc:
+                # Do not abort on window resize:
+                if exc[0] != errno.EINTR:
+                    raise
+            else:
+                break
         for r in readable:
             with self._rlocks_by_readers[r]:
                 try:

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to