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

kou pushed a commit to branch main
in repository 
https://gitbox.apache.org/repos/asf/arrow-flight-sql-postgresql.git


The following commit(s) were added to refs/heads/main by this push:
     new 5b80f64  Fix read/write deadlock (#164)
5b80f64 is described below

commit 5b80f64ef3419a3909e4d7154a14930763e9ea0d
Author: Sutou Kouhei <[email protected]>
AuthorDate: Mon Nov 13 14:09:00 2023 +0900

    Fix read/write deadlock (#164)
    
    Close GH-163
    
    We just need to check whether target size is 0 or greater to detect new
    readable data/writable space.
---
 src/afs.cc | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/src/afs.cc b/src/afs.cc
index 8b293fd..1c792bc 100644
--- a/src/afs.cc
+++ b/src/afs.cc
@@ -576,7 +576,6 @@ class Processor {
                auto get_target_size =
                        read ? [](SharedRingBuffer* buffer) { return 
buffer->rest_size(); }
                                 : [](SharedRingBuffer* buffer) { return 
buffer->size(); };
-               auto targetSize = get_target_size(buffer);
                if (runInPGThread_)
                {
                        while (true)
@@ -599,7 +598,7 @@ class Processor {
                                          peerName,
                                          get_target_size(buffer),
                                          targetSize);
-                                       if (get_target_size(buffer) != 
targetSize)
+                                       if (get_target_size(buffer) > 0)
                                        {
                                                break;
                                        }
@@ -624,7 +623,7 @@ class Processor {
                                {
                                        return true;
                                }
-                               return get_target_size(buffer) != targetSize;
+                               return get_target_size(buffer) > 0;
                        });
                }
                return arrow::Status::OK();

Reply via email to