[google-appengine] Re: I appear to be corrupting my datastore

2008-12-15 Thread Marzia Niccolai
Hi,

Thanks for filing the issue.

This is related to storing a floatproperty in the SDK datastore, on Macs the
datastore file may get occasionally corrupted. Currently you will need to
clear the datastore on your local machine to fix this issue.

-Marzia

On Sat, Dec 13, 2008 at 7:52 AM, bowman.jos...@gmail.com 
bowman.jos...@gmail.com wrote:


 I didn't have much luck with switching to a datetimeproperty using
 milliseconds eithers. I also tried handling the value changing in the
 check method directly, since it looked like it was possible there.
 Same results, the datastore gets corrupted. The error I get when I try
 to start the datastore after stopping it is.

 class 'struct.error': unpack requires a string argument of length 8

 def checkScoreValue(self, value):
  valid = False
  while valid == False:
 query = db.GqlQuery('SELECT * FROM Story WHERE score = :1', value)
results = query.fetch(1)
if len(results)  0:
   value = value + 0.001
else:
  valid = True
  return value



 I've filed an issue, #922 -
 http://code.google.com/p/googleappengine/issues/detail?id=922


 On Dec 13, 10:01 am, bowman.jos...@gmail.com
 bowman.jos...@gmail.com wrote:
  I'm trying to make sure a score field I set for articles on my site in
  unique, however, I'm running into an issue where my method is
  appearing to corrupt my datastore. After I input stories, I can't view
  pages, getting a return size too large error, and when I stop and
  start the SDK, it won't restart.
 
  Here's what I'm doing.
 
  I set up a new Score Property.
 
 
  class ScoreProperty(db.FloatProperty):
 
  def checkScoreValue(self, value):
query = db.GqlQuery('SELECT * FROM Story WHERE score = :1', value)
results = query.fetch(1)
if len(results)  0:
  raise db.BadValueError(
  'Property %s must be unique' % self.name)
return value
 
  def __init__(self, verbose_name=None, name=None):
super(ScoreProperty, self).__init__(
  verbose_name, name, required=False,
  validator=self.checkScoreValue)
 
 
 
  Then when I go to add a story, I use this try statement
 
 
  story_added = False
  while story_added == False:
  try:
story.put()
story_added = True
  except db.BadValueError:
story.score = story.score + 0.001
 
 
 
  What should happen is that when a put is attempted, a check is done to
  see if a story with that score exists. If it does exist, add 0.001 and
  try to put again. After adding several stories in batch mode, I can
  using the data view that appears to be working, but strangely. I'll
  see a score of ###.0 and then the next would be something like ###.
  043, so I'm not sure what happened to .001-.0042. Also, after running
  the process the datastore appears to be corrupted as well.
 
  I'm considering swapping to using a DateTimeProperty and keying off of
  the miliseconds to see if that is handled better, but I'm confused as
  to why this current method is creating problems.
 
  One thing that might be an issue is the development is happening on an
  eeepc, which is a single core processor and it's SSD isn't the fast
  read/write storage device.
 


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: I appear to be corrupting my datastore

2008-12-15 Thread bowman.jos...@gmail.com

This is actually happening on Linux, not sure if that matters or not.

Clearing the datastore is my only solution to getting it back up on
the SDK currently, but once I run the routine again, it's corrupted
again. I did try converting the entire property to a
db.DateTimeProperty and adding milliseconds, and had the same
corruption issues.

On Dec 15, 2:07 pm, Marzia Niccolai ma...@google.com wrote:
 Hi,

 Thanks for filing the issue.

 This is related to storing a floatproperty in the SDK datastore, on Macs the
 datastore file may get occasionally corrupted. Currently you will need to
 clear the datastore on your local machine to fix this issue.

 -Marzia

 On Sat, Dec 13, 2008 at 7:52 AM, bowman.jos...@gmail.com 

 bowman.jos...@gmail.com wrote:

  I didn't have much luck with switching to a datetimeproperty using
  milliseconds eithers. I also tried handling the value changing in the
  check method directly, since it looked like it was possible there.
  Same results, the datastore gets corrupted. The error I get when I try
  to start the datastore after stopping it is.

  class 'struct.error': unpack requires a string argument of length 8

  def checkScoreValue(self, value):
   valid = False
   while valid == False:
  query = db.GqlQuery('SELECT * FROM Story WHERE score = :1', value)
 results = query.fetch(1)
 if len(results)  0:
