본문 바로가기

장애&오류&예외

[Wildfly-Bug] Error updating cluster member list: org.infinispan.util.concurrent.TimeoutException(ISPN000197/ISPN000476)(191216/ISPN000136/ISPN000299/ISPN000217)(191217/ISPN000136/ISPN000476)

Wildfly 클러스터링을 적용한 상태에서 클러스터 Node멤버간의 가입/탈퇴 시간차로 인해 발생되는 Exception에 대하여 다룬다.

해당오류로 인하여 전체 세션클러스터링이 해체되는 문제가 발생할 수 있는 큰 부분이기에 다룬다.

클러스터링을 적용하는데 (infinispan),(jgroup),(mod_cluster)가 있으며, 해당 사항은 infinispan에 해당한다.

문제의 발단은 불규칙적인 재기동과 재기동 과정에서 발생하는 멤버의 탈퇴, 가입과정에서 발생되는 타임레그에 있다. 

문제 발단의 Instance Node가 재기동이 이루어졌으나, 실제 클러스터링 되어있는 인스턴스들 간의 정보 공유 시간차로 인하여 인스턴스가 잡고있는 가용영역에 대한 주소를 현행화하지 못하고 클러스터링을 하지 못한다.

 

단순히, 대상 인스턴스의 물리영역주소를 찾지 못하고 발생하는 오류처럼 보인다.

 

하지만, 타 인스턴스에서 문제 발생의 인스턴스를 수용하지 못하고 발생되는 timeout에 대하여 확인 할 수 있다.

 

Cache-Container 내부의 상태값을 체크하는 각 항목별 timeout 기본 시간은 240000ms(4min) 이기 때문에 이를 조정할 필요가 있다.

 

#- Solution(server)( ISPN000197 / ISPN000476 )

/subsystem=infinispan/cache-container=server/replicated-cache=default/component=state-transfer:write-attribute(name=timeout,value=0)

 

서버 항목 이외에도 추가적으로 state-transfer에 대한 timeout 정의가 필요하다.

#- XML Contents(191216) 현행화 

- 현행화 이유 :  infinispan.transaction 관련하여, 오류발생에 따른 현행화 ( ISPN000136 / ISPN000299 / ISPN000217)

- 수정항목 : <replicated-cache>, <distributed-cache> 내 <locking>, <transaction> 제거

<locking isolation="REPEATABLE_READ"/>
<transaction mode="BATCH"/>

 

#- Solution(server)( ISPN000136 / ISPN000299 / ISPN000217)

/subsystem=infinispan/cache-container=web/distributed-cache=dist/component=locking:remove
/subsystem=infinispan/cache-container=web/distributed-cache=dist/component=transaction:remove

 

서블릿의 비동기 호출이 정지된 상태에서 HTTP 세션에 대한 잠금이 없기 때문에 SOAP통신이 이루어질 경우 HTTP 세션 잠금 대기 요청 시간이 초과하여 오류가 발생한다.

 

#- Solution(server)( ISPN000136 / ISPN000476 )

※해결방안 : infinispan 버전업
- 7.0 버전에서 해결불가

#- Refernece
- https://issues.redhat.com/browse/JBEAP-9739?_sscc=t
- https://developer.jboss.org/thread/250608

 

#- 주의사항 : infinispan:8.0이상부터는 cache-container 오류관련된 사항에대하여 대체적으로 해결이 되었으나, 미만인 버전에서는 동일한 이슈가 있을 우려가 있음.

        <subsystem xmlns="urn:jboss:domain:infinispan:7.0">
            <cache-container name="server" aliases="singleton cluster" default-cache="default" module="org.wildfly.clustering.server">
                <transport lock-timeout="60000"/>
                <replicated-cache name="default">
                    <state-transfer timeout="0"/>
                </replicated-cache>
            </cache-container>
            <cache-container name="web" default-cache="dist" module="org.wildfly.clustering.web.infinispan">
                <transport lock-timeout="60000"/>
                <distributed-cache name="dist" l1-lifespan="0" owners="2">
                    <file-store/>
                    <state-transfer timeout="0"/>
                </distributed-cache>
            </cache-container>
            <cache-container name="ejb" aliases="sfsb" default-cache="dist" module="org.wildfly.clustering.ejb.infinispan">
                <transport lock-timeout="60000"/>
                <distributed-cache name="dist">
                    <file-store/>
                    <state-transfer timeout="0"/>
                </distributed-cache>
            </cache-container>
            <cache-container name="hibernate" module="org.infinispan.hibernate-cache">
                <transport lock-timeout="60000"/>
                <local-cache name="local-query">
                    <object-memory size="10000"/>
                    <expiration max-idle="100000"/>
                </local-cache>
                <invalidation-cache name="entity">
                    <transaction mode="NON_XA"/>
                    <object-memory size="10000"/>
                    <expiration max-idle="100000"/>
                </invalidation-cache>
                <replicated-cache name="timestamps"/>
            </cache-container>
        </subsystem>

 

설정을 적용 후, 느리게 가입/탈퇴 되었던 클러스터링 멤버에 대한 여러 문제해결은 되었으나 버전 자체 버그의 문제는 남아 있다.

 

#- References

- [issue-redhat] Clustering Member Update Timeout Exception

- [infinispan_docs] infinispan_server_guide(7.2.x)

- [jboss_docs] WFLY Infinispan Subsystem

- [issue] WFLY-6355

- [issue] WFLY-6926

- [redhat] Solution