Sha256: 52891970dd614f3274f039466ad95966f95005d729450e8b9f011e16a1f9866d

Contents?: true

Size: 1.38 KB

Versions: 14

Compression:

Stored size: 1.38 KB

Contents

module ActiveRecord::Turntable
  module ActiveRecordExt
    module Transactions
      # @note Override to start transaction on current shard
      def with_transaction_returning_status
        if self.class.turntable_enabled?
          status = nil
          if self.new_record? and self.turntable_shard_key.to_s == self.class.primary_key and
              self.id.nil? and self.class.connection.prefetch_primary_key?(self.class.table_name)
            self.id = self.class.connection.next_sequence_value(self.class.sequence_name)
          end
          self.class.connection.shards_transaction([self.turntable_shard]) do
            add_to_transaction
            begin
              status = yield
            rescue ActiveRecord::Rollback
              if Util.ar42_or_later?
                clear_transaction_record_state
              else
                @_start_transaction_state[:level] = (@_start_transaction_state[:level] || 0) - 1
              end
              status = nil
            end

            raise ActiveRecord::Rollback unless status
          end
          status
        else
          super
        end
      end

      def add_to_transaction
        if self.class.turntable_enabled?
          if self.turntable_shard.connection.add_transaction_record(self)
            remember_transaction_record_state
          end
        else
          super
        end
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
activerecord-turntable-2.5.0 lib/active_record/turntable/active_record_ext/transactions.rb
activerecord-turntable-2.4.0 lib/active_record/turntable/active_record_ext/transactions.rb
activerecord-turntable-2.3.3 lib/active_record/turntable/active_record_ext/transactions.rb
activerecord-turntable-2.3.2 lib/active_record/turntable/active_record_ext/transactions.rb
activerecord-turntable-2.3.1 lib/active_record/turntable/active_record_ext/transactions.rb
activerecord-turntable-2.3.0 lib/active_record/turntable/active_record_ext/transactions.rb
activerecord-turntable-2.2.2 lib/active_record/turntable/active_record_ext/transactions.rb
activerecord-turntable-2.2.1 lib/active_record/turntable/active_record_ext/transactions.rb
activerecord-turntable-2.2.0 lib/active_record/turntable/active_record_ext/transactions.rb
activerecord-turntable-2.1.1 lib/active_record/turntable/active_record_ext/transactions.rb
activerecord-turntable-2.1.0 lib/active_record/turntable/active_record_ext/transactions.rb
activerecord-turntable-2.1.0.rc2 lib/active_record/turntable/active_record_ext/transactions.rb
activerecord-turntable-2.1.0.rc1 lib/active_record/turntable/active_record_ext/transactions.rb
activerecord-turntable-2.1.0.beta2 lib/active_record/turntable/active_record_ext/transactions.rb