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 F118419E004A for ; Wed, 16 Dec 2015 16:07:11 +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 77709B5D8B7 for ; Wed, 16 Dec 2015 16:39:13 +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 EBA5818CC7CC for ; Wed, 16 Dec 2015 16:39:13 +0900 (JST) Received: from [221.186.184.76] (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id 37B651204B0; Wed, 16 Dec 2015 16:39:12 +0900 (JST) X-Original-To: ruby-core@ruby-lang.org Delivered-To: ruby-core@ruby-lang.org Received: from o2.heroku.sendgrid.net (o2.heroku.sendgrid.net [67.228.50.55]) by neon.ruby-lang.org (Postfix) with ESMTPS id 774BC120460 for ; Wed, 16 Dec 2015 16:39:08 +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=+3hzYRqMIa6/gdWPRBeXkoFCkEs=; b=vhGA5lE1Ff4IYTB5qq JX8anpdQJziTkN4zTDBIcwLrdCSAq2JMLH7SvgYl3PmuBcdEY0rX7osZM1SslmAW SLskH4QycJYqNniEmLhmxvfqhSGj/JEk93DnG2DStaTPFI51N8M0aei7Vn0YJJAg xl/vdDHV5p+ZiicCQhb53IlhM= Received: by filter0478p1mdw1.sendgrid.net with SMTP id filter0478p1mdw1.16815.5671151721 2015-12-16 07:39:03.488062391 +0000 UTC Received: from herokuapp.com (ec2-54-145-54-190.compute-1.amazonaws.com [54.145.54.190]) by ismtpd0003p1iad1.sendgrid.net (SG) with ESMTP id wYb8Qwv1SQWtO9x2Pmrcfg for ; Wed, 16 Dec 2015 07:39:03.693 +0000 (UTC) Date: Wed, 16 Dec 2015 07:39:03 +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: 46889 X-Redmine-Project: ruby-trunk X-Redmine-Issue-Id: 11822 X-Redmine-Issue-Author: headius 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/Ymy4QrNMhiuLXJG8OTL2vJD1yS5LnXie61eXDhZluH7nqVU3ec3YDjdmPBZZbK Cjn3zk13kuICVBMnLbhRLXFYLpHYHNTt0x23kDMPakkb5yabB9k1ntUyHe56VO/WSl6pE45hE5sBHs R56n1cx/fs1A//dzq+Aev4hAvGQn47z/bOk1mpYBOhaSmlu2z6cfzejskg== X-ML-Name: ruby-core X-Mail-Count: 72178 Subject: [ruby-core:72178] [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. Charles, closing queue only prevents adding new elements to. It should not delete already added items. Look at Golang's channels, they behaves same way. It is really most useful behaviour. Deleting already added items would be very unfriendly behaviour. Perhaps, you complain about documentation? It should be clearer about actual way. ---------------------------------------- Bug #11822: Semantics of Queue#pop after close are wrong https://bugs.ruby-lang.org/issues/11822#change-55592 * Author: Charles Nutter * Status: Open * Priority: Normal * Assignee: * 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/