如果读者访问权限被撤销,在服务器到服务器复制期间会发生什么

发布于 2024-11-29 01:11:52 字数 490 浏览 0 评论 0原文

我想了解以下 Lotus-Domino 服务器到服务器复制场景中会发生什么:

  • 服务器 A 有 A 数据库的副本。
  • 服务器 B 具有同一数据库的副本。
  • 两台服务器都具有数据库的管理员访问权限,包括删除文档权限。
  • 复制器进程刚刚复制了 A 和 B,并且所有内容都是同步的。
  • 该数据库包含一个注释,其中有一个读者字段,其中提到了这两个服务器。
  • 在服务器 A 上,服务器 B 的条目已从读者字段中删除。
  • 服务器 A 启动与 B 的复制。

在这种情况下,我希望服务器 A 将从服务器 B 中删除文档。该情况有多种变化,服务器 C 与 B 进行复制,B 启动与 A 的复制。

我有一个应用程序是围绕这个期望构建,并且在大多数情况下都效果良好。但有一些注释保留在服务器 B 上并且被排除在复制过程之外。 OID 仍然不同。在某些情况下,两个笔记上的 DSN 都已更新,但在复制过程中却没有任何结果。

I would like to understand what happens in the following Lotus-Domino server to server replication scenario:

  • Server A has a replica of A database.
  • Server B has a replica of the same database.
  • Both servers have manager access on the database, including the delete document privilege.
  • The replicator process has just replicated A and B and all is in sync.
  • The database contains a note that has a reader field where both servers are mentioned.
  • On server A the entry for server B is removed from the readers field.
  • Server A initiates the replication with B.

In this scenario I expect that server A will remove the document from server B. There are variations on the scenario, server C replicating with B, B initiating the replication with A.

I have an application that is build around this expectation, and it has worked well most of the time. But there are notes that remain on server B and are excluded from the replication process. The OID remains different. There are instances where the DSN is updated on both notes without any result in the replication process.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

不必了 2024-12-06 01:11:52

事实上,我不同意AndrewB的回答。根据我的经验,它应该按照您的期望工作。使用 readernames 字段来控制复制已经成为我标准武器库的一部分超过 15 年了,我发现它比选择性复制的替代方案可靠得多——选择性复制是邪恶的,应该不惜一切代价避免,但那是另一个故事了!

确实,一旦 readernames 字段不再包含 serverB 的条目,则注释本身对于 serverB 是不可见的,但注释已更改这一事实对于复制器来说并不是不可见的。复制器应该注意到这一点,确定 serverB 不再拥有该文档的权限,并将其删除——不留下存根。

您是否尝试过清除双方的复制历史记录?

Actually, I disagree with AndrewB's answer. In my experience, it should work as per your expectations. Using readernames fields to control replication has been part of my standard arsenal for 15+ years, and I have found it far more reliable than the alternative of selective replication -- which is evil and should be avoided at all costs, but that's another story!

It is true that once the readernames field no longer contains the entry for serverB the note itself is invisible to serverB, but the fact that the note has changed is not invisible to the replicator. The replicator should notice this, determine that serverB no longer has rights to the document, and remove it -- without leaving a stub.

Have you tried clearing the replication history on both sides?

愁以何悠 2024-12-06 01:11:52

这是一个很容易陷入的陷阱,您不应该使用 Reader 字段来控制服务器之间的复制,它们非常适合控制用户和组,但复制组中的所有服务器都应该始终有权访问所有内容。

文档留在服务器 B 上/未更新的原因是,从文档的阅读器字段中删除服务器 B 使其对服务器不可见,因此它不知道它已更改或已删除。服务器 A 上的删除被服务器 B 拾取的原因是,删除将文档转换为删除存根,该存根仅比 UNID 大一点,因此读者字段也会使删除对服务器 B “可见”。甚至强制服务器 A 写入服务器 B,因为服务器 A 知道服务器 B 不允许查看该文档,因此推送复制将忽略相关文档。

This is an easy trap to fall into, you should not use Reader fields to control replication between servers, they are fantastic to control users and groups but all servers in a replication group should always have access to everything.

