May 24, 2011 18:47
Добрый вечер!
Второй день вожусь с проблемой, истоки которой никак не могу понять.
На одной виртуалке (внутри клауда) поднят Coherence-кластер из 2-х нод
Конфигурация 1-ой ноды:
tangosol.coherence.cluster=testCluster
tangosol.coherence.clusteraddress=239.235.253.228
tangosol.coherence.clusterport=6270
tangosol.coherence.distributed.backupcount=1
tangosol.coherence.distributed.localstorage=true
tangosol.coherence.distributed.threads=4
tangosol.coherence.invocation.threads=4
tangosol.coherence.localport=8083
tangosol.coherence.localport.adjust=false
tangosol.coherence.log=log4j
tangosol.coherence.machine=testMachine
tangosol.coherence.management=all
tangosol.coherence.management.remote=true
tangosol.coherence.member=Node1
tangosol.coherence.mode=dev
tangosol.coherence.priority=5
tangosol.coherence.role=StorageNode
tangosol.coherence.ttl=4
tangosol.coherence.wka=localhost
tangosol.coherence.wka.port=8083
Конфигурация 2-ой ноды:
tangosol.coherence.cluster=testCluster
tangosol.coherence.clusteraddress=239.235.253.228
tangosol.coherence.clusterport=6270
tangosol.coherence.distributed.backupcount=1
tangosol.coherence.distributed.localstorage=false
tangosol.coherence.distributed.threads=4
tangosol.coherence.invocation.threads=4
tangosol.coherence.localport=8084
tangosol.coherence.localport.adjust=false
tangosol.coherence.log=log4j
tangosol.coherence.machine=testMachine
tangosol.coherence.management=all
tangosol.coherence.management.remote=true
tangosol.coherence.member=Node2
tangosol.coherence.mode=dev
tangosol.coherence.priority=5
tangosol.coherence.role=ServiceNode
tangosol.coherence.ttl=4
tangosol.coherence.wka=localhost
tangosol.coherence.wka.port=8083
Проблема:
Если грузить данные в кэщи на 2-ой ноде (ServiceNode), то ничего не происходит - кэши остаются пустыми. При этом процесс протекает нормально, никаких исключений нигде не бросается (в том числе самим Кохеренсом).
Но при попытке получить какой-либо объект из кэша на 2-ой ноде, инициируется загрузка этого объекта через read through на 1-ой ноде, он нормально грузится, попадает в кэш и возвращается.
Если грузить данные на 1-ой ноде (StorageNode), то всё хорошо - данные в кэши попадают.
Кластер, поднятый на физических машинах в той же конфигурации, работает нормально.
Предполагаю, что сообщения от 2-ой ноды не доходят до 1-ой. Вот только как это отследить и определить, кто их блокирует?
Буду благодарен за помощь или наводки.
UPDATE: чудеса отменяются, Coherence работает. Проблема оказалась в нашем коде: выставлялось неправильное значение одного property, о котором давно забыли, в результате объекты в кэш просто не клались.
Надо распечатать и повесить на рабочем месте табличку "Сначала код, потом предположения" :-)
java