From: Jeremy Thurgood Date: 2008-02-07T17:28:05+09:00 Subject: Re: Timeout::Error This is a cryptographically signed message in MIME format. --------------ms040801000902060208030700 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Nobuyoshi Nakada wrote: > Hi, > > At Wed, 6 Feb 2008 18:05:45 +0900, > Jeremy Thurgood wrote in [ruby-core:15374]: >> What was the change? I currently lack the time and resources to go >> digging through commit logs for it. > > TimeoutError was a subclass of StandardError till 1.6, but now > it inherits Interrupt which is not a subclass of StandardError. Any idea why this changed? >> Thanks for the patch. It only fixes the symptom, however, not the >> problem. I still have to explicitly handle timeouts in (for example) >> HTTP requests instead of simply noting a general failure (in a bare >> "rescue" clause), logging the exception and retrying a couple of times >> before giving up and moving on to something else. For most of my use >> cases, this is exactly how I would handle HTTP requests in long-running >> services that require me to keep state. > > I'm just curious, do you run long-running services in irb? No, I first noticed this in irb. I write long-running services in Ruby that may unknowingly invoke timeout() deep within libraries and thus crash. Try the following piece of code, imagining that the timeout block actually does something with a possibly slow network: #!/usr/bin/env ruby require 'timeout' while true begin randnum = (rand*10).to_i Timeout::timeout(6) do puts "Doing something for #{randnum} seconds..." sleep(randnum) end puts "I did something without timing out!" rescue puts "Oops, something went wrong. I'll try again." end end --J -- --------------ms040801000902060208030700 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 MQ8XDTA4MDIwNzA4MjgxNlowIwYJKoZIhvcNAQkEMRYEFPEar0tsddWwxyHTAROmusQ5hsYF MFIGCSqGSIb3DQEJDzFFMEMwCgYIKoZIhvcNAwcwDgYIKoZIhvcNAwICAgCAMA0GCCqGSIb3 DQMCAgFAMAcGBSsOAwIHMA0GCCqGSIb3DQMCAgEoMIGFBgkrBgEEAYI3EAQxeDB2MGIxCzAJ BgNVBAYTAlpBMSUwIwYDVQQKExxUaGF3dGUgQ29uc3VsdGluZyAoUHR5KSBMdGQuMSwwKgYD VQQDEyNUaGF3dGUgUGVyc29uYWwgRnJlZW1haWwgSXNzdWluZyBDQQIQO8qTVKoF/QTWZnMd smhFTDCBhwYLKoZIhvcNAQkQAgsxeKB2MGIxCzAJBgNVBAYTAlpBMSUwIwYDVQQKExxUaGF3 dGUgQ29uc3VsdGluZyAoUHR5KSBMdGQuMSwwKgYDVQQDEyNUaGF3dGUgUGVyc29uYWwgRnJl ZW1haWwgSXNzdWluZyBDQQIQO8qTVKoF/QTWZnMdsmhFTDANBgkqhkiG9w0BAQEFAASCAQA1 l7kYFGoUhphRk+oDe5h9OQwzvJXPO/tn4I6FEx8lanj3S2oUyQP7cJw2zUmBt1qmuby7Ufre SNMoq1UK5LYSYa2PCjmsXtmHnd9MQyY/gbc67GlWxwYkW8yRMKO1pS/bDV8uAfsmPZ4LvV5A c+8lTnrZORgEePOtkJVClZCO5kNK/MbwW6HNwSv1nTitJPVvI98NcMX/rhbLIiPTKghFjRvC 0wV6asaW8XXVuXEsOMmhb50ChWnHzQmXbReG1GcuWuuIp3MkGl6kf5qg/qDr2SWAuP0JtGP7 354jV1Qi4+7X24ZR5XEkDNy4ijLtWhctMR3gm3Z9Uj2yqSNdS788AAAAAAAA --------------ms040801000902060208030700--