The reason the documents are left/not updated on server B is that removal of the server B from reader field on the document makes it invisible to the server hence it has no idea that it has changed, or been deleted. The reason that the deletion on server A was picked up by server B is that deletion converts the document into a deletion stub which is little more than the UNID so readers field also go making the deletion 'visible' to server B. You can't even force server A to write to server B because server A will know that server B isn't allowed to see the document so a push replication will ignore the document in question.

千寻… 2024-12-06 01:11:52

IBM 为此创建了一个 SPR

问题通常,当服务器从读取器字段中删除时
文档,在计划的复制发生后,该文档是
从服务器中删除,因为该服务器不再有权访问
文档。在某些情况下,当从服务器中删除辅助服务器时
驻留在主服务器上的文档的阅读器字段,之后
复制发生在两个服务器之间,该文档不是
按预期从辅助服务器中删除。启用复制
debug 在源服务器上显示以下错误:“您不是
有权执行该操作”。清除复制
历史记录并从两台服务器启动复制无法解决
问题。经进一步调查,确定
辅助服务器上的文档具有更高的序列号,
意味着它的更新时间比有关文件的更新时间要晚
主服务器。通常,当文档不包含阅读器时
字段或者如果参与复制的两台服务器都列在
文档两个副本的 reader 字段,复制冲突
之前在两台服务器上修改文档时都会生成
复制发生。然而,在这种特殊情况下,由于
辅助服务器无权访问该文档
主服务器,复制按预期失败,并且复制
不会生成冲突,因为为了使冲突文档
要生成该文档,两台服务器都需要有权访问该文档。

解决问题
1.) 短期解决方案是修改主服务器上的文档,使其序列号高于上的文档
辅助服务器。复制发生后,更改
应复制到辅助服务器,并且该文档应
按预期从辅助服务器中删除。
2.) 更持久的解决方案是防止用户和服务器同时对两台服务器上的文档进行更改
时间。此外,更频繁地复制应该有助于减少
这种情况不会发生,因为在一台服务器上进行的更改将
可能会在另一方也进行更改之前复制出去
服务器。此问题正在 SPR MKHS8MLQVD 下跟踪

IBM has created an SPR for this:

Problem Normally, when a server is removed from the reader field of a
document, after scheduled replication takes place, the document is
deleted from the server since that server no longer has access to the
document. In some cases, when a secondary server is removed from the
reader field of a document residing on a primary server, after
replication occurs between the two servers, the document is not
deleted from the secondary server as is expected. Enabling replication
debug reveals the following error on the source server: "You are not
authorized to perform that operation". Clearing the replication
history and initiating replication from both servers does not resolve
the problem. Upon further investigation, it was determined that the
document on the secondary server had a higher sequence number which
implies that it was updated more recently than the document on the
primary server. Normally, when a document does not contain a reader
field or if both servers involved in the replication are listed in the
reader field of both copies of the document, a replication conflict
will be generated when the document is modified on both servers before
replication takes place. However, in this particular situation, since
the secondary server does not have access to the document on the
primary server, replication fails as is expected and a replication
conflict is not generated because in order for a conflict document to
be generated, both servers need to have access to the document.

Resolving the problem
1.) A short term solution would be to modify the document on the primary server so that its sequence number is higher than document on
the secondary server. After replication takes place, the changes
should replicate to the secondary server and the document should be
deleted from the secondary server as is expected.
2.) A more permanent solution would be to prevent users and servers from making changes to the document on both servers at around the same
time. Also, replicating more often should help reduce the chances of
such a condition from occurring since changes made on one server will
possibly replicate out before changes are also made on the other
server. This issue issue is being tracked under SPR MKHS8MLQVD

过期以后 2024-12-06 01:11:52

我们在整合服务器时发生过类似的事情,但效果并不好。如果我使用您的服务器 A/服务器 B 场景,我们所发生的情况是服务器 B 与服务器 A 进行了复制,并且文档从服务器 B 中消失了。不幸的是,这被跟踪为删除,因此当 A 和 B 再次复制时,文档随后从服务器中删除答:

幸运的是我们有备份。

We had something like this happen when we were consolidating servers and it didn't work out very well for us. If I use your server A/server B scenario what happened for us was Server B replicated with Server A and the document disappeared from Server B. Unfortunately this was tracked as a deletion so when A and B replicated again the documents were then removed from server A.

Luckily we had backups.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文