user2534580
user2534580

Reputation: 41

Google cloud storage: Java.lang.RuntimeException: Server replied with 400, Missing project id

I have created an app which uses the google cloud storage client lib to allow users to upload a file to the cloud. I have created a bucket and added my project account to its ACL, like the following: edit permission of my bucket to add my project google account Also, my project has Enable billing. however, after I deploy my app and tried to select file to upload it to google cloud, it gives me the following Exception:

/StdPersistentStorageClient
com.google.appengine.tools.cloudstorage.NonRetriableException: java.lang.RuntimeException: Server         replied with 400, probably bad request: Request: PUT https://storage.googleapis.com/persistentstoragebucket/?upload_id=AEnB2Uq7SzQtkKjLb4mPdZiBlKJokLcXnn9R-wcdQzHphk5EsWwePwLU22u0aUP1Z9MFN28kIwoKvNxjfVIvMr5CO0YgjI9ihQ
User-Agent: App Engine GCS Client
Content-Range: bytes */0

no content

Response: 400 with 154 bytes of content
Content-Type: application/xml; charset=UTF-8
Content-Length: 154
Vary: Origin
Date: Fri, 09 Jan 2015 22:44:58 GMT
Server: UploadServer ("Built on Dec 19 2014 10:24:45 (1419013485)")
Alternate-Protocol: 443:quic,p=0.02
X-Google-Cache-Control: remote-fetch
Via: HTTP/1.1 GWA
<?xml version='1.0' encoding='UTF-8'?><Error><Code>InvalidArgument</Code><Message>Invalid argument.</Message><Details>Missing project id</Details></Error>

at com.google.appengine.tools.cloudstorage.RetryHelper.doRetry(RetryHelper.java:120)
at com.google.appengine.tools.cloudstorage.RetryHelper.runWithRetries(RetryHelper.java:166)
at com.google.appengine.tools.cloudstorage.RetryHelper.runWithRetries(RetryHelper.java:156)
at com.google.appengine.tools.cloudstorage.GcsOutputChannelImpl.close(GcsOutputChannelImpl.java:198)
at java.nio.channels.Channels$1.close(Channels.java:178)
at fci.cu.std.paas.api.xml.manifest.utilities.ManifestUtilities.copy(ManifestUtilities.java:83)
at fci.cu.std.paas.core.services.persistent.storage.PersistentStorageService.uploadBlob(PersistentStorageService.java:130)
at fci.cu.std.paas.client.services.persistent.storage.StdPersistentStorageClient.doPost(StdPersistentStorageClient.java:102)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
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$CachedChain.doFilter(ServletHandler.java:1166)
at com.google.apphosting.utils.servlet.ParseBlobUploadFilter.doFilter(ParseBlobUploadFilter.java:125)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.apphosting.runtime.jetty.SaveSessionFilter.doFilter(SaveSessionFilter.java:35)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.apphosting.utils.servlet.JdbcMySqlConnectionCleanupFilter.doFilter(JdbcMySqlConnectionCleanupFilter.java:60)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
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 com.google.apphosting.runtime.jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:254)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)
at com.google.apphosting.runtime.jetty.RpcRequestParser.parseAvailable(RpcRequestParser.java:76)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:146)
at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:484)
at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:438)
at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:445)
at com.google.tracing.CurrentContext.runInContext(CurrentContext.java:220)
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:309)
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:301)
at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:442)
at com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:251)
at java.lang.Thread.run(Thread.java:724)

could you plz help me in this issue

Upvotes: 2

Views: 394

Answers (1)

Brandon Yarbrough
Brandon Yarbrough

Reputation: 38409

Well, you didn't post your code, so it's hard to be sure, but you're doing a PUT to "https://storage.googleapis.com/persistentstoragebucket/?upload_id=...". "persistantstoragebucket" is a bucket name, but there should be an object name after that. With just the bucket name, it looks like a bucket creation request, which requires a project ID (thus your error).

Are you perhaps not specifying the name of the object you're trying to upload?

Upvotes: 2

Related Questions