lib/aerospike/command/read_command.rb in aerospike-2.11.0 vs lib/aerospike/command/read_command.rb in aerospike-2.12.0

- old
+ new

@@ -74,32 +74,39 @@ raise e end end - if result_code != 0 - return nil if result_code == Aerospike::ResultCode::KEY_NOT_FOUND_ERROR - return nil if result_code == Aerospike::ResultCode::LARGE_ITEM_NOT_FOUND - if result_code == Aerospike::ResultCode::UDF_BAD_RESPONSE - begin - @record = parse_record(op_count, field_count, generation, expiration) - handle_udf_error(result_code) - rescue => e - Aerospike.logger.error("UDF execution error: #{e}") - raise e - end - + if result_code == 0 + if op_count == 0 + @record = Record.new(@node, @key, nil, generation, expiration) + return end - - raise Aerospike::Exceptions::Aerospike.new(result_code) + + @record = parse_record(op_count, field_count, generation, expiration) + return end - if op_count == 0 - @record = Record.new(@node, @key, nil, generation, expiration) + return nil if result_code == Aerospike::ResultCode::KEY_NOT_FOUND_ERROR + + if result_code == Aerospike::ResultCode::FILTERED_OUT + if @policy.fail_on_filtered_out + raise Aerospike::Exceptions::Aerospike.new(result_code) + end return end - @record = parse_record(op_count, field_count, generation, expiration) + if result_code == Aerospike::ResultCode::UDF_BAD_RESPONSE + begin + @record = parse_record(op_count, field_count, generation, expiration) + handle_udf_error(result_code) + rescue => e + Aerospike.logger.error("UDF execution error: #{e}") + raise e + end + end + + raise Aerospike::Exceptions::Aerospike.new(result_code) end def handle_udf_error(result_code) ret = @record.bins['FAILURE'] raise Aerospike::Exceptions::Aerospike.new(result_code, ret) if ret