Download Install Tutorial Docs FAQ Tools WikiLicense Team IRC Planet Involvement Shop Book

{5} Assigned, Active Tickets by Owner (Full Description) (13 matches)

List tickets assigned, group by ticket owner. This report demonstrates the use of full-row display.

dowski

Ticket Summary Component Milestone Type Severity Created
Description
#722 Handling bad POST retries from IE6/IE7 wsgiserver 3.2 enhancement None 08/29/07

See this KB article for the MS version of the story.

In a nutshell, if the connection is reset when IE is in the middle of a POST, it will retry the POST without confirmation, but without the message body. This causes the CP WSGI server to hand the request off to the CP WSGI application, which times out while trying to read the non-existent POST body.

Here is a diagram of the flow/state of the conversation:

 Client                          CherryPy Server
 sends POST req    --->     <--- Socket idle timeout (default 10 secs) (FIN)

 receives FIN      <---

 sends ACK         --->          
                            ---> Receives ACK, socket to FIN_WAIT_2

                            ---> Receives POST from above on closed socket

                            <--- sends RST
 Receives RST     <---

 (socket is closed)

 resends POST
 *headers only*    --->          
                            ---> Receives POST headers
                                 FieldStorage object times
                                 out attempting to read
                                 non-existant message body
                            <--- Sends 500 response


fumanchu

Ticket Summary Component Milestone Type Severity Created
Description
#852 CherryPy always overrides user specified log levels CherryPy code 3.1 defect None 09/02/08

CherryPy unconditionally sets the log level for loggers used by cherrypy to DEBUG for error logs and INFO for access logs. This may override log levels configured by the user since this is done during startup.

