Re: [appengine-java] ApplicationError: 10: Unknown when writing to blobstore using FileService
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
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