value = value + 0.001
 else:
   valid = True
   return value

  I've filed an issue, #922 -
 http://code.google.com/p/googleappengine/issues/detail?id=922

  On Dec 13, 10:01 am, bowman.jos...@gmail.com
  bowman.jos...@gmail.com wrote:
   I'm trying to make sure a score field I set for articles on my site in
   unique, however, I'm running into an issue where my method is
   appearing to corrupt my datastore. After I input stories, I can't view
   pages, getting a return size too large error, and when I stop and
   start the SDK, it won't restart.

   Here's what I'm doing.

   I set up a new Score Property.

  
   class ScoreProperty(db.FloatProperty):

   def checkScoreValue(self, value):
 query = db.GqlQuery('SELECT * FROM Story WHERE score = :1', value)
 results = query.fetch(1)
 if len(results)  0:
   raise db.BadValueError(
   'Property %s must be unique' % self.name)
 return value

   def __init__(self, verbose_name=None, name=None):
 super(ScoreProperty, self).__init__(
   verbose_name, name, required=False,
   validator=self.checkScoreValue)

  

   Then when I go to add a story, I use this try statement

  
   story_added = False
   while story_added == False:
   try:
 story.put()
 story_added = True
   except db.BadValueError:
 story.score = story.score + 0.001

  

   What should happen is that when a put is attempted, a check is done to
   see if a story with that score exists. If it does exist, add 0.001 and
   try to put again. After adding several stories in batch mode, I can
   using the data view that appears to be working, but strangely. I'll
   see a score of ###.0 and then the next would be something like ###.
   043, so I'm not sure what happened to .001-.0042. Also, after running
   the process the datastore appears to be corrupted as well.

   I'm considering swapping to using a DateTimeProperty and keying off of
   the miliseconds to see if that is handled better, but I'm confused as
   to why this current method is creating problems.

   One thing that might be an issue is the development is happening on an
   eeepc, which is a single core processor and it's SSD isn't the fast
   read/write storage device.
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: I appear to be corrupting my datastore

2008-12-15 Thread Marzia Niccolai
Hi,

I just assumed it was Mac because it's an issue we've seen with Macs that
have 2.5.0 installed, and I'm assuming this is your Python installation?
Generally, float values in the datastore just don't work with Python 2.5.0.
Support for buffer objects in struct.unpack was not added until version
54695 (Apr 2007), this is the underlying cause of the error message.

-Marzia

On Mon, Dec 15, 2008 at 11:54 AM, bowman.jos...@gmail.com 
bowman.jos...@gmail.com wrote:


 This is actually happening on Linux, not sure if that matters or not.

 Clearing the datastore is my only solution to getting it back up on
 the SDK currently, but once I run the routine again, it's corrupted
 again. I did try converting the entire property to a
 db.DateTimeProperty and adding milliseconds, and had the same
 corruption issues.

 On Dec 15, 2:07 pm, Marzia Niccolai ma...@google.com wrote:
  Hi,
 
  Thanks for filing the issue.
 
  This is related to storing a floatproperty in the SDK datastore, on Macs
 the
  datastore file may get occasionally corrupted. Currently you will need to
  clear the datastore on your local machine to fix this issue.
 
  -Marzia
 
  On Sat, Dec 13, 2008 at 7:52 AM, bowman.jos...@gmail.com 
 
  bowman.jos...@gmail.com wrote:
 
   I didn't have much luck with switching to a datetimeproperty using
   milliseconds eithers. I also tried handling the value changing in the
   check method directly, since it looked like it was possible there.
   Same results, the datastore gets corrupted. The error I get when I try
   to start the datastore after stopping it is.
 
   class 'struct.error': unpack requires a string argument of length 8
 
   def checkScoreValue(self, value):
valid = False
while valid == False:
   query = db.GqlQuery('SELECT * FROM Story WHERE score = :1', value)
  results = query.fetch(1)
  if len(results)  0:
 value = value + 0.001
  else:
valid = True
return value
 
   I've filed an issue, #922 -
  http://code.google.com/p/googleappengine/issues/detail?id=922
 
   On Dec 13, 10:01 am, bowman.jos...@gmail.com
   bowman.jos...@gmail.com wrote:
I'm trying to make sure a score field I set for articles on my site
 in
