prabushitha / gremlin-visualizer

visualize the graph network corresponding to a gremlin query
MIT License
227 stars 70 forks source link

Conflicting getter definitions for property "id": org.umlg.sqlg.structure.RecordId#getId(0 params) #24

Open veqryn opened 2 years ago

veqryn commented 2 years ago

I have the grateful dead json loaded into a graph, using this graph database: https://github.com/pietermartin/sqlg

I am running g.V() on your visualizer tool, and getting an error.

The logs from this tool are:

[0] ResponseError: Server error: Error during serialization: Conflicting getter definitions for property "id": org.umlg.sqlg.structure.RecordId#getId(0 params) vs org.umlg.sqlg.structure.RecordId#getID(0 params) (599)
[0]     at Connection._handleMessage (/gremlin-visualizer-master/node_modules/gremlin/lib/driver/connection.js:269:9)
[0]     at WebSocket._ws.on (/gremlin-visualizer-master/node_modules/gremlin/lib/driver/connection.js:129:43)
[0]     at WebSocket.emit (events.js:198:13)
[0]     at Receiver._receiver.onmessage (/gremlin-visualizer-master/node_modules/ws/lib/WebSocket.js:141:47)
[0]     at Receiver.dataMessage (/gremlin-visualizer-master/node_modules/ws/lib/Receiver.js:380:14)
[0]     at perMessageDeflate.decompress (/gremlin-visualizer-master/node_modules/ws/lib/Receiver.js:349:40)
[0]     at _decompress (/gremlin-visualizer-master/node_modules/ws/lib/PerMessageDeflate.js:306:9)
[0]     at _inflate.flush (/gremlin-visualizer-master/node_modules/ws/lib/PerMessageDeflate.js:386:7)
[0]     at afterWrite (_stream_writable.js:485:3)
[0]     at onwrite (_stream_writable.js:476:7)

The following logs from the gremlin-server:

