2014-01-22 3 views
0

Zope 인스턴스를 시작할 때 로그 파일에 이상한 오류가 발생합니다. 인스턴스가 ZEO 서버로 실행 중이고 Zope 설치가 virtualenv (/ home/myUser/opt에 있음)입니다. 여러 제품에서이 오류가 발생하지만 Zope가 정상적으로 작동하고 이러한 제품이 설치됩니다. 여기에 제품 BTreeFolder2와 예는 다음과 같습니다Zope : 이상한 "could not install"오류가 발생했습니다.

2014-01-22T12:38:13 ERROR Application Couldn't install BTreeFolder2 
Traceback (most recent call last): 
    File "/home/myUser/opt/Zope2-2.13.21/local/lib/python2.7/site-packages/Zope2-2.13.21-py2.7.egg/OFS/Application.py", line 693, in install_product 
    transaction.commit() 
    File "/home/myUser/opt/Zope2-2.13.21/local/lib/python2.7/site-packages/transaction-1.1.1-py2.7.egg/transaction/_manager.py", line 89, in commit 
    return self.get().commit() 
    File "/home/myUser/opt/Zope2-2.13.21/local/lib/python2.7/site-packages/transaction-1.1.1-py2.7.egg/transaction/_transaction.py", line 329, in commit 
    self._commitResources() 
    File "/home/myUser/opt/Zope2-2.13.21/local/lib/python2.7/site-packages/transaction-1.1.1-py2.7.egg/transaction/_transaction.py", line 446, in _commitResources 
    rm.tpc_vote(self) 
    File "/home/myUser/opt/Zope2-2.13.21/local/lib/python2.7/site-packages/ZODB3-3.10.5-py2.7-linux-x86_64.egg/ZODB/Connection.py", line 781, in tpc_vote 
    s = vote(transaction) 
    File "/home/myUser/opt/Zope2-2.13.21/local/lib/python2.7/site-packages/ZODB3-3.10.5-py2.7-linux-x86_64.egg/ZEO/ClientStorage.py", line 1098, in tpc_vote 
    return self._check_serials() 
    File "/home/myUser/opt/Zope2-2.13.21/local/lib/python2.7/site-packages/ZODB3-3.10.5-py2.7-linux-x86_64.egg/ZEO/ClientStorage.py", line 929, in _check_serials 
    raise s 
ConflictError: database conflict error (oid 0x01, class OFS.Application.Application, serial this txn started with 0x03a449da3a7b1e44 2014-01-22 11:38:13.706468, serial currently committed 0x03a449da3af74dee 2014-01-22 11:38:13.820164) 

내가 내 사이트의 기능에 영향을주지 않는 경우에도,이 문제를 해결하고 싶습니다,하지만 난 어디 있는지 모르겠어요. 어떤 제안? :)

아니면 그냥 캐시 된 개체를 ZEO 서버의 데이터로 갱신해야한다는 뜻입니까?

답변

1

Zope 인스턴스가 시작되면 ZODB에 확장 (제품)을 등록합니다. 그러나 ZEO 서버를 공유하는 여러 인스턴스를 실행하면 거의 모든 인스턴스가 동시에 시작됩니다.이 단계에서는 충돌이 발생합니다. 본질적으로 무해한 충돌은 인스턴스가 영구 구성 요소 설치에 성공했기 때문에 발생합니다.

해결 방법은 제품을 등록하지 않도록 인스턴스를 구성하는 것입니다 (일반적으로 다중 시스템 클러스터의 시스템 당 하나씩). 다시 시작하면 인스턴스 중 하나만 등록을 수행하고 나머지는 동일한 소프트웨어 스택을 실행하여 수행 할 필요가 없습니다.

더 최근의 Zope 설치에서, 제품의 지속적인 부분은 더 이상 사용되지 않으며 대부분 비활성화되어 있습니다. Through-The-Web 제품 또는 ZClasses를 사용하지 않으면이 기능을 사용하지 않아도됩니다.

필요할 때 zope.conf에서 on으로 설정하고 나머지는 off으로 설정하십시오. buildoutplone.recipe.zope2instance recipe을 사용하는 경우 빌드 아웃 래서 피 구성에서이 설정을 지정할 수 있습니다.

+0

감사의 말 Martijn은 내 하루를 보냈습니다 :) 제품 폴더에 제품을 일부 사용 했으므로이 경우에도 제품 설치 스위치가 필요하지만 다른 제품에서는 비활성화 할 것입니다. 인스턴스. 그러나 그럼에도 불구하고 제품은 모든 인스턴스의 제품 폴더에 있어야한다고 생각하십니까? – Rastaf

관련 문제