Consensys / quorum-examples

Examples for Quorum
Apache License 2.0
321 stars 347 forks source link

Instantiation of [simple type, class org.web3j.quorum.methods.response.raft.RaftPeer] value failed for JSON property ip due to missing (therefore NULL) value for creator parameter ip which is a non-nullable type #227

Open konbluesky opened 4 years ago

konbluesky commented 4 years ago

System information

Geth version: geth version Geth Version: 1.8.18-stable Git Commit: 20c95e5d836ebe94431ff5848e894dd938f4e147 Quorum Version: 2.4.0 Architecture: amd64 Protocol Versions: [63 62] Network Id: 1337 Go Version: go1.11.13 Operating System: linux GOPATH= GOROOT=/home/travis/.gimme/versions/go1.11.13.linux.amd64

OS & Version: OSX

Branch, Commit Hash or Release: git status

Environment: docker, vagrant, host os

Expected behavior

Actual behavior

Steps to reproduce the behavior

  1. run RaftRpcExample.java 2.quorum.raftGetCluster().send().getCluster() throws JsonMappingException
    // raft cluster
            List<RaftPeer> cluster = quorum.raftGetCluster().send().getCluster().get();
            System.out.println("cluster size " + cluster.size());
            System.out.println("cluster " + cluster);
  2. [and so on...]

Error Logs

com.fasterxml.jackson.databind.JsonMappingException: Instantiation of [simple type, class org.web3j.quorum.methods.response.raft.RaftPeer] value failed for JSON property ip due to missing (therefore NULL) value for creator parameter ip which is a non-nullable type
 at [Source: buffer(ResponseBodySource(okhttp3.internal.http1.Http1ExchangeCodec$FixedLengthSource@39d76cb5)).inputStream(); line: 1, column: 258] (through reference chain: org.web3j.quorum.methods.response.raft.RaftPeer["ip"]) (through reference chain: org.web3j.quorum.methods.response.raft.RaftCluster["result"])
    at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:388)
    at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:348)
    at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.wrapAndThrow(BeanDeserializerBase.java:1599)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:278)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:140)
    at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3798)
    at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2908)
    at org.web3j.protocol.Service.send(Service.java:50)
    at org.web3j.protocol.core.Request.send(Request.java:87)
    at com.hthjsj.quorum.RaftRpcExample.main(RaftRpcExample.java:29)
Caused by: com.fasterxml.jackson.databind.RuntimeJsonMappingException: Instantiation of [simple type, class org.web3j.quorum.methods.response.raft.RaftPeer] value failed for JSON property ip due to missing (therefore NULL) value for creator parameter ip which is a non-nullable type
 at [Source: buffer(ResponseBodySource(okhttp3.internal.http1.Http1ExchangeCodec$FixedLengthSource@39d76cb5)).inputStream(); line: 1, column: 258] (through reference chain: org.web3j.quorum.methods.response.raft.RaftPeer["ip"])
    at com.fasterxml.jackson.databind.MappingIterator.next(MappingIterator.java:194)
    at org.web3j.quorum.methods.response.raft.RaftCluster$ResponseDeserialiser.deserialize(RaftCluster.java:55)
    at org.web3j.quorum.methods.response.raft.RaftCluster$ResponseDeserialiser.deserialize(RaftCluster.java:42)
    at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:499)
    at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:101)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:276)
    ... 6 more
Caused by: com.fasterxml.jackson.module.kotlin.MissingKotlinParameterException: Instantiation of [simple type, class org.web3j.quorum.methods.response.raft.RaftPeer] value failed for JSON property ip due to missing (therefore NULL) value for creator parameter ip which is a non-nullable type
 at [Source: buffer(ResponseBodySource(okhttp3.internal.http1.Http1ExchangeCodec$FixedLengthSource@39d76cb5)).inputStream(); line: 1, column: 258] (through reference chain: org.web3j.quorum.methods.response.raft.RaftPeer["ip"])
    at com.fasterxml.jackson.module.kotlin.KotlinValueInstantiator.createFromObjectWith(KotlinValueInstantiator.kt:53)
    at com.fasterxml.jackson.databind.deser.impl.PropertyBasedCreator.build(PropertyBasedCreator.java:138)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:471)
    at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1198)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:314)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:148)
    at com.fasterxml.jackson.databind.MappingIterator.nextValue(MappingIterator.java:277)
    at com.fasterxml.jackson.databind.MappingIterator.next(MappingIterator.java:192)
    ... 11 more

Backtrace

[backtrace]
vsmk98 commented 4 years ago

Hi @konbluesky, please note that there have been changes to the raft.cluster api in version 2.4.0 as described here - https://github.com/jpmorganchase/quorum/blob/0b8ea86da4ed7f37bfa9b07fabd4eb11b9f6bb46/docs/Consensus/raft/raft-rpc-api.md Further, in version 2.5.0 we have fixed an issue with the api. Please refer to https://github.com/jpmorganchase/quorum/pull/934 for further details.

can you please test with version 2.5.0 and let me know if the issue still persists?

konbluesky commented 4 years ago

Hi @vsmk98 ,This problem is still there, I found that was caused by project web3j-quorum

The raft file https://github.com/web3j/web3j-quorum/blob/master/src/main/kotlin/org/web3j/quorum/consensus/raft.kt ,"ip" should be changed to "hostname"

vsmk98 commented 4 years ago

Thanks for the update @konbluesky. Will check and revert back