unique, however, I'm running into an issue where my method is
appearing to corrupt my datastore. After I input stories, I can't
 view
pages, getting a return size too large error, and when I stop and
start the SDK, it won't restart.
 
Here's what I'm doing.
 
I set up a new Score Property.
 
  
 
class ScoreProperty(db.FloatProperty):
 
def checkScoreValue(self, value):
  query = db.GqlQuery('SELECT * FROM Story WHERE score = :1', value)
  results = query.fetch(1)
  if len(results)  0:
raise db.BadValueError(
'Property %s must be unique' % self.name)
  return value
 
def __init__(self, verbose_name=None, name=None):
  super(ScoreProperty, self).__init__(
verbose_name, name, required=False,
validator=self.checkScoreValue)
 
  
 
 
Then when I go to add a story, I use this try statement
 
  
 
story_added = False
while story_added == False:
try:
  story.put()
  story_added = True
except db.BadValueError:
  story.score = story.score + 0.001
 
  
 
 
What should happen is that when a put is attempted, a check is done
 to
see if a story with that score exists. If it does exist, add 0.001
 and
try to put again. After adding several stories in batch mode, I can
using the data view that appears to be working, but strangely. I'll
see a score of ###.0 and then the next would be something like ###.
043, so I'm not sure what happened to .001-.0042. Also, after running
the process the datastore appears to be corrupted as well.
 
I'm considering swapping to using a DateTimeProperty and keying off
 of
the miliseconds to see if that is handled better, but I'm confused as
to why this current method is creating problems.
 
One thing that might be an issue is the development is happening on
 an
eeepc, which is a single core processor and it's SSD isn't the fast
read/write storage device.
 


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---



[google-appengine] Re: I appear to be corrupting my datastore

2008-12-15 Thread bowman.jos...@gmail.com

