From: Jonas Pfenniger Date: 2011-01-06T23:12:50+09:00 Subject: [ruby-core:34185] [Ruby 1.9-Bug#4243][Open] [PATCH] DRb should not forefully close connections on DRb#stop_service --mimepart_4d25cddde53c8_1dc2b3bac941070 Content-Type: text/plain Content-Transfer-Encoding: Quoted-printable Content-Disposition: inline Bug #4243: [PATCH] DRb should not forefully close connections on DRb#stop= _service http://redmine.ruby-lang.org/issues/show/4243 Author: Jonas Pfenniger Status: Open, Priority: Normal Category: lib, Target version: 1.9.2 ruby -v: 1.9.2@30363 When DRb#stop_service is called, all connections get terminated by calling Thread.kill on them. It means that all code that is invoked troug= h DRb must be exception-safe. This poses the same kind of issues we have with Kernel#timeout. This patch changes the behavior or DRb to only kill the accepting thread, so that no new connections are made. New queries are also rejected. DRb#stop_service is synchronous and waits for all child-threads= to terminate. --- Please note that this patch is quite old, so I may have forgotten some de= tails of it. It was posted on rubyforge at http://rubyforge.org/tracker/?func=3D= detail&atid=3D1698&aid=3D14438&group_id=3D426. The new version got imported into git and applies on top of ae3666b38fd72= 3231c0bbc3c33f4603b6e0e0ef0 or svn r30363 (not sure about the patch forma= t) This patch can easily be back-ported to 1.8.x since drb.rb hasn't changed= much. Cheers, = zimbatm ---------------------------------------- http://redmine.ruby-lang.org --mimepart_4d25cddde53c8_1dc2b3bac941070 Content-Type: text/plain; name=0001-DRb-should-not-forefully-close-connections-on-DRb-st.patch Content-Transfer-Encoding: Base64 Content-Disposition: attachment; filename=0001-DRb-should-not-forefully-close-connections-on-DRb-st.patch RnJvbSBhZTM2NjZiMzhmZDcyMzIzMWMwYmJjM2MzM2Y0NjAzYjZlMGUwZWYw IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKb25hcyBQZmVubmln ZXIgPGpvbmFzQHBmZW5uaWdlci5uYW1lPgpEYXRlOiBUaHUsIDYgSmFuIDIw MTEgMTM6NTc6NTkgKzAwMDAKU3ViamVjdDogW1BBVENIXSBEUmIgc2hvdWxk IG5vdCBmb3JlZnVsbHkgY2xvc2UgY29ubmVjdGlvbnMgb24gRFJiI3N0b3Bf c2VydmljZQoKV2hlbiBEUmIjc3RvcF9zZXJ2aWNlIGlzIGNhbGxlZCwgYWxs IGNvbm5lY3Rpb25zIGdldCB0ZXJtaW5hdGVkIGJ5CmNhbGxpbmcgVGhyZWFk LmtpbGwgb24gdGhlbS4gSXQgbWVhbnMgdGhhdCBhbGwgY29kZSB0aGF0IGlz IGludm9rZWQgdHJvdWdoCkRSYiBtdXN0IGJlIGV4Y2VwdGlvbi1zYWZlLiBU aGlzIHBvc2VzIHRoZSBzYW1lIGtpbmQgb2YgaXNzdWVzIHdlIGhhdmUKd2l0 aCBLZXJuZWwjdGltZW91dC4KClRoaXMgcGF0Y2ggY2hhbmdlcyB0aGUgYmVo YXZpb3Igb3IgRFJiIHRvIG9ubHkga2lsbCB0aGUgYWNjZXB0aW5nCnRocmVh ZCwgc28gdGhhdCBubyBuZXcgY29ubmVjdGlvbnMgYXJlIG1hZGUuIE5ldyBx dWVyaWVzIGFyZSBhbHNvCmZvcmJpZGRlbi4KLS0tCiBsaWIvZHJiL2RyYi5y YiB8ICAgMzYgKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiAxIGZpbGVzIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDIyIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpYi9kcmIvZHJiLnJiIGIvbGliL2Ry Yi9kcmIucmIKaW5kZXggODRhMjE0NC4uYTg3ZDlmMSAxMDA2NDQKLS0tIGEv bGliL2RyYi9kcmIucmIKKysrIGIvbGliL2RyYi9kcmIucmIKQEAgLTEzOTEs MTAgKzEzOTEsMTUgQEAgbW9kdWxlIERSYgogICAgICMgU3RvcCB0aGlzIHNl cnZlci4KICAgICBkZWYgc3RvcF9zZXJ2aWNlCiAgICAgICBEUmIucmVtb3Zl X3NlcnZlcihzZWxmKQotICAgICAgaWYgIFRocmVhZC5jdXJyZW50WydEUmIn XSAmJiBUaHJlYWQuY3VycmVudFsnRFJiJ11bJ3NlcnZlciddID09IHNlbGYK LSAgICAgICAgVGhyZWFkLmN1cnJlbnRbJ0RSYiddWydzdG9wX3NlcnZpY2Un XSA9IHRydWUKLSAgICAgIGVsc2UKLSAgICAgICAgQHRocmVhZC5raWxsLmpv aW4KKyAgICAgIEB0aHJlYWQua2lsbAorICAgICAgCisgICAgICAjIENoZWNr IGZvciBmb3JlaWduIHN1Yi10aHJlYWRzCisgICAgICBmID0gQGdycC5saXN0 LnNlbGVjdHt8dHwgdFsnRFJiJ10ubmlsP30KKyAgICAgICRzdGRlcnIucHV0 cyAiRFJiIHVua25vd24gdGhyZWFkczogI3tmLmluc3BlY3R9IiBpZiBmLmFu eT8KKyAgICAgIAorICAgICAgIyBzeW5jaHJvbm91cyBzdG9wICh3aXRob3V0 IGN1cnJlbnQgYW5kIGZvcmVpZ24gdGhyZWFkcykKKyAgICAgIHdoaWxlIChA Z3JwLmxpc3QgLSBbVGhyZWFkLmN1cnJlbnRdIC0gZikuc2l6ZSA+IDAKKyAg ICAgICAgVGhyZWFkLnBhc3MKICAgICAgIGVuZAogICAgIGVuZAogCkBAIC0x NDEyLDIxICsxNDE3LDkgQEAgbW9kdWxlIERSYgogICAgIGVuZAogCiAgICAg cHJpdmF0ZQotICAgIGRlZiBraWxsX3N1Yl90aHJlYWQKLSAgICAgIFRocmVh ZC5uZXcgZG8KLQlncnAgPSBUaHJlYWRHcm91cC5uZXcKLQlncnAuYWRkKFRo cmVhZC5jdXJyZW50KQotCWxpc3QgPSBAZ3JwLmxpc3QKLQl3aGlsZSBsaXN0 LnNpemUgPiAwCi0JICBsaXN0LmVhY2ggZG8gfHRofAotCSAgICB0aC5raWxs IGlmIHRoLmFsaXZlPwotCSAgZW5kCi0JICBsaXN0ID0gQGdycC5saXN0Ci0J ZW5kCi0gICAgICBlbmQKLSAgICBlbmQKIAogICAgIGRlZiBydW4KKyAgICAg IEBzdG9wX3NlcnZpY2UgPSBmYWxzZQogICAgICAgVGhyZWFkLnN0YXJ0IGRv CiAJYmVnaW4KIAkgIHdoaWxlIHRydWUKQEAgLTE0MzQsNyArMTQyNyw3IEBA IG1vZHVsZSBEUmIKIAkgIGVuZAogCWVuc3VyZQogCSAgQHByb3RvY29sLmNs b3NlIGlmIEBwcm90b2NvbAotCSAga2lsbF9zdWJfdGhyZWFkCisJICBAc3Rv cF9zZXJ2aWNlID0gdHJ1ZQogCWVuZAogICAgICAgZW5kCiAgICAgZW5kCkBA IC0xNTk4LDExICsxNTkxLDEwIEBAIG1vZHVsZSBEUmIKIAkgICAgZW5kCiAJ ICAgIGNsaWVudC5zZW5kX3JlcGx5KHN1Y2MsIHJlc3VsdCkgcmVzY3VlIG5p bAogCSAgZW5zdXJlCi0gICAgICAgICAgICBjbGllbnQuY2xvc2UgdW5sZXNz IHN1Y2MKLSAgICAgICAgICAgIGlmIFRocmVhZC5jdXJyZW50WydEUmInXVsn c3RvcF9zZXJ2aWNlJ10KLSAgICAgICAgICAgICAgVGhyZWFkLm5ldyB7IHN0 b3Bfc2VydmljZSB9CisgICAgICAgICAgICBpZiAhc3VjYyBvciBAc3RvcF9z ZXJ2aWNlCisgICAgICAgICAgICAgIGNsaWVudC5jbG9zZQorICAgICAgICAg ICAgICBicmVhawogICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICBicmVh ayB1bmxlc3Mgc3VjYwogCSAgZW5kCiAJZW5kCiAgICAgICBlbmQKLS0gCjEu Ny4zLjQKCg== --mimepart_4d25cddde53c8_1dc2b3bac941070--