[storm] what causes: storm.exceptions.LostObjectError: Can't obtain values from the database
Steve Kieu
msh.computing at gmail.com
Fri Jan 7 08:39:24 UTC 2011
Hi there,
Yes you are right - The table should have the compose key as unique but
VirtualMart does not do it - and imposing it cause problem.
Thank you very much for your help, I highly appreciated it and learned
another experience with storm :-)
Cheers,
On Fri, Jan 7, 2011 at 9:19 AM, Steve Kieu <msh.computing at gmail.com> wrote:
>
> I have thought about a case - if the compose primary key is *not* actually
> unique in the db it may cause the problem
>
> so I will try your idea tonight (I am at work now ) to see if it gets
> fixed, probably have to change the logic there )
>
> Thanks
>
>
>
> On Fri, Jan 7, 2011 at 9:13 AM, Steve Kieu <msh.computing at gmail.com>wrote:
>
>> I think (from reading storm doc somewhere) I can use a unique compose key
>> to tell storm that it can be used as primary tuple in get function. In fact
>> I used this in various other scripts which runs fine.
>>
>> If this is the problem it does not explain why everything is working -
>> that is I can print out all Product, etc inside the find tuple - I can even
>> create new record for the ProductDiscountHistory fine. Bad thing *only*
>> happen when I change the product_discount_id of the Product to use the new
>> discount.
>>
>> I tried to use find in getone method - no change
>>
>> Tried to invalidate the pt after saving the id key, then get the Product
>> using that id key and change its product_discount_id, - no change
>>
>> Enable DEBUG in storm and does not print any usefull information - just
>> the last SQL statement as normal and boom - error
>>
>> Nevertheless I will try your suggestion tonight but I strongly believe it
>> does not solve the problem. It happens with both python version 2.7.1 and
>> Ubuntu lucid stock python (2.6.x) so unlikely it is python GC problem
>>
>>
>>
>> Cheers,
>>
>>
>>
>>
>> On Fri, Jan 7, 2011 at 6:00 AM, Gerdus van Zyl <gerdusvanzyl at gmail.com>wrote:
>>
>>> in ProductDiscount
>>> you have both:
>>> __storm_primary__ = 'amount', 'is_percent', 'start_date'
>>> and
>>> id = Int(name='discount_id', primary=True)
>>>
>>> I don't think that you can have two definition of the primary key that
>>> are different;
>>>
>>> and then in ProductDiscount.getone
>>> you use
>>> one = store.get(ProductDiscount, (amount, is_percent, start_date) )
>>> according to me you need to use find
>>>
>>>
>>> On Thu, Jan 6, 2011 at 3:12 PM, Steve Kieu <msh.computing at gmail.com>wrote:
>>>
>>>> Hello,
>>>>
>>>> I have a simple script (attached to this email )- and evrytime I run, i
>>>> got
>>>>
>>>>
>>>> stevek at lenovo:~/hang-hieu-uc/python$ python bulk_price_update.py
>>>> Number of record: 202
>>>> /usr/lib/python2.6/dist-packages/storm/database.py:342: Warning: Data
>>>> truncated for column 'amount' at row 1
>>>> return function(*args, **kwargs)
>>>> Traceback (most recent call last):
>>>> File "bulk_price_update.py", line 137, in <module>
>>>> process()
>>>> File "bulk_price_update.py", line 129, in process
>>>> new_pt.product_discount_id = new_pd.id; store.flush()
>>>> File "/usr/lib/python2.6/dist-packages/storm/properties.py", line 60,
>>>> in __get__
>>>> return obj_info.variables[column].get()
>>>> File "/usr/lib/python2.6/dist-packages/storm/variables.py", line 178,
>>>> in get
>>>> self.event.emit("resolve-lazy-value", self, self._lazy_value)
>>>> File "/usr/lib/python2.6/dist-packages/storm/event.py", line 53, in
>>>> emit
>>>> if callback(owner, *(args+data)) is False:
>>>> File "/usr/lib/python2.6/dist-packages/storm/store.py", line 891, in
>>>> _resolve_lazy_value
>>>> result, result.get_one())
>>>> File "/usr/lib/python2.6/dist-packages/storm/store.py", line 746, in
>>>> _set_values
>>>> raise LostObjectError("Can't obtain values from the database "
>>>> storm.exceptions.LostObjectError: Can't obtain values from the database
>>>> (object got removed?)
>>>>
>>>> I am stuck at new idea to fix it, please help
>>>>
>>>> If I do not modify the product_discount_id of a product then it printed
>>>> values fine and create in the history table fine. First I directly modify
>>>> the pt object, but then try to get a product again using pt.id,
>>>> however it does not help in both cases.
>>>>
>>>> The DB is VirutalMart DB if it helps
>>>>
>>>> Many thanks in advance
>>>>
>>>>
>>>>
>>>> --
>>>> Steve Kieu
>>>>
>>>> --
>>>> storm mailing list
>>>> storm at lists.canonical.com
>>>> Modify settings or unsubscribe at:
>>>> https://lists.ubuntu.com/mailman/listinfo/storm
>>>>
>>>>
>>>
>>>
>>> --
>>> Gerdus van Zyl
>>> http://about.me/gerdus
>>>
>>
>>
>>
>> --
>> Steve Kieu
>>
>
>
>
> --
> Steve Kieu
>
--
Steve Kieu
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.ubuntu.com/archives/storm/attachments/20110107/525aec1f/attachment.html>
More information about the storm
mailing list