I just checked in a fix to Webware CVS. Give it a try. - Geoff
On Sun, 2002-07-14 at 12:36, Geoff Talvola wrote: > This isn't a Python problem -- it's a bug in Webware. > > If you put a print statement at the end of UnboundMethodError.py you'll > find that the module actually gets imported multiple times. This > somehow causes a mismatch between the instances and the classes that > triggers the error you're noticing. > > If you restart the appserver, then use your web browser to directly > access the UnboundMethodError servlet, then go to UnboundMethod.html, > the error goes away. The images come up fine with no errors as long as > the appserver stays running. > > What this leads me to believe is that there is a race condition in > WebKit. If there are multiple simultaneous requests for a servlet that > hasn't yet been loaded, the module containing the servlet gets imported > multiple times simultaneously, causing various errors. This would > persist through the lifetime of the appserver since it never throws away > old servlet instances. But if the first access for the servlet occurs > in isolation, then the problem is avoided. > > I'll see if I can add some locking into ServletFactory to solve the > problem. > > - Geoff > > > On Sat, 2002-07-13 at 22:48, Roger Haase wrote: > > I got lucky yesterday and stumbled across a solution which has been right in > > front of me on the failing line. My problem seems to be rooted in Python. I > > wrote the following with the intention of posting to the Python bug list. > > Does this sound reasonable? > > > > > > TypeError: unbound Method > > > > I sometimes receive the following error: > > > > TypeError: unbound method getImage() must be called with UnboundMethodError > > instance as first argument (got UnboundMethodError instance instead) > > > > As the message states, the required object instance is the same as the object > > instance passed. > > > > The problem occurs only when using the calling form: > > className.methodName(self,arg,..) > > and an easy workaround is to use the form: > > self.methodName(arg,...) > > > > The error occurs rarely and unpredictably on both Linux and Windows/ME using > > Python 2.1.1 and 2.2.1 (ActiveState distribution on Windows) in a web > > application that uses Apache as a web server and the Webware/WebKit > > application framework. I was able to recreate the problem in a simple test > > case. See: > > http://www.users.qwest.net/~haaserd/Unbound/UnboundMethod.html > > http://www.users.qwest.net/~haaserd/Unbound/UnboundMethodError.py > > http://www.users.qwest.net/~haaserd/Unbound/Error1.html > > http://www.users.qwest.net/~haaserd/Unbound/Error2.html > > > > Note: UnboundMethod.html will fail to load images, do a view source. > > > > When loaded in its required environment, UnboundMethod.html displays 12 > > images by requesting a Webware/WebKit servlet: > > <img src="UnboundMethodError?fileName=P10100xx.JPG"> > > > > The Webware/WebKit AppServer passes control to the writeHTML function within > > the UnboundMethodError.py script. This forms a fully qualified filename and > > passes it to the getImage function via: > > img = UnboundMethodError.getImage(self,fileName,1000) > > The two html pages error1.html and error2.html are the Webware/WebKit > > formatted abends from 2 of the 12 invocations which failed at the above > > statement. The failing images in this case were numbers 3 and 8. The other > > 10 images were displayed correctly. > > > > For normal processing, the writeHTML function calls getImage. The recursive > > calls made by getImage were an unsuccessful attempt to increase the number of > > errors. The getImage2 function uses PIL to read the JPG file, reduce it to a > > thumbnail, and return the image. > > > > Until about one month ago, this error has occurred perhaps 20 times over a > > year on an AMD Athlon 700 and AMD Duron 1000 using Python 2.1.1 on both Linux > > and Windows/ME. The failure occurred in a script ShowPix.py which is more > > complex than the test case above. The usual circumstances were Apache and > > MySQL (and perhaps several other applications) were running, the > > Webware/WebKit AppServer is started/restarted and (rarely) the first > > transaction to display an image using ShowPix.py would fail on the unbound > > method error. After the first failure, there were no additional failures. I > > should note I am retired and doing this as a hobby so the 20 errors over a > > year occurred during 300 - 500 hours of programming and testing. > > > > Within the last month I changed my test system over to an Intel 1.5 and > > downloaded more current versions of all software, including Python 2.2.1 > > (ActiveState distribution under Windows) and the frequency of the error has > > increased. Instead of just the one failure described above, now when the > > problem occurs (immediately after starting/restarting the Webware AppServer) > > about 20% of the ShowPix.py transactions displaying images fail. In a web > > page which displays 9 to 100 images, the failing instances are scattered more > > or less evenly over the page. Redisplaying the same page results in about > > the same number of errors but a different set of images fail with each reload > > of the page. All pages using the ShowPix.py script will continue to produce > > failures at about the 20% rate until I restart the Webware Appserver. > > > > I have been unable to establish a cause/effect relationship as to why this > > error sometimes occurs. I suspect it is related to my starting another > > unrelated application such as MS Word or Excel, etc. during the course of my > > testing. I can not make the error occur on demand, and was only able to > > provide the test case above by creating the script during one of the recent > > failing episodes before restarting the Webware AppServer. Also, I have been > > unable to recreate the problem over a 3 hour period by running only the > > simple test case and restarting the AppServer many times. So there may be > > some other curious code in my Python-only application which sets up the error > > condition. > > > > I should note the original failing module (ShowPix.py) is one of my first > > Python programs written when I used the className.methodName(self) style of > > calls. When I changed the abending statement to the self.methodName() form, > > the error in ShowPix.py moved to a second instance of the > > className.methodName style of call. When I changed all of the calls within > > ShowPix.py to the self.methodName, the errors stopped and I took the > > opportunity (before stopping the AppServer) to write the test case described > > above. > > > > If you need any other information, I can be reached at [EMAIL PROTECTED] > > > > Roger Haase > > > > > > > > On Friday 12 July 2002 05:32 am, Geoff Talvola wrote: > > > On Thu, 2002-07-11 at 15:06, Roger wrote: > > > > Any ideas on what to try next? > > > > > > Not really. Are you willing to send me a copy of your code and the full > > > traceback you're getting? I think I need to actually see the code to > > > try to understand what's wrong. > > > > > > - Geoff > > > > > > > > ------------------------------------------------------- > > This sf.net email is sponsored by:ThinkGeek > > Welcome to geek heaven. > > http://thinkgeek.com/sf > > _______________________________________________ > > Webware-discuss mailing list > > [EMAIL PROTECTED] > > https://lists.sourceforge.net/lists/listinfo/webware-discuss > > > > > ------------------------------------------------------- > This sf.net email is sponsored by:ThinkGeek > Welcome to geek heaven. > http://thinkgeek.com/sf > _______________________________________________ > Webware-discuss mailing list > [EMAIL PROTECTED] > https://lists.sourceforge.net/lists/listinfo/webware-discuss ------------------------------------------------------- This sf.net email is sponsored by:ThinkGeek Welcome to geek heaven. http://thinkgeek.com/sf _______________________________________________ Webware-discuss mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/webware-discuss