【问题标题】:Remote API, Objectify and the DevServer don't like transactions?远程 API、Objectify 和 DevServer 不喜欢事务?
【发布时间】:2013-12-19 21:56:55
【问题描述】:

我正在使用 objectify 4 写入 HRD 数据存储。在单元测试中一切正常,在开发服务器或生产环境中运行应用程序。

但是当我尝试使用 REMOTE API 连接到 devserver 数据存储时,代码启动 XG 事务时会引发错误。在连接远程 API 时,似乎认为 HRD 未启用。 这就是我连接的方式...

public static void main(String[] args) {
    RemoteApiOptions options = new RemoteApiOptions().server("localhost", 8888).credentials("foo", "bar");
    //options = options.
    RemoteApiInstaller installer = new RemoteApiInstaller();
    StoredUser storedUser = null;
    try {
        installer.install(options);
        ObjectifyInitializer.register();
        storedUser = new StoredUserDao().loadStoredUser(<KEY>);
        log.info("found user : " + storedUser.getEmail());

        // !!! ERROR !!!
        new SomeOtherDao().doSomeDataManipulationInTransaction();

    } catch (Throwable e) {
        e.printStackTrace();
    } finally {
        ObjectifyFilter.complete();
        installer.uninstall();
    }
}

当 new SomeOtherDao().doSomeDataManipulationInTransaction() 在多个实体组上启动事务时,我会抛出错误:

仅在高复制应用程序中允许在多个实体组上进行事务

如何告诉远程api这是一个HRD环境?

【问题讨论】:

    标签: google-app-engine google-cloud-datastore objectify remoteapi


    【解决方案1】:

    如果您的应用程序正在使用 High Replication Datastore,请添加 显式 s~ 前缀(或 e~ 前缀,如果您的应用程序位于 欧盟)到应用程序ID

    对于 Java 版本,在 appengine-web.xmlapplication 标记中添加此前缀,然后部署已激活 remote_api servlet 的版本

    例子

    <application>myappid</application>
    

    成为

    <application>s~myappid</application>
    

    来源:https://developers.google.com/appengine/docs/python/tools/uploadingdata#Python_Setting_up_remote_api

    【讨论】:

    • 那行不通。我之前将未应用的工作百分比设置为 0,然后将其重新设置为 0 以上会使开发服务器上的事务再次工作。
    【解决方案2】:

    我将“未应用的作业百分比”设置为 0,并且使用远程 api 的事务失败,就好像开发服务器使用 Master/Slave 而不是 HRD 运行一样。将“未申请的工作百分比”提高到零以上可以解决问题。

    【讨论】:

    • 我遇到了同样的问题,虽然我在事务中只使用了一个实体。提高“未申请的工作百分比”解决了这个问题。谢谢!从那以后你有没有找到一种方法来避免这个问题,同时保持 0 的百分比?
    猜你喜欢
    • 2013-04-03
    • 2019-10-06
    • 1970-01-01
    • 1970-01-01
    • 2016-03-10
    • 1970-01-01
    • 2016-03-24
    • 2015-05-13
    • 1970-01-01
    相关资源
    最近更新 更多