From IRC:
[04:40am] askadar: I just want to log everything to sys.stdout, but not the requests since the access log is being written by lighttpd anyway
....
[04:40am] askadar: so no matter what I do the root logger, access records are still being written to stdout
....
[04:43am] Lawouach_: setting the log.screen : False doesn't work as expected?
[04:44am] askadar: I want to disable the default logging
[04:44am] askadar: and have only the root logger write to stdout
[04:44am] askadar: log.screen: False turns of all logging
[04:44am] askadar: by introducing the root logger with level WARNING, cherrypy's internal stuff suddenly starts to log again,too
[04:44am] askadar: and that is very unexpected
[04:45am] Lawouach_: I see
[04:45am] askadar: I had hoped to filter all access records by setting the root logger level to WARNING, since access stuff is level INFO
[04:45am] Lawouach_: If you think there is a design issue here you ought to open a ticket with an alternative (patch are even better but not mandatory

There is no reason why CherryPy should set these levels, especially not in production environments. The solution is to just leave the setting alone. Patch is attached.


#571 Make CP static file performance comparable to Apache CherryPy code enhancement None 09/22/06

I can dream, can't I?


#645 A value of 0 for socket_port should cause CP to bind to an avaibale unused port wsgiserver 3.2 enhancement None 01/16/07

When socket_port is specified as 0, an exception is thrown as follows:

File
"/localhome/raghu/localwork/cherrypy/svn.cherrypy.org/trunk/cherrypy/_cpserver.py",
line 69, in quickstart
    self.start()
  File
"/localhome/raghu/localwork/cherrypy/svn.cherrypy.org/trunk/cherrypy/_cpserver.py",
line 95, in start
    self._start_http(httpserver)
  File
"/localhome/raghu/localwork/cherrypy/svn.cherrypy.org/trunk/cherrypy/_cpserver.py",
line 118, in _start_http
    self.wait(httpserver)
  File
"/localhome/raghu/localwork/cherrypy/svn.cherrypy.org/trunk/cherrypy/_cpserver.py",
line 159, in wait
    wait_for_occupied_port(*bind_addr)
  File
"/localhome/raghu/localwork/cherrypy/svn.cherrypy.org/trunk/cherrypy/_cpserver.py",
line 247, in wait_for_occupied_port
    raise IOError(msg)
IOError: Port 0 not bound on 'localhost'

I am using the latest code from the trunk. It appears to me that even though wsgiserver is properly passing 0 to socket.bind (and hence binding to an unused port), other parts of the code still use "configured" port which is 0.


#726 Support Zope/EvalException conventions in default traceback output CherryPy code enhancement None 09/04/07

As documented here:

http://pythonpaste.org/class-paste.exceptions.collector.ExceptionCollector.html

For example, Genshi makes extensive use of __traceback_hide__ to get rid of frames in tracebacks that are not helpful to a developer trying to fix an error in a template.


#767 Replace sessions.py with something good sessions enhancement None 01/13/08

The session library in CP isn't very good: it's hard to extend, partly because IMO it tries to do too much. For example, it shouldn't try to allow both eager and lazy locking. It also does too much at the class level instead of the instance level; that is, instead of instantiating a Session object per request, it should just stick all that state into cherrypy.request--it would then be free to instantiate a FileSession? object per Application, rather than using class variables to manage config across requests.


#815 cherrypy doesn't handle case where URL path contains multiple slashes wsgiserver 3.1 defect None 05/19/08

If you feed something like

GET //status/Status/ HTTP/1.1

cherrypy will treat status as hostname and Status as path.

As a result links like http://localhost//status/Status/ will produce 404.


#829 @tools.response.headers doesn't appear to work with response.stream True CherryPy code 3.2 defect None 06/24/08

Using CherryPy 3.0.3.

I have a method setup as such:

@cherrypy.expose
@cherrypy.tools.response_headers(headers = \
           [('Content-Type','application/data')])
def my_method:
        ...
        yield "blah"
        ...

my_method._cp_config = { 'response.stream': True }

Whenever the method is executed by cherrypy's default dispatcher, the Content-Type is text/html, not application/data as I expected.

However, if I changed the method setup to be like this:

@cherrypy.expose
def my_method:
        ...
        yield "blah"
        ...

my_method._cp_config = {
        'response.stream': True,
        'tools.response_headers.on': True,
        'tools.response_headers.headers': [('Content-Type', 'application/data')]
}

...then it works.

Ideas?


#834 lighty+fcgi+flup+cherrypy+sessions stored in files deadlocks sessions 3.0 defect None 07/03/08

Well, summary pretty much says everything. If I let the sessions be stored in RAM, everything functions normally. Here are some configs:

lighttpd.conf:

fastcgi.server = (
"/" => ( "main.py" => (
	"bin-path" => "/home/apache/htdocs/python/main.py",
	"socket"   => "/tmp/script.sock",
	"check-local" => "disable",
	"disable-time" => 1,
	"min-procs" => 1,
	"max-procs" => 1,
	),
      ),
)

snippet of /home/apache/htdocs/python/main.py:

cherrypy.config.update('/home/apache/htdocs/python/cherrypy.conf')
app = cherrypy.tree.mount(site,'/','/home/apache/htdocs/python/cherrypy.conf')
cherrypy.config.update({'engine.autoreload_on':False})
cherrypy.engine.start(blocking=False)
try:
    WSGIServer(app).run()
finally:
    cherrypy.engine.stop()

#841 Make match module of Autoreloader overwriteable in subclasses engine 3.1 enhancement None 07/22/08

The Autoreloader class has the entire logic for reloading in its run() method. The patch moves the match check into a separate method. With the patch subclasses of Autoreloader can create a custom check method based on the name and module.

Index: cherrypy/process/plugins.py
===================================================================
--- cherrypy/process/plugins.py (revision 9407)
+++ cherrypy/process/plugins.py (working copy)
@@ -432,11 +432,15 @@
         Monitor.start(self)
     start.priority = 70

+    def match_hook(self, name, module):
+        """Check if module should be considered for reloading."""
+        return re.match(self.match, name)
+
     def run(self):
         """Reload the process if registered files have been modified."""
         sysfiles = set()
         for k, m in sys.modules.items():
-            if re.match(self.match, k):
+            if self.match_hook(k, m):
                 if hasattr(m, '__loader__'):
                     if hasattr(m.__loader__, 'archive'):
                         k = m.__loader__.archive


#860 Robustness issue in exception catching wsgiserver 3.0 defect None 09/24/08

In wsgiserver.tick(), there is a selective exception catching clause:

        except socket.error, x:
            msg = x.args[1]
            if msg in ("Bad file descriptor", "Socket operation on non-socket"):
                # Our socket was closed.
                return
            if msg == "Resource temporarily unavailable":
                # Just try again. See http://www.cherrypy.org/ticket/479.
                return
            raise

Problem arises when cherrypy is used with a locale other than C/english: error messages do not match. The error code (i.e. x.args[0]) should be used instead.


#861 Missing socket.error exception catching wsgiserver 3.0 defect None 09/24/08

In wsgiserver.tick, some socket.error exceptions are caught and ignored ("Bad file descriptor", "Socket operation on non-socket", "Resource temporarily unavailable").

When using in the same application gtk and cherrypy, displaying a gtk dialog (such as a fileselector) while cause the server to crash with the "Interrupted system call" exception.

Catching this exception solves the issue :

--- /tmp/__init__.py    2008-09-24 18:13:55.000000000 +0200
+++ /var/lib/python-support/python2.5/cherrypy/wsgiserver/__init__.py   2008-09-24 17:40:30.000000000 +0200
@@ -913,6 +913,8 @@
             if msg == "Resource temporarily unavailable":
                 # Just try again. See http://www.cherrypy.org/ticket/479.
                 return
+            if msg == "Interrupted system call":
+                return
             raise
     
     def _get_interrupt(self):

But considering also #860 (use error code rather than error message), the except clause should rather catch the error code 4.


guest

Ticket Summary Component Milestone Type Severity Created
Description
#866 Error *and* access log printed to stderr CherryPy code 3.1 defect None 10/20/08

In 3.1.0 final both, the error and the access log are printed to stderr. As already stated in #747, the access log should go to stdout and the error log to stderr (only then, both of them were printed to stdout).

A workaround is

cherrypy.log._set_screen_handler(cherrypy.log.access_log, False) cherrypy.log._set_screen_handler(cherrypy.log.access_log, True, stream=sys.stdout)

but using underscore-methods is not very user-friendly. Furthermore, this behaviour was new in 3.1.0 final (if I remember correctly, beta 3 did it fine)


Note: See TracReports for help on using and creating reports.

Hosted by WebFaction

Log in as guest/cpguest to create tickets