代码之家  ›  专栏  ›  技术社区  ›  Micro

谷歌应用引擎:连接中断时运行gradle appengineDeploy,现在应用程序将无法工作

  •  0
  • Micro  · 技术社区  · 6 年前

    当我使用 gradle appengineDeploy 我的网络连接中断了。

    我重新部署了这个项目。虽然控制台说 BUILD SUCCESSFUL ,应用引擎实例不再工作。无论我重新部署或更新应用程序多少次,日志只显示错误:

    java.lang.NoClassDefFoundError:com/google/appengine/api/ThreadManager 在 com.google.api网站.control.extensions.appengine.古格利普pEngineControlFilter.createClient com.google.api网站.control.ControlFilter.init(ControlFilter.java:141)在 org.eclipse.jetty.servlet.FilterHolder.initialize (过滤器文件夹.java:139)在 org.eclipse.jetty.servlet.ServletHandler.initialize (ServletHandler.java:873)在 org.eclipse.jetty.servlet.ServletContextHandler.startContext (第ServletContextHandler.java:349)在 org.eclipse.jetty.webapp.WebAppContext.startWebapp (WebAppContext.java:1406)在 com.google.apphosting网站.运行时.jetty9.Ap公司pEngineWebAppContext.startWebapp (美联社)pEngineWebAppContext.java:175)在 org.eclipse.jetty.webapp.WebAppContext.startContext (WebAppContext.java:1368)在 org.eclipse.jetty.server.handler.ContextHandler.doStart公司 (ContextHandler.java:778)在 org.eclipse.jetty.servlet.ServletContextHandler.doStart公司 (第ServletContextHandler.java:262)在 org.eclipse.jetty.webapp.WebAppContext.doStart com.google.apphosting网站.运行时.jetty9.Ap公司pEngineWebAppContext.doStart (美联社)pEngineWebAppContext.java:120)在 org.eclipse.jetty.util.component.AbstractLifeCycle.启动 (抽象生命周期.java:68)在 (AppVersionHandlerMap.java:240)在 com.google.apphosting网站.运行时.jetty9.AppVersionHandlerMap.getHandler (AppVersionHandlerMap.java:178)在 com.google.apphosting网站.运行时.jetty9.码头ServletEngineAdapter.serviceRequest (码头ServletEngineAdapter.java:120)在 com.google.apphosting网站.运行时.JavaRuntime$RequestRunnable.dispatchServletRequest (java运行时.java:747)在 (java运行时.java:710)在 com.google.apphosting网站.运行时.JavaRuntime$请求运行。运行 (java运行时.java:680)在 com.google.apphosting网站.运行时.JavaRuntime$NullSa美元ndboxRequestRunnable.run com.google.apphosting网站.runtime.ThreadGroupPool$池入口.run (ThreadGroupPool.java:270)在java.lang.Thread.运行(线程.java:748) 原因:java.lang.ClassNotFoundException: com.google.appengine网站.api.ThreadManager接口在 java.net.URLClassLoader.find类(URLClassLoader.java:381)在 com.google.apphosting网站.runtime.ApplicationClassLoader.find类 (美联社)applicationClassLoader.java:135)在java.lang.ClassLoader.负荷等级 (类加载器.java:357)

    有没有什么方法可以让我清除googleappengine中的部分构建(或其他可能的构建)?

    我尝试删除所有版本和实例(你不能全部删除它们,它不会让你删除服务的版本和实例)。

    我试着增加appengine的版本号-web.xml文件.

    我试着把格拉德尔干掉。

    我尝试在google云控制台中禁用和启用应用程序。

    运气不好。

    我的一个想法是,如果我能以某种方式强制将应用程序的所有文件重新上传?因为 gradle appengineDeploy公司 只上传文件。

    编辑:

    我设法通过升级来修复其中的一部分 classpath 'com.google.cloud.tools:appengine-gradle-plugin:2.2.0' 在我的最新版本。(觉得这样做有点老土,如果再发生这种情况,将来就不可靠了)也许这样做会冲走应用程序引擎或其他东西。我还有一个问题:

    我正在使用firebase admin SDK发送firebase云消息(通过.json凭据文件进行身份验证),如下所示:

    FirebaseMessaging.getInstance().send(msg);

    当我这样做时,我会得到这个错误:

    com.google.firebase网站.messaging.FirebaseMessagingException:意外 HTTP响应,状态为:401;正文:null

    这很奇怪,因为firebase管理SDK的其他部分正在工作(比如从firestore写入/读取)。

    所以还是有一些奇怪的事情发生了,我想这和我上传我的googleappengine项目时连接被中断的事实有关。

    编辑2: 这里有一些有趣的事情:当我使用 gcloud app deploy appengine-web.xml 应用程序再次无法工作。使用部署 gradle appengineDeploy公司 尽管如此。我还注意到,当使用 gcloud应用部署appengine-web.xml文件 gcloud 清除缓存的命令?或者类似的事情,但没有运气。

    编辑3: 附加信息: 在尝试失败之前,我的应用程序已部署并正常工作。我更改了一个函数中的一小段代码,上传应用程序后,连接因互联网中断而中断。

    我是应用引擎标准环境。 我正在从macOS终端部署我的应用程序,并使用androidstudio进行开发。

    stopPreviousVersion promote 和 version 在gradle中配置(实际上前两个默认为true,并且 版本 获取自动生成(如果未设置)。

    跑步 gcloud app deploy appengine-web.xml --verbosity=debug 显示了很多敏感信息,但我看到的是 WEB-INF 正在跳过:

    DEBUG: Skipping upload of [WEB-INF/.... INFO: Incremental upload skipped 100.0% of data DEBUG: Uploading 0 files to Google Cloud Storage DEBUG: Using [16] threads

    所以也许文件并没有全部上传?这篇文章提出了一个类似的问题,但没有解决办法: stackoverflow.com/q/42137452/3075340

    gcloud app deploy ,应用程序根本无法工作。到处都有运行时错误。做 gradle appengineDeploy公司 解决了,但我仍然有 firebase-admin 问题。

    0 回复  |  直到 6 年前
        1
  •  0
  •   Edo Akse    6 年前

    为了真正回答您的问题,GAE使用一个临时存储桶来缓存文件。

    您可以删除此bucket,下次尝试部署时将重新创建它。

    桶总是命名的 staging.[PROJECT-ID].appspot.com . 它应该显示在 buckets overview page

    只是想说清楚, 我不确定这是否真的能解决你的问题,但这肯定会清除GAE缓存的任何文件

        2
  •  0
  •   Andrei Tigau    6 年前

    Here 去年在appengine上有一个或多或少类似问题的讨论。

    你可以用它作为解决当前问题的灵感来源,因为我认为它们在概念上非常相似。因此,我认为可能值得尝试将appengine-api-1.0-sdk-1.9.63.jar(或您的版本是什么)文件放在下面 WEB-INF/lib 在同一个帖子里,有些人发现了问题 gcloud v194 换成另一个版本解决了这个问题。

    Here 有一个类似的问题通过升级 gcloud工具 .

    不管怎样,这种行为是不正常的,事情不应该这样。你可以试着找到一个解决办法,但我的建议是 report the issue 让应用引擎工程师来检查一下。很有可能是内在的。