[storm] what causes: storm.exceptions.LostObjectError: Can't obtain values from the database

Steve Kieu msh.computing at gmail.com
Thu Jan 6 23:13:37 UTC 2011


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.ubuntu.com/archives/storm/attachments/20110107/de26492a/attachment-0001.html>


More information about the storm mailing list