Opened 15 years ago
Closed 15 years ago
#8840 closed task (fixed)
Release Trac 0.11.6
Reported by: | Christian Boos | Owned by: | Christian Boos |
---|---|---|---|
Priority: | high | Milestone: | 0.11.6 |
Component: | general | Version: | 0.11-stable |
Severity: | blocker | Keywords: | release |
Cc: | jonas@…, shanec@…, techtonik@…, mathieu.ravaux@…, saimen54@…, lists@…, | Branch: | |
Release Notes: | |||
API Changes: | |||
Internal Changes: |
Description (last modified by )
This task ticket is used to coordinate the finalization and testing of the next stable version of Trac, 0.11.6.
We're entering a one week period of testing for the rc1, tagged in [8845].
If everything goes well, release of 0.11.6 proper will happen right after that.
Testing
People having volunteered to contribute to release testing on TracDev/ReleaseTesting were added to the CC: list.
If you'd like to contribute, please fill an entry in the table you'll find there, detailing the configuration(s) you will test, and report the status of your testing in this ticket.
Status
- issues reported in comment:3 fixed (comment:8)
- issue reported in comment:10:ticket:8240 fixed (comment:11:ticket:8240)
Attachments (0)
Change History (16)
comment:1 by , 15 years ago
comment:2 by , 15 years ago
Description: | modified (diff) |
---|
mention the TracDev/ReleaseTesting summary page; as you can see there, t.e.o is now running 0.11.6rc1.
comment:3 by , 15 years ago
All tests pass on 2.3. There's one small issue that has probably gone unnoticed for a long time due to an except:
statement: the browser quickjump doesn't work on 2.3, due to a missing import:
-
trac/versioncontrol/svn_fs.py
diff --git a/trac/versioncontrol/svn_fs.py b/trac/versioncontrol/svn_fs.py
a b 58 58 from trac.versioncontrol.cache import CachedRepository 59 59 from trac.versioncontrol.svn_authz import SubversionAuthorizer 60 60 from trac.util import embedded_numbers 61 from trac.util.compat import sorted 61 62 from trac.util.text import exception_to_unicode, to_unicode 62 63 from trac.util.translation import _ 63 64 from trac.util.datefmt import utc
Another minor issue is that the fix from #8582 and #8357 doesn't work on 2.3 - 2.5, because socket.error
is not a subclass of IOError
in these versions. This was only done in 2.6. We could handle socket.error
as well, and get the error code from e.args[0]
instead of e.errno
:
-
trac/web/wsgi.py
diff --git a/trac/web/wsgi.py b/trac/web/wsgi.py
a b 15 15 # Author: Christopher Lenz <cmlenz@gmx.de> 16 16 17 17 import errno 18 import socket 18 19 import sys 19 20 from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler 20 21 from SocketServer import ForkingMixIn, ThreadingMixIn … … 181 182 def handle_one_request(self): 182 183 try: 183 184 environ = self.setup_environ() 184 except IOError, e:185 except (IOError, socket.error), e: 185 186 environ = None 186 if e. errnoin (errno.EPIPE, errno.ECONNRESET, 10053, 10054):187 if e.args[0] in (errno.EPIPE, errno.ECONNRESET, 10053, 10054): 187 188 # client disconnect 188 189 self.close_connection = 1 189 190 else: … … 220 221 self.handler.send_header(name, value) 221 222 self.handler.end_headers() 222 223 self.handler.wfile.write(data) 223 except IOError, e: 224 if e.errno in (errno.EPIPE, 10053, 10054): # client disconnect 224 except (IOError, socket.error), e: 225 if e.args[0] in (errno.EPIPE, errno.ECONNRESET, 10053, 10054): 226 # client disconnect 225 227 self.handler.close_connection = 1 226 228 else: 227 229 raise
(The check for ECONNRESET
was also missing in the second block, by bad.)
Other than that, everything runs smoothly on 2.3.
follow-up: 5 comment:4 by , 15 years ago
Both patches looks good, you should apply them.
However, I wonder how robust getting socket.error
will be, as I've seen some strange exceptions in similar code (see ticket:3957#comment:26).
follow-up: 6 comment:5 by , 15 years ago
Replying to cboos:
Both patches looks good, you should apply them.
Actually, it's even a bit more complicated. I can get the same exception even with the patch in tracd
, by refreshing very fast in Firefox (keep your finger on F5 to reproduce the issue):
Exception happened during processing of request from ('172.16.30.26', 1748) Traceback (most recent call last): File "/opt/local/lib/python2.3/SocketServer.py", line 463, in process_request_thread self.finish_request(request, client_address) File "/opt/local/lib/python2.3/SocketServer.py", line 254, in finish_request self.RequestHandlerClass(request, client_address, self) File "/opt/local/lib/python2.3/SocketServer.py", line 521, in __init__ self.handle() File "/opt/local/lib/python2.3/BaseHTTPServer.py", line 326, in handle self.handle_one_request() File "/Users/joe/src/trac/0.11.6rc1/trac/web/wsgi.py", line 196, in handle_one_request gateway.run(self.server.application) File "/Users/joe/src/trac/0.11.6rc1/trac/web/wsgi.py", line 105, in run self._write('') File "/Users/joe/src/trac/0.11.6rc1/trac/web/wsgi.py", line 221, in _write self.handler.send_response(int(status[:3])) File "/opt/local/lib/python2.3/BaseHTTPServer.py", line 378, in send_response self.send_header('Date', self.date_time_string()) File "/opt/local/lib/python2.3/BaseHTTPServer.py", line 383, in send_header self.wfile.write("%s: %s\r\n" % (keyword, value)) File "/opt/local/lib/python2.3/socket.py", line 254, in write self.flush() File "/opt/local/lib/python2.3/socket.py", line 241, in flush self._sock.sendall(buffer) error: (32, 'Broken pipe')
So I wonder (haven't looked at the code yet):
- If there are other locations where these exceptions should be handled, or
- If the exceptions should be handled higher up the stack
However, I wonder how robust getting
socket.error
will be, as I've seen some strange exceptions in similar code (see ticket:3957#comment:26).
Is it socket.error
or select.error
that's problematic there?
follow-up: 7 comment:6 by , 15 years ago
Replying to rblank:
Replying to cboos:
File "/Users/joe/src/trac/0.11.6rc1/trac/web/wsgi.py", line 221, in _write
…
error: (32, 'Broken pipe')
I don't see how that can happen if you fixed the exception checking as in comment:3?
- If the exceptions should be handled higher up the stack
This not really possible I think, as _write
will be called in isolation from req.send
, so we need to catch the error directly there.
Example traceback I got after such a refactoring:
Traceback (most recent call last): File "C:\Workspace\src\trac\repos\0.11-stable\trac\web\main.py", line 450, in _dispatch_request dispatcher.dispatch(req) File "C:\Workspace\src\trac\repos\0.11-stable\trac\web\main.py", line 230, in dispatch req.send(output, content_type or 'text/html') File "C:\Workspace\src\trac\repos\0.11-stable\trac\web\api.py", line 359, in send self.write(content) File "C:\Workspace\src\trac\repos\0.11-stable\trac\web\api.py", line 463, in write self._write(data) File "C:\Workspace\src\trac\repos\0.11-stable\trac\web\wsgi.py", line 218, in _write self.handler.send_response(int(status[:3])) ...
However, I wonder how robust getting
socket.error
will be, as I've seen some strange exceptions in similar code (see ticket:3957#comment:26).Is it
socket.error
orselect.error
that's problematic there?
No idea yet, and of course, no idea why this could even happen.
The only difference between the two is that select
is directly a C extension and that socket.py does a from _socket import *
in order to get the error
.
comment:7 by , 15 years ago
comment:8 by , 15 years ago
Finally, I'm not able to reproduce the issue with both patches applied, so I guess they fix it for good. Applied in [8849].
comment:9 by , 15 years ago
Description: | modified (diff) |
---|
comment:10 by , 15 years ago
Description: | modified (diff) |
---|
The issue resulting in failing tests on Tim's buildbot have been fixed.
comment:11 by , 15 years ago
t.e.o is running [8857]. I'm not sure it's worth creating a rc2, the diffs are quite small and we could specifically test for the changes made since 0.11.6rc1, while testers at large hopefully continue to test the rest.
comment:12 by , 15 years ago
Fedora 11: All tests passed
CentOS5: SKIPPED reST tests, remaining tests passed
comment:13 by , 15 years ago
OS X 10.5.6, Python 2.3.7, SQLite 3.6.20: all tests pass, except:
SKIP: validation of XHTML output in functional tests (no lxml installed) SKIP: RegressionTestTicket5819 (python 2.3 issue)
- Environment creation ok
- General usage ok
- Revision log RSS and changelog formats ok
- Creating tickets and adding attachments with only
TICKET_CREATE
andTICKET_APPEND
ok - mailto: link visibility ok
- No more
ECONNRESET
exceptions - I'm able to trigger the "TimeoutError: Unable to get database connection within 20 seconds" by loading WikiStart in a tab and keeping my finger on F5 for 30 seconds. When that happens, a simple refresh loads the page correctly (i.e. the error is not permanent).
I'd say this is a "pass".
comment:14 by , 15 years ago
Gentoo x86, Python 2.6.2, SQLite 3.6.19:
- Update of two installation successful
comment:15 by , 15 years ago
OS X 10.5.6, Python 2.6.4, SQLite 3.6.20: all tests pass, except:
SKIP: reST wiki tests (no docutils)
(That one is due to the module roman
missing on OS X.)
- Environment creation ok
- General usage ok
- Same "Unable to get database connection" errors in the same conditions as above
OS X 10.5.6, Python 2.6.4, MySQL 5.1.40: all tests pass, with the same SKIP.
OS X 10.5.6, Python 2.6.4, PostgreSQL 8.3.8: all tests pass, with the same SKIP.
comment:16 by , 15 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
Ok, too bad for the few "Unable to get database connection" errors. Even if it occurs only in "extreme" conditions, this means we still have some work ahead of us on this topic, but probably for 0.12.x only ;-)
Other than that, the release seems quite robust.
The Latest Stable Release is now 0.11.6, as tagged in tags/trac-0.11.6.
A big Thank you to all the people who helped test this release!
Packages are now available at the usual place, see TracDownload#LatestReleaseCandidate.