【问题标题】:Openfire deletes pubsub nodes after one day (not after server restart or deleting cache)Openfire 一天后删除 pubsub 节点(不是在服务器重启或删除缓存后)
【发布时间】:2012-06-13 19:21:54
【问题描述】:

一天后,我创建的所有 pubsub 节点都消失了,我无法通过 iq 节检索它们。但它们仍然在 mysql 数据库中。无论如何,当我创建节点时,它们可以通过 xml iq 节进行检索..

有人知道会发生什么吗?

Edit1:我注意到我使用标准配置创建的叶节点一天后并没有消失。所以我认为这是我这边的配置问题。

我通过以下方式检索 pubsub 节点:

<iq type='get' to='pubsub.server.local'>
  <query xmlns='http://jabber.org/protocol/disco#items'/>
</iq>

或者对于特定的节点:

<iq type='get' to='pubsub.server.local'>
  <query xmlns='http://jabber.org/protocol/disco#items' node='Collection1'/>
</iq>

这不是问题,因为创建后我获得了有关我创建的节点的所有信息。一天后我无法找回它们。也许我的配置有误,或者服务器在一天后删除了缓存之类的东西?但是我尝试手动删除缓存,并且可以检索新创建的节点。正如我所说,它们一天后无法恢复。这真的很奇怪..

Edit2:配置

我创建 collection/collection/leaf 以下配置:

<iq to='pubsub.server.local' type="set">
<pubsub xmlns="http://jabber.org/protocol/pubsub">
<create node="Weird"/> 
<configure><x xmlns="jabber:x:data" type="submit"> 
<field var="FORM_TYPE"><value>http://jabber.org/protocol/pubsub#node_config</value> </field>
<field var="pubsub#node_type"><value>collection</value></field>  
<field var="pubsub#title"><value>NodeName</value> </field>
<field var="pubsub#description"><value>NodeDescription</value></field>
<field var="pubsub#leaf_node_association_policy"><value>whitelist</value></field>
<field var="pubsub#leaf_node_association_whitelist"><value>owner@server.local</value></field>
</x></configure> </pubsub>
</iq>

我可以将所有者的 JID 放入白名单吗?

然后我在第一个集合中创建并配置集合,该集合出于识别原因将“节点”属性设置为 collection_1234,并将“名称”属性设置为可读名称 Collection2

<iq to='pubsub.server.local' type="set">
<pubsub xmlns="http://jabber.org/protocol/pubsub">
<create node="collection_1234"/> 
<configure><x xmlns="jabber:x:data" type="submit"> 
<field var="FORM_TYPE"><value>http://jabber.org/protocol/pubsub#node_config</value> </field>
<field var="pubsub#node_type"><value>collection</value></field>
<field var="pubsub#collection"><value>Weird</value></field>   
<field var="pubsub#title"><value>Collection2</value> </field>
<field var="pubsub#deliver_payloads"><value>1</value></field>
<field var="pubsub#leaf_node_association_whitelist"><value>user1@server.local</value></field>
</x></configure> </pubsub>
</iq>

子节点(此处为 Atom)的负载类型是否必须与父集合节点中的相同(此处为无)?

然后是 Collection2 中的一片叶子:

<iq to="pubsub.server.local" type="set">
    
<pubsub xmlns="http://jabber.org/protocol/pubsub">
<create node="leaf_1234"/> 
<configure><x xmlns="jabber:x:data" type="submit"> 
<field var="FORM_TYPE"><value>http://jabber.org/protocol/pubsub#node_config</value></field>
<field var="pubsub#collection"><value>collection_1234</value></field> 
<field var="pubsub#type"><value>http://www.w3.org/2005/Atom</value></field>
<field var="pubsub#persist_items"><value>1</value></field>
<field var="pubsub#max_items"><value>-1</value></field>
<field var="pubsub#type"><value>http://www.w3.org/2005/Atom</value>
<field var="pubsub#publisher">
  <value>nodeowner@server.local</value>
  <value>anotheruser@server.local</value>
</field>
</x>
</configure> </pubsub>
</iq>

我可以将节点所有者配置为发布者吗? 我省略了 #publish_model 变量,因为值 publishers 是标准的。

【问题讨论】:

  • 我从未见过这个问题,也没有类似的报道,所以我怀疑这是你的问题。了解您如何检索节点会很有用(显然创建工作,因为它们在数据库中)。
  • 请看我的edit1和edit2。我设法用标准配置创建了一个不会消失的叶节点。
  • 我可以删除 open fire 的缓存,停止并启动服务器,但我可以检索所有新创建的节点。但一天后它们消失了。也许一些openfire的“一致性检查”每天都在运行并检查节点配置是否有效然后缓存它?但是创建后它不会检查..
  • 我卸载了openfire并现在安装它。在设置中有一个数据库连接超时 = 1.0 天的选项。也许这就是为什么我的一些节点在一天后消失了......但其中一些仍然存在。
  • 这可能是 UTF-8 或 LATIN-1 和 MySQL 的问题。集合节点中所有以“W”或“U”开头的节点都会消失,一天后无法找回。我怎样才能绕过它?

标签: javascript xmpp openfire


【解决方案1】:

不确定这是否仍然相关,但可能对其他人有所帮助:

我也遇到了这个问题,但是使用了字母“H”(正如您在 cmets 中所描述的那样)。我可以创建以“H”开头的节点并正确使用它们,但是当重新启动 openfire 时,即使数据库中确实存在这些节点,也不会找到这些节点。 我发现这是因为名为“home”的根节点。可能是因为这也以“H”开头。我尝试为以不同字符开头的根节点赋予几个不同的名称,但这会导致一个或多个其他起始字符失败。

为了解决这个问题,我将根节点命名为“*”,问题就解决了!一个聪明的方法是将你的数据库导出到一个文本文件,用'*'替换所有[根节点](在我的例子中是'home',然后再次导入它,最后重新启动openfire。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多