问题描述
问题是:内容编辑器保存一个新的内容项,并在外观正确的URL上获得404,以表示新对象。如果它们随后刷新,则该项目在那里,完全正常。
对于多种基于原型的内容类型,会发生这种情况,并且我们已经在至少两个不同的站点上看到了它。我们已经在Plone 3.x和4.0.3上看到了它。这些网站的共同点如下:
HAProxy负载平衡(具有和不具有会话亲和力)
多个ZEO客户
使用ZODB 3.9.7或3.8.4
该问题仅在某些时间发生,可能是4个内容项中的1个
有人看到过这样的东西吗?
解决方法
我没有你的答案;这不应该真的发生。我当然没看过。
您需要收集更多信息来解决此问题,这可能需要与专家进行交互式访问,因此SO并不是解决此类问题的地方。
我所能做的就是建议您收集尽可能多的信息,包括来自各种日志(包括HAProxy和ZEO服务器)的用户交互的完整轨迹。
它可能需要在服务器级别进行其他检测(发生NotFound错误时,转储有关所存在内容的其他信息,等等)。
,一些建议/问题:
确实确实创建了内容对象。
检查内容视图是否正确(在profile / default / types / yourtype.xml中声明的视图)。
将内容直接添加到plone实例时会发生这种情况(没有缓存和负载平衡功能吗?
使用负载平衡但不进行缓存的情况下,将内容添加到直接plone实例时会发生这种情况吗? --->等等...?
也许这不是一种优雅的方法,但是您可以尝试在代码中插入打印语句或pdb断点,以便可以跟踪确实创建了内容对象的时间。仅作为“仪器”的绝望方法来执行此操作。
,是。我们最近开始看到相同的问题。我们几乎有相同的设置。 Haproxy(无会话亲和力)。
我想知道既然该模式似乎是haproxy ...也许是超时后重新分配请求的问题?
更新:
我们遇到了这个问题。保存后重定向到更改的对象时,会发生这种情况。这是因为第二个请求命中了另一个Zeo客户端,但该客户端并未意识到它已经过时。
我们发现的唯一解决方案是在任何POST期间在haproxy(20s)中添加临时会话亲和力。不理想,但确实有效。我只是在寻找更好的解决方案,这就是为什么我发现了这篇旧文章。