2017-05-10 8 views
3

에서 발견되지 않았습니다. ColdBox 4.2를 실행하면서 reinit 후에이 오류가 표시되었지만 하나의 특정 처리기 cfc에서만 발생했습니다. 우리가 몇 번 다시 시작하면 결국 사라질 것이고 그것은 경쟁 조건처럼 들릴 것입니다. ColdBox : _actionExists 메소드가 구성 요소

우리는 단지 extends="coldbox.system.EventHandler"을 수행하지 않고 직접 핸들러 방법의 프레임 워크 믹스를시키는 생각하지만, 우리는 다른 오류보고 시작 : 우리는 몇 번 REINIT 경우

Error building: myApp.handlers.admin.report -> The CONTROLLER parameter to the init function is required but was not passed in. with constructor arguments: {}

마찬가지로,이 오류가 멀리 갈 것을 init을 통해 요구가 오기 전에 모든 것들이 베이킹을 끝내기까지 기다린다.

로드가 상당히 낮기 때문에 비 생산 시스템에서는이를 재현 할 수 없습니다.

비슷한 일을하는 사람이 있습니까?로드 된 상태에서 프레임 워크를 정상적으로 다시 시작할 수있는 방법을 찾았습니까?

답변

2

실제로 합리적으로 안정적으로 REINIT의 동안 경쟁 조건 오류를 재현 관리하고 꽤 많은 응답이 이제까지 올 생산에 fwreinit를 사용하지 않는하는 문제 COLDBOX-307으로 게시 우리는 applicationStop를 호출하는 우리 자신의 방법을 사용하여 전환 application.cfc에서 fwreinit을 사용할 때보고 있던 문제가 수정되었습니다. applicationStop를 사용하는 경우

한 점은 (아마 올바른 용어) 에 대한 적용 범위를 의미하는 스레드로부터 안전하지 않습니다주의에 호출 할 때 당신은 몇 가지 이상한 오류를 가질 수 있도록이 안녕히 갈 것입니다 현재 실행중인 모든 요청 이런 식으로 다시 시작하는 것.

+0

세션 자체가 종료됩니까? 나는 본질적으로 모든 사람을 로그 아웃 시켜서 reinit가 필요한 새로운 코드를 배포하는 것을 싫어한다. – jinglesthula

+0

@jinglesthula 우리가 세션 저장 장치를 사용하여 세션이 완전히 다시 시작될 때까지 계속 유지할 것이라는 것은 확실하지 않습니다. 기본적으로 Coldfusion 서버 서비스를 다시 시작하는 것과 같지만 메모리 세션에서만 사용할 수 있다고 상상합니다. 세션 범위가 이전 응용 프로그램의 개체를 포함 할 수 없기 때문에 메모리가 부족해질 위험이 있습니다. 이러한 응용 프로그램은 가비지 수집되지 않도록합니다. – Snipzwolf

+3

@ jinglesthula 실제로 대답은 아니오입니다. applicationStop을 호출해도 기존 세션이 끝나지 않습니다. –