Re: [appengine-java] ApplicationError: 10: Unknown when writing to blobstore using FileService

2011-08-19 Thread Ikai Lan (Google)
We're surfacing a bad error here. Basically, you get this error message if
you hold the file open too long; we recommend around 30 seconds.

I'll file a bug internally to get a better error message. Can you break this
up into multiple writes?

--
Ikai Lan
Developer Programs Engineer, Google App Engine
plus.ikailan.com | twitter.com/ikai



On Wed, Aug 17, 2011 at 5:32 PM, Mike Prince m...@mikeprince.com wrote:

 I'm trying to write a Java serialized HashMapString,Long to the
 blobstore using the FileService and getting an Unknown error 10.
 I'm guessing there's 10,000+ items in the map.

 Below is the code I'm using, followed by the stack trace.

 Can someone clue me in on what I'm doing wrong?  And yes, it works
 fine in the development environment ;)

 Thanks,

 Mike


 public class Filer
 {
private static final FileService fileService =
 FileServiceFactory.getFileService();
private static final BlobstoreService blobstoreService =
 BlobstoreServiceFactory.getBlobstoreService();

public static String save( Object value )
throws IOException
{
if( value == null ) return null;

AppEngineFile file = fileService.createNewBlobFile(
 text/plain );
return save( file, value );
}

private static String save( AppEngineFile file, Object value )
throws IOException
{
// Open a channel and write out object
FileWriteChannel writeChannel =
 fileService.openWriteChannel( file,
 true );
ObjectOutputStream out = new
 ObjectOutputStream( Channels.newOutputStream( writeChannel ) );
out.writeObject( value );

// Close it up
out.close();
writeChannel.closeFinally();

return file.getFullPath();
}



 And here's the exception...


 org.apache.jsp.tasks.create_002duser_002dsegment_jsp _jspService:
 Failed to create user segment
 java.io.IOException
at

 com.google.appengine.api.files.FileServiceImpl.translateException(FileServiceImpl.java:
 501)
at

 com.google.appengine.api.files.FileServiceImpl.makeSyncCall(FileServiceImpl.java:
 479)
at
 com.google.appengine.api.files.FileServiceImpl.append(FileServiceImpl.java:
 426)
at
 com.google.appengine.api.files.FileServiceImpl.append(FileServiceImpl.java:
 171)
at

 com.google.appengine.api.files.FileWriteChannelImpl.write(FileWriteChannelImpl.java:
 49)
at

 com.google.appengine.api.files.FileWriteChannelImpl.write(FileWriteChannelImpl.java:
 41)
at java.nio.channels.Channels.write(Channels.java:80)
at java.nio.channels.Channels.access$000(Channels.java:64)
at java.nio.channels.Channels$1.write(Channels.java:151)
at java.io.ObjectOutputStream
 $BlockDataOutputStream.drain(ObjectOutputStream.java:1855)
at java.io.ObjectOutputStream
 $BlockDataOutputStream.setBlockDataMode(ObjectOutputStream.java:1764)
at
 java.io.ObjectOutputStream.writeFatalException(ObjectOutputStream.java:
 1558)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:
 346)
at
 com.yumyumlabs.foundation.appengine.util.Filer.save(Filer.java:42)
at
 com.yumyumlabs.foundation.appengine.util.Filer.save(Filer.java:33)
at
 com.yumyumlabs.server.recipe.model.UserSegment.saveUsers(UserSegment.java:
 51)
at

 org.apache.jsp.tasks.create_002duser_002dsegment_jsp._jspService(create_002duser_002dsegment_jsp.java:
 104)
at
 org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at
 org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:
 511)
at
 org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
 390)
at
 org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:
 216)
at
 org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:
 182)
at
 org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:
 765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
 418)
at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:327)
at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126)
at

 org.tuckey.web.filters.urlrewrite.NormalRewrittenUrl.doRewrite(NormalRewrittenUrl.java:
 213)
at
 org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:
 171)
