我们有一个问题,比我想要的更频繁,工作或客户端会话是否崩溃以及这些会话是否正在使用数字序列来创建新记录,但他们最终会按字面意思阻止该数字序列任何试图使用相同序列创建记录的人都将冻结其客户端。
发生这种情况时,我通常会进入NUMBERSEQUENCELIST
表,找到正确的DataAreadId
和用户,并删除Status
= 1的行。
对于工作者会话,我想我们可以很好地调整在其中运行的代码,但是对于客户端会话崩溃,我们无能为力......
有什么想法吗?
谢谢!
编辑:原来在这种情况下,重新启动AOS服务器后,您可以在数字序列菜单中进入列表,然后进行清理。在重新启动之前,我的客户端会冻结尝试这样做。所以不需要直接通过SQL来完成。
答案 0 :(得分:1)
NumberSequenceList
中的连续数字每24小时自动清除一次(或按照数字顺序设置)。如果存在许多“死”数(数百或数千),则清理过程非常缓慢。这可能被视为悬挂,但不是。
需要考虑的事项:
同时避免保留号码,只需使用它即可。而不是反模式:
NumberSeq idSequence = NumberSeq::newGetNum(IntrastatParameters::numRefIntrastatArchiveID(), true);
this.IntrastatArchiveID = idSequence.num();
idSequence.used();
只需使用数字:
this.IntrastatArchiveID = NumberSeq::newGetNum(IntrastatParameters::numRefIntrastatArchiveID()).num();
makeDecisionLater
参数只应在表单中使用,用户可以决定不使用该号码(通过删除或转义)。在这种情况下,无论如何NumberSeqFormHandler
类should be used。