Chris, thanks for the response. Good idea about watching the postgres logs; I'm going to look at that right now.
Caching sounds like a likely culprit to me, too. Do you have any ideas for how I could prove/disprove that? Can I turn off caching entirely? Presently I'm using memcached, in conjunction with the UpdateCache and FetchFromCache middleware. Another data point: the thing that seems to distinguish my satchmo implementation from 'normal' ones is that I have two sites (two django projects) on my apache server. They are both operating out of the same virtualenv against a single installation of satchmo. I bring it up because the 'random' nature of the error feels kind of like a threading issue. --Stuart On Sat, Jun 12, 2010 at 12:11 PM, Chris Moffitt <[email protected]> wrote: > Do you see anything in your postgres logs? Sounds like some sort of caching > issue but I'm guessing. > > -Chris > > On Thu, Jun 10, 2010 at 12:29 PM, Stuart Laughlin <[email protected]> > wrote: >> >> I fear I type too much. Let me try this a different way. >> >> I have a template tag (discount_price) that intermittently breaks -- >> throws a ProgrammingError with "Error in formatting: couldn't adapt" >> message (debian stable, apache2, mod-wsgi, satchmo 0.9.1. stable). I >> don't know what causes it to happen. Restarting the server makes the >> problem go away. While the problem is happening, I can fire up the >> django shell and invoke the template tag with no problems. It seems it >> must have something to do with the apache process's connection to the >> postgresql database. >> >> Has anyone seen anything like this before? >> >> >> --Stuart >> >> On Wed, Jun 9, 2010 at 11:31 PM, Stuart Laughlin <[email protected]> >> wrote: >> > Hello Everyone -- >> > >> > I have a recurring intermittent problem that I've been battling off >> > and on for the past few months. The error initially manifests itself >> > as a ProgrammingError in the product template on the bit that says "{{ >> > product|discount_price:sale|currency }}". I've been dealing with it up >> > till now by commenting it out, avoiding using the discount_price >> > template tag, etc. Finally I resolved to get to the bottom of it and >> > added some logging to the get_product view. Well, the only effect that >> > had was to move the origin of the error from the template to my >> > logging statement in the view (but at least it seems like I get a >> > better stack trace when the error happens in the view!). >> > >> > At any rate, I'm looking at my stack trace, and I think I understand >> > what's happening. My logging statement in the get_product() view >> > throws an error when I invoke the discount_price template-tag method: >> > >> > log.debug("product|discount_price:sale is %s" % >> > discount_price(product, best_discount)) >> > >> > The error appears to actually occur in product/prices.py on line 14 >> > here: >> > >> > 8. qty_discounts = product.price_set.exclude( >> > 9. expires__isnull=False, >> > 10. expires__lt=datetime.date.today()).filter(quantity__lte=qty) >> > 11. >> > 12. adjustments = None >> > 13. >> > 14. if qty_discounts.count() > 0: >> > 15. # Get the price with the quantity closest to the one specified >> > without going over >> > 16. adjustments = qty_discounts.order_by('price','-quantity', >> > 'expires')[0].adjustments(product) >> > >> > Line 14 executes the query defined in lines 8-10, and qty_discounts >> > ends up being set to "Error in formatting: can't adapt". >> > >> > At the moment I'm getting this error every time I navigate to a >> > product (which obviously invokes my get_product view). I suspect that >> > when I restart apache, the error will go away. >> > >> > But here's the really odd thing: I can use "manage.py" to fire up the >> > shell and run the discount_price template tag with no problems, even >> > though I'm running it exactly like I am in the logging statement. So I >> > find this very puzzling. Has anyone seen anything like this? I'm >> > really hoping someone can point me in the right direction. >> > >> > Oh, and I'm on version 0.9.1 final. >> > >> > Full traceback follows my signature. >> > >> > >> > Thanks very much! >> > >> > --Stuart >> > >> > Environment: >> > >> > Request Method: GET >> > Request URL: >> > http://10.10.20.20/vw/product/basic-black-center-console-304734/ >> > Django Version: 1.1.1 >> > Python Version: 2.5.2 >> > Installed Applications: >> > ['django.contrib.sites', >> > 'satchmo_store.shop', >> > 'django.contrib.admin', >> > 'django.contrib.auth', >> > 'django.contrib.admindocs', >> > 'django.contrib.contenttypes', >> > 'django.contrib.comments', >> > 'django.contrib.sessions', >> > 'django.contrib.sitemaps', >> > 'registration', >> > 'keyedcache', >> > 'livesettings', >> > 'l10n', >> > 'sorl.thumbnail', >> > 'satchmo_store.contact', >> > 'tax', >> > 'tax.modules.no', >> > 'tax.modules.area', >> > 'tax.modules.percent', >> > 'shipping', >> > 'product', >> > 'product.modules.configurable', >> > 'payment', >> > 'payment.modules.dummy', >> > 'payment.modules.giftcertificate', >> > 'satchmo_utils', >> > 'app_plugins', >> > 'satchmo_ext.productratings', >> > 'satchmo_ext.recentlist', >> > 'satchmo_ext.upsell', >> > 'satchmo_ext.wishlist', >> > 'satchel', >> > 'south', >> > 'ecomm', >> > 'filer', >> > 'tinymce', >> > 'debug_toolbar'] >> > Installed Middleware: >> > ('django.middleware.cache.UpdateCacheMiddleware', >> > 'django.middleware.common.CommonMiddleware', >> > 'django.contrib.sessions.middleware.SessionMiddleware', >> > 'django.middleware.locale.LocaleMiddleware', >> > 'django.contrib.auth.middleware.AuthenticationMiddleware', >> > 'django.middleware.doc.XViewMiddleware', >> > 'threaded_multihost.middleware.ThreadLocalMiddleware', >> > 'satchmo_store.shop.SSLMiddleware.SSLRedirect', >> > 'debug_toolbar.middleware.DebugToolbarMiddleware', >> > 'passion.middleware.FilterPersistMiddleware', >> > 'django.middleware.cache.FetchFromCacheMiddleware') >> > >> > >> > Traceback: >> > File >> > "/usr/local/python-envs/satch/lib/python2.5/site-packages/django/core/handlers/base.py" >> > in get_response >> > 92. response = callback(request, *callback_args, >> > **callback_kwargs) >> > File >> > "/usr/local/python-envs/satch/src/satchmo/satchmo/apps/product/views/__init__.py" >> > in get_product >> > 161. log.debug("product|discount_price:sale is %s" % >> > discount_price(product, best_discount)) >> > File >> > "/usr/local/python-envs/satch/src/satchmo/satchmo/apps/product/templatetags/satchmo_discounts.py" >> > in discount_price >> > 107. return untaxed_discount_price(product, discount) >> > File >> > "/usr/local/python-envs/satch/src/satchmo/satchmo/apps/product/templatetags/satchmo_discounts.py" >> > in untaxed_discount_price >> > 117. up = product.unit_price >> > File >> > "/usr/local/python-envs/satch/src/satchmo/satchmo/apps/product/models.py" >> > in _get_fullPrice >> > 925. price = get_product_quantity_price(self, Decimal('1')) >> > File >> > "/usr/local/python-envs/satch/src/satchmo/satchmo/apps/product/prices.py" >> > in get_product_quantity_price >> > 32. adjustments = get_product_quantity_adjustments(product, >> > qty=qty, parent=parent) >> > File >> > "/usr/local/python-envs/satch/src/satchmo/satchmo/apps/product/prices.py" >> > in get_product_quantity_adjustments >> > 14. if qty_discounts.count() > 0: >> > File >> > "/usr/local/python-envs/satch/lib/python2.5/site-packages/django/db/models/query.py" >> > in count >> > 292. return self.query.get_count() >> > File >> > "/usr/local/python-envs/satch/lib/python2.5/site-packages/django/db/models/sql/query.py" >> > in get_count >> > 376. number = obj.get_aggregation()[None] >> > File >> > "/usr/local/python-envs/satch/lib/python2.5/site-packages/django/db/models/sql/query.py" >> > in get_aggregation >> > 348. result = query.execute_sql(SINGLE) >> > File >> > "/usr/local/python-envs/satch/lib/python2.5/site-packages/django/db/models/sql/query.py" >> > in execute_sql >> > 2369. cursor.execute(sql, params) >> > File >> > "/usr/local/python-envs/satch/lib/python2.5/site-packages/django/db/backends/util.py" >> > in execute >> > 19. return self.cursor.execute(sql, params) >> > >> > Exception Type: ProgrammingError at >> > /product/basic-black-center-console-304734/ >> > Exception Value: can't adapt >> > >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Satchmo users" group. >> To post to this group, send email to [email protected]. >> To unsubscribe from this group, send email to >> [email protected]. >> For more options, visit this group at >> http://groups.google.com/group/satchmo-users?hl=en. >> > > -- > You received this message because you are subscribed to the Google Groups > "Satchmo users" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/satchmo-users?hl=en. > -- You received this message because you are subscribed to the Google Groups "Satchmo users" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/satchmo-users?hl=en.