at
 org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:
 145)
at

 org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:
 92)
at

 org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:
 381)
at org.mortbay.jetty.servlet.ServletHandler
 $CachedChain.doFilter(ServletHandler.java:1157)
at
 

[appengine-java] ApplicationError: 10: Unknown when writing to blobstore using FileService

2011-08-17 Thread Mike Prince
I'm trying to write a Java serialized HashMapString,Long to the
blobstore using the FileService and getting an Unknown error 10.
I'm guessing there's 10,000+ items in the map.

Below is the code I'm using, followed by the stack trace.

Can someone clue me in on what I'm doing wrong?  And yes, it works
fine in the development environment ;)

Thanks,

Mike


public class Filer
{
private static final FileService fileService =
FileServiceFactory.getFileService();
private static final BlobstoreService blobstoreService =
BlobstoreServiceFactory.getBlobstoreService();

public static String save( Object value )
throws IOException
{
if( value == null ) return null;

AppEngineFile file = fileService.createNewBlobFile( 
text/plain );
return save( file, value );
}

private static String save( AppEngineFile file, Object value )
throws IOException
{
// Open a channel and write out object
FileWriteChannel writeChannel = fileService.openWriteChannel( 
file,
true );
ObjectOutputStream out = new
ObjectOutputStream( Channels.newOutputStream( writeChannel ) );
out.writeObject( value );

// Close it up
out.close();
writeChannel.closeFinally();

return file.getFullPath();
}



And here's the exception...


org.apache.jsp.tasks.create_002duser_002dsegment_jsp _jspService:
Failed to create user segment
java.io.IOException
at
com.google.appengine.api.files.FileServiceImpl.translateException(FileServiceImpl.java:
501)
at
com.google.appengine.api.files.FileServiceImpl.makeSyncCall(FileServiceImpl.java:
479)
at
com.google.appengine.api.files.FileServiceImpl.append(FileServiceImpl.java:
426)
at
com.google.appengine.api.files.FileServiceImpl.append(FileServiceImpl.java:
171)
at
com.google.appengine.api.files.FileWriteChannelImpl.write(FileWriteChannelImpl.java:
49)
at
com.google.appengine.api.files.FileWriteChannelImpl.write(FileWriteChannelImpl.java:
41)
at java.nio.channels.Channels.write(Channels.java:80)
at java.nio.channels.Channels.access$000(Channels.java:64)
at java.nio.channels.Channels$1.write(Channels.java:151)
at java.io.ObjectOutputStream
$BlockDataOutputStream.drain(ObjectOutputStream.java:1855)
at java.io.ObjectOutputStream
$BlockDataOutputStream.setBlockDataMode(ObjectOutputStream.java:1764)
at
java.io.ObjectOutputStream.writeFatalException(ObjectOutputStream.java:
1558)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:
346)
at com.yumyumlabs.foundation.appengine.util.Filer.save(Filer.java:42)
at com.yumyumlabs.foundation.appengine.util.Filer.save(Filer.java:33)
at
com.yumyumlabs.server.recipe.model.UserSegment.saveUsers(UserSegment.java:
51)
at
org.apache.jsp.tasks.create_002duser_002dsegment_jsp._jspService(create_002duser_002dsegment_jsp.java:
104)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:
511)
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
390)
at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:
216)
at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:
182)
at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:
765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
418)
at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:327)
at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126)
at
org.tuckey.web.filters.urlrewrite.NormalRewrittenUrl.doRewrite(NormalRewrittenUrl.java:
213)
at
org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:
171)
at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:
145)
at
org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:
92)
at
org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:
381)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
at org.machino.servlet.PageTimerFilter.doFilter(PageTimerFilter.java:
63)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
at org.machino.servlet.LoginFilter.doFilter(LoginFilter.java:121)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
at org.machino.servlet.RedirectFilter.doFilter(RedirectFilter.java:
53)
at org.mortbay.jetty.servlet.ServletHandler