[ https://issues.apache.org/jira/browse/TINKERPOP-3076?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17889898#comment-17889898 ]
ASF GitHub Bot commented on TINKERPOP-3076: ------------------------------------------- vkagamlyk commented on code in PR #2834: URL: https://github.com/apache/tinkerpop/pull/2834#discussion_r1802224172 ########## gremlin-go/driver/gorillaTransporter.go: ########## @@ -100,6 +101,9 @@ func (transporter *gorillaTransporter) Write(data []byte) error { return err } } + if len(data) > transporter.connSettings.writeBufferSize { + return errors.New("request too large, consider increasing 'WriteBufferSize' configuration or split into smaller requests") Review Comment: all errors should be defined in `error_codes.go` and used like `return newError(err0101ConnectionCloseError)` > Incorrect handling of large requests in Go GLV > ---------------------------------------------- > > Key: TINKERPOP-3076 > URL: https://issues.apache.org/jira/browse/TINKERPOP-3076 > Project: TinkerPop > Issue Type: Bug > Components: go > Affects Versions: 3.6.7, 3.7.2 > Reporter: Valentyn Kahamlyk > Priority: Blocker > > 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)