微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

OpenStreetMap Osmosis自动复制/导出-从OSM导入到PostGis

如何解决OpenStreetMap Osmosis自动复制/导出-从OSM导入到PostGis

我们正在部署OSM API服务器和Tile服务器,并尝试使用Osmosis使后者保持同步。

使用osmosis --rd authFile=... --wp authFile=...执行初始同步后,我尝试使用--replicate-apidb设置一些自动化,如下所示:

osmosis --repa authFile=... iterations=0 minInterval=10000 maxInterval=30000 --rtc --wpc --authFile=...

我收到以下错误

Aug 20,2020 3:19:26 PM org.openstreetmap.osmosis.core.Osmosis run
INFO: Osmosis Version 0.48.2
Aug 20,2020 3:19:26 PM org.openstreetmap.osmosis.core.Osmosis run
INFO: Preparing pipeline.
Aug 20,2020 3:19:27 PM org.openstreetmap.osmosis.core.Osmosis run
INFO: Launching pipeline execution.
Aug 20,2020 3:19:27 PM org.openstreetmap.osmosis.core.Osmosis run
INFO: Pipeline executing,waiting for completion.
Aug 20,2020 3:19:27 PM org.openstreetmap.osmosis.core.database.DatabaseLocker <init>
WARNING: Locking functions do not exist in database. disabling locking.

30秒后:

Aug 20,2020 3:19:57 PM org.openstreetmap.osmosis.core.database.DatabaseLocker lockDatabase
INFO: Obtained write lock to database for process: PostgresqlChangeWriter from source: '',with lockedID: 8

再过30秒:

Aug 20,2020 3:20:27 PM org.openstreetmap.osmosis.core.database.DatabaseLocker unlockDatabase
INFO: Unlocked database using identifier 8.
Aug 20,2020 3:20:27 PM org.openstreetmap.osmosis.core.pipeline.common.ActiveTaskManager waitForCompletion
SEVERE: Thread for task 1-repa Failed
java.lang.RuntimeException: org.openstreetmap.osmosis.core.OsmosisRuntimeException: No transaction is currently active.
        at org.openstreetmap.osmosis.apidb.v0_6.ApidbFileReplicator.run(ApidbFileReplicator.java:104)
        at java.base/java.lang.Thread.run(Thread.java:832)
Caused by: org.openstreetmap.osmosis.core.OsmosisRuntimeException: No transaction is currently active.
        at org.openstreetmap.osmosis.pgsnapshot.common.DatabaseContext.commitTransaction(DatabaseContext.java:96)
        at org.openstreetmap.osmosis.pgsnapshot.v0_6.PostgresqlChangeWriter.complete(PostgresqlChangeWriter.java:161)
        at org.openstreetmap.osmosis.replication.v0_6.ReplicationtochangeWriter.complete(ReplicationtochangeWriter.java:85)
        at org.openstreetmap.osmosis.apidb.v0_6.impl.Replicator.replicateImpl(Replicator.java:402)
        at org.openstreetmap.osmosis.apidb.v0_6.impl.Replicator.access$000(Replicator.java:20)
        at org.openstreetmap.osmosis.apidb.v0_6.impl.Replicator$1.run(Replicator.java:263)
        at org.openstreetmap.osmosis.apidb.v0_6.impl.TransactionDao$1.doInTransactionWithoutResult(TransactionDao.java:61)
        at org.springframework.transaction.support.TransactionCallbackWithoutResult.doInTransaction(TransactionCallbackWithoutResult.java:36)
        at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140)
        at org.openstreetmap.osmosis.apidb.common.DatabaseContext2.executeWithinTransaction(DatabaseContext2.java:104)
        at org.openstreetmap.osmosis.apidb.v0_6.impl.TransactionDao.executeWithinTransaction(TransactionDao.java:58)
        at org.openstreetmap.osmosis.apidb.v0_6.impl.Replicator.replicateLoop(Replicator.java:260)
        at org.openstreetmap.osmosis.apidb.v0_6.impl.Replicator.replicate(Replicator.java:242)
        at org.openstreetmap.osmosis.apidb.v0_6.ApidbFileReplicator.runImpl(ApidbFileReplicator.java:90)
        at org.openstreetmap.osmosis.apidb.v0_6.ApidbFileReplicator.run(ApidbFileReplicator.java:102)
        ... 1 more

Aug 20,2020 3:20:27 PM org.openstreetmap.osmosis.core.Osmosis main
SEVERE: Execution aborted.
org.openstreetmap.osmosis.core.OsmosisRuntimeException: One or more tasks Failed.
        at org.openstreetmap.osmosis.core.pipeline.common.Pipeline.waitForCompletion(Pipeline.java:146)
        at org.openstreetmap.osmosis.core.Osmosis.run(Osmosis.java:92)
        at org.openstreetmap.osmosis.core.Osmosis.main(Osmosis.java:37)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:564)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchStandard(Launcher.java:330)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:238)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
        at org.codehaus.classworlds.Launcher.main(Launcher.java:47)

它死了。我一无所知。

如果有人知道出了什么问题...我不愿意去看一下代码


edit:我也尝试使用0.48.1和0.48.0,结果是相同的,减去了锁定日志。 源和目标Postgres服务器均为v12。


编辑#2:使用--write-null-change标志而不是--wpc是可行的。 我猜在--rtc--wpc选项之间是有问题的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。