could not be serialized by org.apache.tinkerpop.gremlin.driver.ser.AbstractGraphSONMessageSerializerV2d0.
org.apache.tinkerpop.shaded.jackson.databind.JsonMappingException: Conflicting getter definitions for property "id": org.umlg.sqlg.structure.RecordId#getId(0 params) vs org.umlg.sqlg.structure.RecordId#getID(0 params)
        at org.apache.tinkerpop.shaded.jackson.databind.JsonMappingException.from(JsonMappingException.java:295)
        at org.apache.tinkerpop.shaded.jackson.databind.SerializerProvider.reportMappingProblem(SerializerProvider.java:1309)
        at org.apache.tinkerpop.shaded.jackson.databind.SerializerProvider._createAndCacheUntypedSerializer(SerializerProvider.java:1427)
        at org.apache.tinkerpop.shaded.jackson.databind.SerializerProvider.findValueSerializer(SerializerProvider.java:521)
        at org.apache.tinkerpop.shaded.jackson.databind.SerializerProvider.findTypedValueSerializer(SerializerProvider.java:799)
        at org.apache.tinkerpop.shaded.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:308)
        at org.apache.tinkerpop.shaded.jackson.databind.ObjectMapper.writeValue(ObjectMapper.java:3058)
        at org.apache.tinkerpop.shaded.jackson.core.base.GeneratorBase.writeObject(GeneratorBase.java:388)
        at org.apache.tinkerpop.gremlin.structure.io.graphson.JavaUtilSerializersV3d0$MapJacksonSerializer.serialize(JavaUtilSerializersV3d0.java:59)
        at org.apache.tinkerpop.gremlin.structure.io.graphson.JavaUtilSerializersV3d0$MapJacksonSerializer.serializeWithType(JavaUtilSerializersV3d0.java:67)
        at org.apache.tinkerpop.gremlin.structure.io.graphson.JavaUtilSerializersV3d0$MapJacksonSerializer.serializeWithType(JavaUtilSerializersV3d0.java:49)
        at org.apache.tinkerpop.shaded.jackson.databind.ser.impl.TypeWrappedSerializer.serialize(TypeWrappedSerializer.java:32)
        at org.apache.tinkerpop.shaded.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:480)
        at org.apache.tinkerpop.shaded.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:319)
        at org.apache.tinkerpop.shaded.jackson.databind.ObjectMapper.writeValue(ObjectMapper.java:3058)
        at org.apache.tinkerpop.shaded.jackson.core.base.GeneratorBase.writeObject(GeneratorBase.java:388)
        at org.apache.tinkerpop.gremlin.structure.io.graphson.JavaUtilSerializersV3d0$ListJacksonSerializer.serialize(JavaUtilSerializersV3d0.java:127)
        at org.apache.tinkerpop.gremlin.structure.io.graphson.JavaUtilSerializersV3d0$ListJacksonSerializer.serializeWithType(JavaUtilSerializersV3d0.java:135)
        at org.apache.tinkerpop.gremlin.structure.io.graphson.JavaUtilSerializersV3d0$ListJacksonSerializer.serializeWithType(JavaUtilSerializersV3d0.java:118)
        at org.apache.tinkerpop.shaded.jackson.databind.ser.impl.TypeWrappedSerializer.serialize(TypeWrappedSerializer.java:32)
        at org.apache.tinkerpop.gremlin.driver.ser.AbstractGraphSONMessageSerializerV2d0$ResponseMessageSerializer.ser(AbstractGraphSONMessageSerializerV2d0.java:281)
        at org.apache.tinkerpop.gremlin.driver.ser.AbstractGraphSONMessageSerializerV2d0$ResponseMessageSerializer.serializeWithType(AbstractGraphSONMessageSerializerV2d0.java:255)
        at org.apache.tinkerpop.gremlin.driver.ser.AbstractGraphSONMessageSerializerV2d0$ResponseMessageSerializer.serializeWithType(AbstractGraphSONMessageSerializerV2d0.java:240)
        at org.apache.tinkerpop.shaded.jackson.databind.ser.impl.TypeWrappedSerializer.serialize(TypeWrappedSerializer.java:32)
        at org.apache.tinkerpop.shaded.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:480)
        at org.apache.tinkerpop.shaded.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:319)
        at org.apache.tinkerpop.shaded.jackson.databind.ObjectMapper._writeValueAndClose(ObjectMapper.java:4409)
        at org.apache.tinkerpop.shaded.jackson.databind.ObjectMapper.writeValueAsBytes(ObjectMapper.java:3687)
        at org.apache.tinkerpop.gremlin.driver.ser.AbstractGraphSONMessageSerializerV2d0.serializeResponseAsBinary(AbstractGraphSONMessageSerializerV2d0.java:85)
        at org.apache.tinkerpop.gremlin.server.op.AbstractOpProcessor.makeFrame(AbstractOpProcessor.java:291)
        at org.apache.tinkerpop.gremlin.server.op.AbstractOpProcessor.handleIterator(AbstractOpProcessor.java:167)
        at org.apache.tinkerpop.gremlin.server.op.AbstractEvalOpProcessor.lambda$evalOpInternal$5(AbstractEvalOpProcessor.java:263)
        at org.apache.tinkerpop.gremlin.groovy.engine.GremlinExecutor.lambda$eval$0(GremlinExecutor.java:283)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.lang.IllegalArgumentException: Conflicting getter definitions for property "id": org.umlg.sqlg.structure.RecordId#getId(0 params) vs org.umlg.sqlg.structure.RecordId#getID(0 params)
        at org.apache.tinkerpop.shaded.jackson.databind.introspect.POJOPropertyBuilder.getGetter(POJOPropertyBuilder.java:440)
        at org.apache.tinkerpop.shaded.jackson.databind.introspect.BeanPropertyDefinition.getAccessor(BeanPropertyDefinition.java:188)
        at org.apache.tinkerpop.shaded.jackson.databind.ser.BeanSerializerFactory.removeIgnorableTypes(BeanSerializerFactory.java:698)
        at org.apache.tinkerpop.shaded.jackson.databind.ser.BeanSerializerFactory.findBeanProperties(BeanSerializerFactory.java:573)
        at org.apache.tinkerpop.shaded.jackson.databind.ser.BeanSerializerFactory.constructBeanOrAddOnSerializer(BeanSerializerFactory.java:384)
        at org.apache.tinkerpop.shaded.jackson.databind.ser.BeanSerializerFactory.findBeanOrAddOnSerializer(BeanSerializerFactory.java:286)
        at org.apache.tinkerpop.shaded.jackson.databind.ser.BeanSerializerFactory._createSerializer2(BeanSerializerFactory.java:231)
        at org.apache.tinkerpop.shaded.jackson.databind.ser.BeanSerializerFactory.createSerializer(BeanSerializerFactory.java:165)
        at org.apache.tinkerpop.shaded.jackson.databind.SerializerProvider._createUntypedSerializer(SerializerProvider.java:1474)
        at org.apache.tinkerpop.shaded.jackson.databind.SerializerProvider._createAndCacheUntypedSerializer(SerializerProvider.java:1422)
        ... 36 more

