From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: poffice@blade.nagaokaut.ac.jp Delivered-To: poffice@blade.nagaokaut.ac.jp Received: from kankan.nagaokaut.ac.jp (kankan.nagaokaut.ac.jp [133.44.2.24]) by blade.nagaokaut.ac.jp (Postfix) with ESMTP id 0782819E0059 for ; Sun, 20 Dec 2015 17:21:58 +0900 (JST) Received: from voscc.nagaokaut.ac.jp (voscc.nagaokaut.ac.jp [133.44.1.100]) by kankan.nagaokaut.ac.jp (Postfix) with ESMTP id 7D75EB5D8B5 for ; Sun, 20 Dec 2015 17:54:10 +0900 (JST) Received: from neon.ruby-lang.org (neon.ruby-lang.org [221.186.184.75]) by voscc.nagaokaut.ac.jp (Postfix) with ESMTP id E243218CC7D1 for ; Sun, 20 Dec 2015 17:54:10 +0900 (JST) Received: from [221.186.184.76] (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id 084801204E6; Sun, 20 Dec 2015 17:54:10 +0900 (JST) X-Original-To: ruby-core@ruby-lang.org Delivered-To: ruby-core@ruby-lang.org Received: from o10.shared.sendgrid.net (o10.shared.sendgrid.net [173.193.132.135]) by neon.ruby-lang.org (Postfix) with ESMTPS id A88B7120488 for ; Sun, 20 Dec 2015 17:54:06 +0900 (JST) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sendgrid.me; h=from:to:references:subject:mime-version:content-type:content-transfer-encoding:list-id; s=smtpapi; bh=anxKdTT953/RjtMNq6pxtUYf78o=; b=Jd+QOZqEsCi095wKH6 lAxSYk649CMco3IoUkDqrsdAagaSRXQHNM2yrft6AMRXUvPaj0SEabhRc2smtR9Y h/VdEIB+DTAlGFwM4T2Cm5MxY8ug/dE1OKogUKfthd6e6+XAEFdjmkwut3Naf8lD nAs9J81u+8UZd5/yM6KJFH/K8= Received: by filter0429p1mdw1.sendgrid.net with SMTP id filter0429p1mdw1.29967.56766CA92 2015-12-20 08:54:01.041545279 +0000 UTC Received: from herokuapp.com (ec2-54-198-75-10.compute-1.amazonaws.com [54.198.75.10]) by ismtpd0003p1iad1.sendgrid.net (SG) with ESMTP id HQBHUMEyRSm_6SV5bZrYPg Sun, 20 Dec 2015 08:54:00.869 +0000 (UTC) Date: Sun, 20 Dec 2015 08:54:00 +0000 From: funny.falcon@gmail.com To: ruby-core@ruby-lang.org Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Redmine-MailingListIntegration-Message-Ids: 47003 X-Redmine-Project: ruby-trunk X-Redmine-Issue-Id: 11822 X-Redmine-Issue-Author: headius X-Redmine-Issue-Assignee: ko1 X-Redmine-Sender: funny_falcon X-Mailer: Redmine X-Redmine-Host: bugs.ruby-lang.org X-Redmine-Site: Ruby Issue Tracking System X-Auto-Response-Suppress: All Auto-Submitted: auto-generated X-SG-EID: ync6xU2WACa70kv/Ymy4QrNMhiuLXJG8OTL2vJD1yS5mnasUCBBZlAg9qdKMrtPyCg186vB//JSigd 8UsB4+P/1HhTTCOUWy+/TkmCbImJfBjh5Iby2e2fojdFjx9zUOWB0343gZQ7+bn1ZCTcBShRB6M3mq MNvVuJu2hDgZpYSdmdTPLgaQqmX9My03w4aXRVGyPIx7xdQNxQZ3F6KE4A== X-ML-Name: ruby-core X-Mail-Count: 72408 Subject: [ruby-core:72408] [Ruby trunk - Bug #11822] Semantics of Queue#pop after close are wrong X-BeenThere: ruby-core@ruby-lang.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: Ruby developers List-Id: Ruby developers List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: ruby-core-bounces@ruby-lang.org Sender: "ruby-core" Issue #11822 has been updated by Yura Sokolov. I like optional arg to pop: Either `pop?` or `pop(on_close: value)` ---------------------------------------- Bug #11822: Semantics of Queue#pop after close are wrong https://bugs.ruby-lang.org/issues/11822#change-55696 * Author: Charles Nutter * Status: Open * Priority: Normal * Assignee: Koichi Sasada * ruby -v: * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN ---------------------------------------- Current test/ruby/thread/test_queue.rb test_close has the following assertion that seems wrong to me: ```ruby def test_close [->{Queue.new}, ->{SizedQueue.new 3}].each do |qcreate| q = qcreate.call assert_equal false, q.closed? q << :something assert_equal q, q.close assert q.closed? assert_raise_with_message(ClosedQueueError, /closed/){q << :nothing} assert_equal q.pop, :something # <<< THIS ONE assert_nil q.pop assert_nil q.pop # non-blocking assert_raise_with_message(ThreadError, /queue empty/){q.pop(non_block=true)} end end ``` Once a queue is closed, I don't think it should ever return a result anymore. The queue should be cleared and pop should always return nil. In r52691, ko1 states that "deq'ing on closed queue returns nil, always." This test does not match that behavior. -- https://bugs.ruby-lang.org/