Ok great. I'll have to check on the python version, it's whatever
xandros makes available (I haven't gotten rid of the default OS on my
eeepc because I'm lazy). If worse comes to worse I'll try compiling
the latest python by hand and see if that works. I should have this
done by the weekend. I'll post a comment to the ticket if this
resolves the issue. Thanks for the quick knowledgeable response as
always.

On Dec 15, 3:06 pm, Marzia Niccolai ma...@google.com wrote:
 Hi,

 I just assumed it was Mac because it's an issue we've seen with Macs that
 have 2.5.0 installed, and I'm assuming this is your Python installation?
 Generally, float values in the datastore just don't work with Python 2.5.0.
 Support for buffer objects in struct.unpack was not added until version
 54695 (Apr 2007), this is the underlying cause of the error message.

 -Marzia

 On Mon, Dec 15, 2008 at 11:54 AM, bowman.jos...@gmail.com 

 bowman.jos...@gmail.com wrote:

  This is actually happening on Linux, not sure if that matters or not.

  Clearing the datastore is my only solution to getting it back up on
  the SDK currently, but once I run the routine again, it's corrupted
  again. I did try converting the entire property to a
  db.DateTimeProperty and adding milliseconds, and had the same
  corruption issues.

  On Dec 15, 2:07 pm, Marzia Niccolai ma...@google.com wrote:
   Hi,

   Thanks for filing the issue.

   This is related to storing a floatproperty in the SDK datastore, on Macs
  the
   datastore file may get occasionally corrupted. Currently you will need to
   clear the datastore on your local machine to fix this issue.

   -Marzia

   On Sat, Dec 13, 2008 at 7:52 AM, bowman.jos...@gmail.com 

   bowman.jos...@gmail.com wrote:

I didn't have much luck with switching to a datetimeproperty using
milliseconds eithers. I also tried handling the value changing in the
check method directly, since it looked like it was possible there.
Same results, the datastore gets corrupted. The error I get when I try
to start the datastore after stopping it is.

class 'struct.error': unpack requires a string argument of length 8

def checkScoreValue(self, value):
 valid = False
 while valid == False:
query = db.GqlQuery('SELECT * FROM Story WHERE score = :1', value)
   results = query.fetch(1)
   if len(results)  0:
  value = value + 0.001
   else:
 valid = True
 return value

I've filed an issue, #922 -
   http://code.google.com/p/googleappengine/issues/detail?id=922

On Dec 13, 10:01 am, bowman.jos...@gmail.com
bowman.jos...@gmail.com wrote:
 I'm trying to make sure a score field I set for articles on my site
  in
 unique, however, I'm running into an issue where my method is
 appearing to corrupt my datastore. After I input stories, I can't
  view
 pages, getting a return size too large error, and when I stop and
 start the SDK, it won't restart.

 Here's what I'm doing.

 I set up a new Score Property.

  
 class ScoreProperty(db.FloatProperty):

 def checkScoreValue(self, value):
   query = db.GqlQuery('SELECT * FROM Story WHERE score = :1', value)
   results = query.fetch(1)
   if len(results)  0:
 raise db.BadValueError(
 'Property %s must be unique' % self.name)
   return value

 def __init__(self, verbose_name=None, name=None):
   super(ScoreProperty, self).__init__(
 verbose_name, name, required=False,
 validator=self.checkScoreValue)

  

 Then when I go to add a story, I use this try statement

  
 story_added = False
 while story_added == False:
 try:
   story.put()
   story_added = True
 except db.BadValueError:
   story.score = story.score + 0.001

  

 What should happen is that when a put is attempted, a check is done
  to
 see if a story with that score exists. If it does exist, add 0.001
  and
 try to put again. After adding several stories in batch mode, I can
 using the data view that appears to be working, but strangely. I'll
 see a score of ###.0 and then the next would be something like ###.
 043, so I'm not sure what happened to .001-.0042. Also, after running
 the process the datastore appears to be corrupted as well.

 I'm considering swapping to using a DateTimeProperty and keying off
  of
 the miliseconds to see if that is handled better, but I'm confused as
 to why this current method is creating problems.

 One thing that might be an issue is the development is happening on
  an
 eeepc, which is a single core processor 

[google-appengine] Re: I appear to be corrupting my datastore

2008-12-15 Thread bowman.jos...@gmail.com

compiling 2.5.2 from source appears to have fixed the database
corruption, though I'm still getting the http response too large error
when I try to bring up the stories now that they're scored as floating
points. If it turns out to be an appengine problem, I'll reply to this
thread, otherwise if it is just a problem with my code, I'll let this
topic die. Thanks again.

On Dec 15, 3:33 pm, bowman.jos...@gmail.com
bowman.jos...@gmail.com wrote:
 Ok great. I'll have to check on the python version, it's whatever
 xandros makes available (I haven't gotten rid of the default OS on my
 eeepc because I'm lazy). If worse comes to worse I'll try compiling
 the latest python by hand and see if that works. I should have this
 done by the weekend. I'll post a comment to the ticket if this
 resolves the issue. Thanks for the quick knowledgeable response as
 always.

 On Dec 15, 3:06 pm, Marzia Niccolai ma...@google.com wrote:

  Hi,

  I just assumed it was Mac because it's an issue we've seen with Macs that
  have 2.5.0 installed, and I'm assuming this is your Python installation?
  Generally, float values in the datastore just don't work with Python 2.5.0.
  Support for buffer objects in struct.unpack was not added until version
  54695 (Apr 2007), this is the underlying cause of the error message.

  -Marzia

  On Mon, Dec 15, 2008 at 11:54 AM, bowman.jos...@gmail.com 

  bowman.jos...@gmail.com wrote:

   This is actually happening on Linux, not sure if that matters or not.

   Clearing the datastore is my only solution to getting it back up on
   the SDK currently, but once I run the routine again, it's corrupted
   again. I did try converting the entire property to a
   db.DateTimeProperty and adding milliseconds, and had the same
   corruption issues.

   On Dec 15, 2:07 pm, Marzia Niccolai ma...@google.com wrote:
Hi,

Thanks for filing the issue.

This is related to storing a floatproperty in the SDK datastore, on Macs
   the
datastore file may get occasionally corrupted. Currently you will need 
to
clear the datastore on your local machine to fix this issue.

-Marzia

On Sat, Dec 13, 2008 at 7:52 AM, bowman.jos...@gmail.com 

bowman.jos...@gmail.com wrote:

 I didn't have much luck with switching to a datetimeproperty using
 milliseconds eithers. I also tried handling the value changing in the
 check method directly, since it looked like it was possible there.
 Same results, the datastore gets corrupted. The error I get when I try
 to start the datastore after stopping it is.

 class 'struct.error': unpack requires a string argument of length 8

 def checkScoreValue(self, value):
  valid = False
  while valid == False:
     query = db.GqlQuery('SELECT * FROM Story WHERE score = :1', value)
    results = query.fetch(1)
    if len(results)  0:
       value = value + 0.001
    else:
      valid = True
  return value

 I've filed an issue, #922 -
http://code.google.com/p/googleappengine/issues/detail?id=922

 On Dec 13, 10:01 am, bowman.jos...@gmail.com
 bowman.jos...@gmail.com wrote:
  I'm trying to make sure a score field I set for articles on my site
   in
  unique, however, I'm running into an issue where my method is
  appearing to corrupt my datastore. After I input stories, I can't
   view
  pages, getting a return size too large error, and when I stop and
  start the SDK, it won't restart.

  Here's what I'm doing.

  I set up a new Score Property.

   
  class ScoreProperty(db.FloatProperty):

  def checkScoreValue(self, value):
    query = db.GqlQuery('SELECT * FROM Story WHERE score = :1', value)
    results = query.fetch(1)
    if len(results)  0:
      raise db.BadValueError(
          'Property %s must be unique' % self.name)
    return value

  def __init__(self, verbose_name=None, name=None):
    super(ScoreProperty, self).__init__(
      verbose_name, name, required=False,
      validator=self.checkScoreValue)

   

  Then when I go to add a story, I use this try statement

   
  story_added = False
  while story_added == False:
  try:
    story.put()
    story_added = True
  except db.BadValueError:
    story.score = story.score + 0.001

   

  What should happen is that when a put is attempted, a check is done
   to
  see if a story with that score exists. If it does exist, add 0.001
   and
  try to put again. After adding several stories in batch mode, I can
  using the data view that appears to be working, but strangely. I'll
  

[google-appengine] Re: I appear to be corrupting my datastore

2008-12-13 Thread bowman.jos...@gmail.com

I didn't have much luck with switching to a datetimeproperty using
milliseconds eithers. I also tried handling the value changing in the
check method directly, since it looked like it was possible there.
Same results, the datastore gets corrupted. The error I get when I try
to start the datastore after stopping it is.

class 'struct.error': unpack requires a string argument of length 8

def checkScoreValue(self, value):
  valid = False
  while valid == False:
query = db.GqlQuery('SELECT * FROM Story WHERE score = :1', value)
results = query.fetch(1)
if len(results)  0:
  value = value + 0.001
else:
  valid = True
  return value



I've filed an issue, #922 - 
http://code.google.com/p/googleappengine/issues/detail?id=922


On Dec 13, 10:01 am, bowman.jos...@gmail.com
bowman.jos...@gmail.com wrote:
 I'm trying to make sure a score field I set for articles on my site in
 unique, however, I'm running into an issue where my method is
 appearing to corrupt my datastore. After I input stories, I can't view
 pages, getting a return size too large error, and when I stop and
 start the SDK, it won't restart.

 Here's what I'm doing.

 I set up a new Score Property.
 
 class ScoreProperty(db.FloatProperty):

 def checkScoreValue(self, value):
   query = db.GqlQuery('SELECT * FROM Story WHERE score = :1', value)
   results = query.fetch(1)
   if len(results)  0:
 raise db.BadValueError(
 'Property %s must be unique' % self.name)
   return value

 def __init__(self, verbose_name=None, name=None):
   super(ScoreProperty, self).__init__(
 verbose_name, name, required=False,
 validator=self.checkScoreValue)
 

 Then when I go to add a story, I use this try statement
 
 story_added = False
 while story_added == False:
 try:
   story.put()
   story_added = True
 except db.BadValueError:
   story.score = story.score + 0.001
 

 What should happen is that when a put is attempted, a check is done to
 see if a story with that score exists. If it does exist, add 0.001 and
 try to put again. After adding several stories in batch mode, I can
 using the data view that appears to be working, but strangely. I'll
 see a score of ###.0 and then the next would be something like ###.
 043, so I'm not sure what happened to .001-.0042. Also, after running
 the process the datastore appears to be corrupted as well.

 I'm considering swapping to using a DateTimeProperty and keying off of
 the miliseconds to see if that is handled better, but I'm confused as
 to why this current method is creating problems.

 One thing that might be an issue is the development is happening on an
 eeepc, which is a single core processor and it's SSD isn't the fast
 read/write storage device.
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
Google App Engine group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~--~~~~--~~--~--~---