From: Jeremy Thurgood Date: 2008-02-06T23:04:45+09:00 Subject: Re: Timeout::Error This is a cryptographically signed message in MIME format. --------------ms040704080909070803010505 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Jim Hranicky wrote: > Jeremy Thurgood wrote: > >>> No. The exception would be rescued inappropriately then. >> At the moment it's being /not/ rescued inappropriately. Why should a >> timeout exception (from within the standard libraries!) evade a naked >> "rescue"? The current situation requires me to figure out everythign >> that can possibly time out and add special-case error handling for it. >> Worse than this, irb doesn't catch Timeout::Error and thus kills my >> session (which typically has a bunch of state in it) whenever the http >> server I'm talking to takes a while to respond. > > While I tend to agree and ran into the same frustration as you, you can > specify the type of exception Timeout throws like so: > > timeout(5, StandardError) { ... } > > which seems to do what's desired, > > ruby -rtimeout -e 'begin ; timeout(5, StandardError) { while true; sleep 1; end }; \ > rescue; puts "rescued" ; end' Sure, if it's my code that's throwing the timeout. net/protocol.rb and net/http.rb aren't mine and I'm hesitant to monkey-patch them to throw different exceptions when I'm also using other libraries which use them. A quick grep through /usr/lib/ruby/1.8 shows at least the following files using timeout without specifying a different exception to use: ping.rb webrick/httprequest.rb net/telnet.rb net/protocol.rb net/http.rb The only one that /does/ specify a different exception is resolv.rb, which throws a ResolvTimeout. This is a subclass of TimeoutError and thus suffers from the same problems. --J -- --------------ms040704080909070803010505 Content-Type: application/x-pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIJaTCC Aw8wggJ4oAMCAQICEDvKk1SqBf0E1mZzHbJoRUwwDQYJKoZIhvcNAQEFBQAwYjELMAkGA1UE BhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMT I1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBMB4XDTA3MTIwOTE0MjYxNloX DTA4MTIwODE0MjYxNlowczERMA8GA1UEBBMIVGh1cmdvb2QxFzAVBgNVBCoTDkplcmVteSBS aWNoYXJkMSAwHgYDVQQDExdKZXJlbXkgUmljaGFyZCBUaHVyZ29vZDEjMCEGCSqGSIb3DQEJ ARYUamVyaXRoQGplcml0aC56YS5uZXQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB AQDD85piSEhUurBsZehSQXZoctIsKyBx0RfWgqsndQ56eONkijBLKoyBkE8VZo7j5ZZ5T/on uUIgGcNQx2FvwJRECOB8GskLQCF0oPZ918LVYtGIgc45h4McdLsqUU/GRx3v73ccLTpGYpb8 CfFU6N47IQU/ItsgzefQ0lCUbdfRCzLSNGKCXrcOqBzN0fctPwChRFths6OL1THsQsbUGIfi yIhz3O7U7Afb06FaY4T8rQUkON9M5Gp94z5eikSNpC21e7KVj0vMWudQigKFexeKye3rdAYv yfJ4VvRRtm5fjLD8/Jrt9dBNU5+0b399CE0N4ZcXpdu/Y7laXluTNKRRAgMBAAGjMTAvMB8G A1UdEQQYMBaBFGplcml0aEBqZXJpdGguemEubmV0MAwGA1UdEwEB/wQCMAAwDQYJKoZIhvcN AQEFBQADgYEAZbNewFKDYiJK7C28bfxWUm7EveYrvCHH1iZcsl3bak9Ha0JK57yCUYahUfoa siTBL/m0HkLbAhCEp5tjoTGCWcZVZ5gc0BNE8mUkYTWEKESkXKtk9nayFUHbIS9mrLO/GSHJ zow/BOT0gikPmV43CT6gd8pj9ercq08bby6wMpAwggMPMIICeKADAgECAhA7ypNUqgX9BNZm cx2yaEVMMA0GCSqGSIb3DQEBBQUAMGIxCzAJBgNVBAYTAlpBMSUwIwYDVQQKExxUaGF3dGUg Q29uc3VsdGluZyAoUHR5KSBMdGQuMSwwKgYDVQQDEyNUaGF3dGUgUGVyc29uYWwgRnJlZW1h aWwgSXNzdWluZyBDQTAeFw0wNzEyMDkxNDI2MTZaFw0wODEyMDgxNDI2MTZaMHMxETAPBgNV BAQTCFRodXJnb29kMRcwFQYDVQQqEw5KZXJlbXkgUmljaGFyZDEgMB4GA1UEAxMXSmVyZW15 IFJpY2hhcmQgVGh1cmdvb2QxIzAhBgkqhkiG9w0BCQEWFGplcml0aEBqZXJpdGguemEubmV0 MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAw/OaYkhIVLqwbGXoUkF2aHLSLCsg cdEX1oKrJ3UOenjjZIowSyqMgZBPFWaO4+WWeU/6J7lCIBnDUMdhb8CURAjgfBrJC0AhdKD2 fdfC1WLRiIHOOYeDHHS7KlFPxkcd7+93HC06RmKW/AnxVOjeOyEFPyLbIM3n0NJQlG3X0Qsy 0jRigl63DqgczdH3LT8AoURbYbOji9Ux7ELG1BiH4siIc9zu1OwH29OhWmOE/K0FJDjfTORq feM+XopEjaQttXuylY9LzFrnUIoChXsXisnt63QGL8nyeFb0UbZuX4yw/Pya7fXQTVOftG9/ fQhNDeGXF6Xbv2O5Wl5bkzSkUQIDAQABozEwLzAfBgNVHREEGDAWgRRqZXJpdGhAamVyaXRo LnphLm5ldDAMBgNVHRMBAf8EAjAAMA0GCSqGSIb3DQEBBQUAA4GBAGWzXsBSg2IiSuwtvG38 VlJuxL3mK7whx9YmXLJd22pPR2tCSue8glGGoVH6GrIkwS/5tB5C2wIQhKebY6ExglnGVWeY HNATRPJlJGE1hChEpFyrZPZ2shVB2yEvZqyzvxkhyc6MPwTk9IIpD5leNwk+oHfKY/Xq3KtP G28usDKQMIIDPzCCAqigAwIBAgIBDTANBgkqhkiG9w0BAQUFADCB0TELMAkGA1UEBhMCWkEx FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYDVQQKExFU aGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZp c2lvbjEkMCIGA1UEAxMbVGhhd3RlIFBlcnNvbmFsIEZyZWVtYWlsIENBMSswKQYJKoZIhvcN AQkBFhxwZXJzb25hbC1mcmVlbWFpbEB0aGF3dGUuY29tMB4XDTAzMDcxNzAwMDAwMFoXDTEz MDcxNjIzNTk1OVowYjELMAkGA1UEBhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5n IChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5n IENBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDEpjxVc1X7TrnKmVoeaMB1BHCd3+n/ ox7svc31W/Iadr1/DDph8r9RzgHU5VAKMNcCY1osiRVwjt3J8CuFWqo/cVbLrzwLB+fxH5E2 JCoTzyvV84J3PQO+K/67GD4Hv0CAAmTXp6a7n2XRxSpUhQ9IBH+nttE8YQRAHmQZcmC3+wID AQABo4GUMIGRMBIGA1UdEwEB/wQIMAYBAf8CAQAwQwYDVR0fBDwwOjA4oDagNIYyaHR0cDov L2NybC50aGF3dGUuY29tL1RoYXd0ZVBlcnNvbmFsRnJlZW1haWxDQS5jcmwwCwYDVR0PBAQD AgEGMCkGA1UdEQQiMCCkHjAcMRowGAYDVQQDExFQcml2YXRlTGFiZWwyLTEzODANBgkqhkiG 9w0BAQUFAAOBgQBIjNFQg+oLLswNo2asZw9/r6y+whehQ5aUnX9MIbj4Nh+qLZ82L8D0HFAg k3A8/a3hYWLD2ToZfoSxmRsAxRoLgnSeJVCUYsfbJ3FXJY3dqZw5jowgT2Vfldr394fWxghO rvbqNOUQGls1TXfjViF4gtwhGTXeJLHTHUb/XV9lTzGCA2QwggNgAgEBMHYwYjELMAkGA1UE BhMCWkExJTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMT I1RoYXd0ZSBQZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBAhA7ypNUqgX9BNZmcx2yaEVM MAkGBSsOAwIaBQCgggHDMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkF MQ8XDTA4MDIwNjE0MDQ0N1owIwYJKoZIhvcNAQkEMRYEFM8tR2YwxnfPI6kQCADaMVPqthAG MFIGCSqGSIb3DQEJDzFFMEMwCgYIKoZIhvcNAwcwDgYIKoZIhvcNAwICAgCAMA0GCCqGSIb3 DQMCAgFAMAcGBSsOAwIHMA0GCCqGSIb3DQMCAgEoMIGFBgkrBgEEAYI3EAQxeDB2MGIxCzAJ BgNVBAYTAlpBMSUwIwYDVQQKExxUaGF3dGUgQ29uc3VsdGluZyAoUHR5KSBMdGQuMSwwKgYD VQQDEyNUaGF3dGUgUGVyc29uYWwgRnJlZW1haWwgSXNzdWluZyBDQQIQO8qTVKoF/QTWZnMd smhFTDCBhwYLKoZIhvcNAQkQAgsxeKB2MGIxCzAJBgNVBAYTAlpBMSUwIwYDVQQKExxUaGF3 dGUgQ29uc3VsdGluZyAoUHR5KSBMdGQuMSwwKgYDVQQDEyNUaGF3dGUgUGVyc29uYWwgRnJl ZW1haWwgSXNzdWluZyBDQQIQO8qTVKoF/QTWZnMdsmhFTDANBgkqhkiG9w0BAQEFAASCAQCv HWUmhYVQ7dEROXEnAOTUektnr8XQrjHxSNWtsxs4DX+pLDx/+D+4L787kRi/x1mqERBahVZQ AgPBSkOw3X7eYML6DzXlDVUPfrpzkJ2jzWHLQiIFFY0cyUCJ9GtNlXDcgblbmNK8rx3G7aha e5zgRdNG7St34k38LgmvKFuC2OzFzVYuIUZ4NaRFrIEVxZovyAG8LFat/Gf/pUZkrOHL25aB /UA0/y/fNMMVnjm0eBv5isrB7cnpYY6eV2VGR4g2+VhM+5w+IqSOfJx0mex19G/kbqZcC/YN XpcR+rPrs5zmE6jFw7kknhV2RPDWOSu7vfpWTpaWDQhg+F+HI2CIAAAAAAAA --------------ms040704080909070803010505--