Valentyn Kahamlyk created TINKERPOP-3076:
--------------------------------------------
Summary: Incorrect handling of large requests in Go GLV
Key: TINKERPOP-3076
URL: https://issues.apache.org/jira/browse/TINKERPOP-3076
Project: TinkerPop
Issue Type: Improvement
Components: go
Affects Versions: 3.7.2, 3.6.7
Reporter: Valentyn Kahamlyk
When trying to send a request longer than about a megabyte, go GLV does not
work correctly, possibly truncates data.
Simple reproducer
{code:go}
func main() {
driverRemoteConnection, err :=
gremlingo.NewDriverRemoteConnection("ws://localhost:8182/gremlin")
if err != nil {
fmt.Println(err)
return
}
defer driverRemoteConnection.Close()
g := gremlingo.Traversal_().WithRemote(driverRemoteConnection)
const count = 1100
var ids [count]string
const idLength = 1000
result := make([]byte, idLength)
for i := 0; i < idLength; i++ {
result[i] = 65
}
id := string(result)
for i := 0; i < count; i++ {
ids[i] = id
}
r, err := g.V(ids).Count().ToList()
if err != nil {
fmt.Println("err: ", err)
return
}
fmt.Println("found: ", r[0].GetString())
}{code}
with `count = 1000` it works as expected.
Python GLV works as expected with same request.
Error logged in Gremlin Server
{code:java}
io.netty.handler.codec.DecoderException: java.lang.IndexOutOfBoundsException:
readerIndex(1048338) + length(1000) exceeds writerIndex(1048543):
PooledUnsafeDirectByteBuf(ridx: 1048338, widx: 1048543, cap: 1048576){code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)