This points to: https://github.com/pietermartin/sqlg/blob/master/sqlg-core/src/main/java/org/umlg/sqlg/structure/RecordId.java#L187-L198

Is there anything that can be done to avoid this?

Can it use v3d0?

veqryn commented 2 years ago

The owner of that repo removed the second getID, and the query to the gremlin server now completes successfully. However, no graph is shown (see https://github.com/pietermartin/sqlg/issues/429 ). Is this visualizer tool expecting something else to be returned?

Here is a sample of what I see being returned by the gremlin-server, as shown in chrome inspect network tab:

[{
    "id": {
        "@type": "g:Map",
        "@value": ["id", {
            "@type": "g:Int64",
            "@value": 1
        }, "schemaTable", {
            "@type": "simple:schemaTable",
            "@value": {
                "@type": "g:Map",
                "@value": ["schema", "public", "table", "song"]
            }
        }]
    },
    "label": "song",
    "properties": {
        "name": "HEY BO DIDDLEY",
        "songType": "cover",
        "performances": 5
    },
    "edges": [{
        "id": "{\"@type\":\"g:Map\",\"@value\":[\"id\",{\"@type\":\"g:Int64\",\"@value\":5},\"schemaTable\",{\"@type\":\"simple:schemaTable\",\"@value\":{\"@type\":\"g:Map\",\"@value\":[\"schema\",\"public\",\"table\",\"followedBy\"]}}]}",
        "from": {
            "@type": "g:Map",
            "@value": ["id", {
                "@type": "g:Int64",
                "@value": 1
            }, "schemaTable", {
                "@type": "simple:schemaTable",
                "@value": {
                    "@type": "g:Map",
                    "@value": ["schema", "public", "table", "song"]
                }
            }]
        },
        "to": {
            "@type": "g:Map",
            "@value": ["id", {
                "@type": "g:Int64",
                "@value": 2
            }, "schemaTable", {
                "@type": "simple:schemaTable",
                "@value": {
                    "@type": "g:Map",
                    "@value": ["schema", "public", "table", "song"]
                }
            }]
        },
        "label": "followedBy",
        "properties": {
            "weight": 1
        }
    }, {
        "id": "{\"@type\":\"g:Map\",\"@value\":[\"id\",{\"@type\":\"g:Int64\",\"@value\":7},\"schemaTable\",{\"@type\":\"simple:schemaTable\",\"@value\":{\"@type\":\"g:Map\",\"@value\":[\"schema\",\"public\",\"table\",\"followedBy\"]}}]}",
        "from": {
            "@type": "g:Map",
            "@value": ["id", {
                "@type": "g:Int64",
                "@value": 1
            }, "schemaTable", {
                "@type": "simple:schemaTable",
                "@value": {
                    "@type": "g:Map",
                    "@value": ["schema", "public", "table", "song"]
                }
            }]
        },
        "to": {
            "@type": "g:Map",
            "@value": ["id", {
                "@type": "g:Int64",
                "@value": 3
            }, "schemaTable", {
                "@type": "simple:schemaTable",
                "@value": {
                    "@type": "g:Map",
                    "@value": ["schema", "public", "table", "song"]
                }
            }]
        },
        "label": "followedBy",
        "properties": {
            "weight": 2
        }
    }, {
        "id": "{\"@type\":\"g:Map\",\"@value\":[\"id\",{\"@type\":\"g:Int64\",\"@value\":74},\"schemaTable\",{\"@type\":\"simple:schemaTable\",\"@value\":{\"@type\":\"g:Map\",\"@value\":[\"schema\",\"public\",\"table\",\"followedBy\"]}}]}",
        "from": {
            "@type": "g:Map",
            "@value": ["id", {
                "@type": "g:Int64",
                "@value": 1
            }, "schemaTable", {
                "@type": "simple:schemaTable",
                "@value": {
                    "@type": "g:Map",
                    "@value": ["schema", "public", "table", "song"]
                }
            }]
        },
        "to": {
            "@type": "g:Map",
            "@value": ["id", {
                "@type": "g:Int64",
                "@value": 4
            }, "schemaTable", {
                "@type": "simple:schemaTable",
                "@value": {
                    "@type": "g:Map",
                    "@value": ["schema", "public", "table", "song"]
                }
            }]
        },
        "label": "followedBy",
        "properties": {
            "weight": 1
        }
    }, {
        "id": "{\"@type\":\"g:Map\",\"@value\":[\"id\",{\"@type\":\"g:Int64\",\"@value\":150},\"schemaTable\",{\"@type\":\"simple:schemaTable\",\"@value\":{\"@type\":\"g:Map\",\"@value\":[\"schema\",\"public\",\"table\",\"followedBy\"]}}]}",
        "from": {
            "@type": "g:Map",
            "@value": ["id", {
                "@type": "g:Int64",
                "@value": 1
            }, "schemaTable", {
                "@type": "simple:schemaTable",
                "@value": {
                    "@type": "g:Map",
                    "@value": ["schema", "public", "table", "song"]
                }
            }]
        },
        "to": {
            "@type": "g:Map",
            "@value": ["id", {
                "@type": "g:Int64",
                "@value": 5
            }, "schemaTable", {
                "@type": "simple:schemaTable",
                "@value": {
                    "@type": "g:Map",
                    "@value": ["schema", "public", "table", "song"]
                }
            }]
        },
        "label": "followedBy",
        "properties": {
            "weight": 1
        }
    }, {
        "id": "{\"@type\":\"g:Map\",\"@value\":[\"id\",{\"@type\":\"g:Int64\",\"@value\":194},\"schemaTable\",{\"@type\":\"simple:schemaTable\",\"@value\":{\"@type\":\"g:Map\",\"@value\":[\"schema\",\"public\",\"table\",\"followedBy\"]}}]}",
        "from": {
            "@type": "g:Map",
            "@value": ["id", {
                "@type": "g:Int64",
                "@value": 1
            }, "schemaTable", {
                "@type": "simple:schemaTable",
                "@value": {
                    "@type": "g:Map",
                    "@value": ["schema", "public", "table", "song"]
                }
            }]
        },
        "to": {
            "@type": "g:Map",
            "@value": ["id", {
                "@type": "g:Int64",
                "@value": 6
            }, "schemaTable", {
                "@type": "simple:schemaTable",
                "@value": {
                    "@type": "g:Map",
                    "@value": ["schema", "public", "table", "song"]
                }
            }]
        },
        "label": "followedBy",
        "properties": {
            "weight": 1
        }
    }, {
        "id": "{\"@type\":\"g:Map\",\"@value\":[\"id\",{\"@type\":\"g:Int64\",\"@value\":105},\"schemaTable\",{\"@type\":\"simple:schemaTable\",\"@value\":{\"@type\":\"g:Map\",\"@value\":[\"schema\",\"public\",\"table\",\"sungBy\"]}}]}",
        "from": {
            "@type": "g:Map",
            "@value": ["id", {
                "@type": "g:Int64",
                "@value": 1
            }, "schemaTable", {
                "@type": "simple:schemaTable",
                "@value": {
                    "@type": "g:Map",
                    "@value": ["schema", "public", "table", "song"]
                }
            }]
        },
        "to": {
            "@type": "g:Map",
            "@value": ["id", {
                "@type": "g:Int64",
                "@value": 2
            }, "schemaTable", {
                "@type": "simple:schemaTable",
                "@value": {
                    "@type": "g:Map",
                    "@value": ["schema", "public", "table", "artist"]
                }
            }]
        },
        "label": "sungBy",
        "properties": {}
    }, {
        "id": "{\"@type\":\"g:Map\",\"@value\":[\"id\",{\"@type\":\"g:Int64\",\"@value\":359},\"schemaTable\",{\"@type\":\"simple:schemaTable\",\"@value\":{\"@type\":\"g:Map\",\"@value\":[\"schema\",\"public\",\"table\",\"writtenBy\"]}}]}",
        "from": {
            "@type": "g:Map",
            "@value": ["id", {
                "@type": "g:Int64",
                "@value": 1
            }, "schemaTable", {
                "@type": "simple:schemaTable",
                "@value": {
                    "@type": "g:Map",
                    "@value": ["schema", "public", "table", "song"]
                }
            }]
        },
        "to": {
            "@type": "g:Map",
            "@value": ["id", {
                "@type": "g:Int64",
                "@value": 88
            }, "schemaTable", {
                "@type": "simple:schemaTable",
                "@value": {
                    "@type": "g:Map",
                    "@value": ["schema", "public", "table", "artist"]
                }
            }]
        },
        "label": "writtenBy",
        "properties": {}
    }]
}]

The real response has like 808 nodes, not just 1, but I just showed the first node above.