google-cloud-spanner 2.18.0 → 2.18.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/lib/google/cloud/spanner/pool.rb +14 -10
- data/lib/google/cloud/spanner/transaction.rb +6 -14
- data/lib/google/cloud/spanner/version.rb +1 -1
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 86e6ca163f96c37fa118d05ecf481289318c707f1de83ffb401c20b40afacb69
         | 
| 4 | 
            +
              data.tar.gz: 12cbaad3945956e2da31862d23d0ef66658539fc30daee432879650d2ab3d028
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: b866a7a87beb50165b5b1593a4e92a1e0a4684f7a5e7210647aae4ecbe05fcf9f61b1309b00d37deb94e592bc98e541ea1f1104e411a32f6ed9bc4bbde1ee624
         | 
| 7 | 
            +
              data.tar.gz: d8c40babae83b334f95e15ea242f7b1271ecf510cd19722619e759b2a3082df04400b1fc3e78f572a0708ecca76ee68a71192fab92a425d1c27f3c8d58a58aca
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    
| @@ -29,7 +29,11 @@ module Google | |
| 29 29 | 
             
                  # {Google::Cloud::Spanner::Session} instances.
         | 
| 30 30 | 
             
                  #
         | 
| 31 31 | 
             
                  class Pool
         | 
| 32 | 
            +
                    # @return [Array<Session>] A stack of `Session` objects.
         | 
| 32 33 | 
             
                    attr_accessor :sessions_available
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                    # @return [Hash{String => Session}] A hash with session_id as keys,
         | 
| 36 | 
            +
                    # and `Session` objects as values.
         | 
| 33 37 | 
             
                    attr_accessor :sessions_in_use
         | 
| 34 38 |  | 
| 35 39 | 
             
                    def initialize client, min: 10, max: 100, keepalive: 1800,
         | 
| @@ -65,10 +69,10 @@ module Google | |
| 65 69 |  | 
| 66 70 | 
             
                          # Use LIFO to ensure sessions are used from backend caches, which
         | 
| 67 71 | 
             
                          # will reduce the read / write latencies on user requests.
         | 
| 68 | 
            -
                           | 
| 69 | 
            -
                          if  | 
| 70 | 
            -
                            sessions_in_use  | 
| 71 | 
            -
                            return  | 
| 72 | 
            +
                          session = sessions_available.pop # LIFO
         | 
| 73 | 
            +
                          if session
         | 
| 74 | 
            +
                            sessions_in_use[session.session_id] = session
         | 
| 75 | 
            +
                            return session
         | 
| 72 76 | 
             
                          end
         | 
| 73 77 |  | 
| 74 78 | 
             
                          if can_allocate_more_sessions?
         | 
| @@ -85,7 +89,7 @@ module Google | |
| 85 89 | 
             
                      if action == :new
         | 
| 86 90 | 
             
                        session = new_session!
         | 
| 87 91 | 
             
                        @mutex.synchronize do
         | 
| 88 | 
            -
                          sessions_in_use  | 
| 92 | 
            +
                          sessions_in_use[session.session_id] = session
         | 
| 89 93 | 
             
                        end
         | 
| 90 94 | 
             
                        return session
         | 
| 91 95 | 
             
                      end
         | 
| @@ -95,12 +99,12 @@ module Google | |
| 95 99 |  | 
| 96 100 | 
             
                    def checkin_session session
         | 
| 97 101 | 
             
                      @mutex.synchronize do
         | 
| 98 | 
            -
                        unless sessions_in_use. | 
| 102 | 
            +
                        unless sessions_in_use.key? session.session_id
         | 
| 99 103 | 
             
                          raise ArgumentError, "Cannot checkin session"
         | 
| 100 104 | 
             
                        end
         | 
| 101 105 |  | 
| 102 106 | 
             
                        sessions_available.push session
         | 
| 103 | 
            -
                        sessions_in_use. | 
| 107 | 
            +
                        sessions_in_use.delete session.session_id
         | 
| 104 108 |  | 
| 105 109 | 
             
                        @resource.signal
         | 
| 106 110 | 
             
                      end
         | 
| @@ -163,7 +167,7 @@ module Google | |
| 163 167 | 
             
                      create_keepalive_task!
         | 
| 164 168 | 
             
                      # init session stack
         | 
| 165 169 | 
             
                      @sessions_available = @client.batch_create_new_sessions @min
         | 
| 166 | 
            -
                      @sessions_in_use =  | 
| 170 | 
            +
                      @sessions_in_use = {}
         | 
| 167 171 | 
             
                    end
         | 
| 168 172 |  | 
| 169 173 | 
             
                    def shutdown
         | 
| @@ -176,9 +180,9 @@ module Google | |
| 176 180 | 
             
                      # Delete all sessions
         | 
| 177 181 | 
             
                      @mutex.synchronize do
         | 
| 178 182 | 
             
                        sessions_available.each { |s| future { s.release! } }
         | 
| 179 | 
            -
                        sessions_in_use. | 
| 183 | 
            +
                        sessions_in_use.each_value { |s| future { s.release! } }
         | 
| 180 184 | 
             
                        @sessions_available = []
         | 
| 181 | 
            -
                        @sessions_in_use =  | 
| 185 | 
            +
                        @sessions_in_use = {}
         | 
| 182 186 | 
             
                      end
         | 
| 183 187 | 
             
                      # shutdown existing thread pool
         | 
| 184 188 | 
             
                      @thread_pool.shutdown
         | 
| @@ -640,20 +640,12 @@ module Google | |
| 640 640 |  | 
| 641 641 | 
             
                      request_options = build_request_options request_options
         | 
| 642 642 | 
             
                      safe_execute do |seqno|
         | 
| 643 | 
            -
                         | 
| 644 | 
            -
             | 
| 645 | 
            -
             | 
| 646 | 
            -
             | 
| 647 | 
            -
             | 
| 648 | 
            -
             | 
| 649 | 
            -
                          row_counts = batch_update_results.row_counts
         | 
| 650 | 
            -
                          @grpc ||= batch_update_results.transaction
         | 
| 651 | 
            -
                          return row_counts
         | 
| 652 | 
            -
                        rescue Google::Cloud::Spanner::BatchUpdateError
         | 
| 653 | 
            -
                          @grpc ||= batch_update_results.transaction
         | 
| 654 | 
            -
                          # Re-raise after extracting transaction
         | 
| 655 | 
            -
                          raise
         | 
| 656 | 
            -
                        end
         | 
| 643 | 
            +
                        response = session.batch_update tx_selector, seqno,
         | 
| 644 | 
            +
                                                        request_options: request_options,
         | 
| 645 | 
            +
                                                        call_options: call_options, &block
         | 
| 646 | 
            +
                        batch_update_results = BatchUpdateResults.new response
         | 
| 647 | 
            +
                        @grpc ||= batch_update_results.transaction
         | 
| 648 | 
            +
                        batch_update_results.row_counts
         | 
| 657 649 | 
             
                      end
         | 
| 658 650 | 
             
                    end
         | 
| 659 651 |  | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: google-cloud-spanner
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 2.18. | 
| 4 | 
            +
              version: 2.18.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Mike Moore
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2023-09- | 
| 12 | 
            +
            date: 2023-09-19 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: google-cloud-core
         |