23 Commits

Author SHA1 Message Date
778860e606 testing: update Go to 1.19 (#5717) 2022-10-17 15:04:34 -07:00
7b817b4d18 client: set grpc-accept-encoding to full list of registered compressors (#5541) 2022-10-11 16:37:02 -07:00
7567a5d965 documentation: fix typo in RegisterCodec godoc (#5306) 2022-04-13 10:15:49 -07:00
dabedfb38b encoding/proto: do not panic when types do not match (#4218) 2021-02-23 09:47:33 -08:00
4e8458e5c6 protobuf: update all generated code to google.golang.org/protobuf (#3932) 2020-10-21 16:05:44 -07:00
7b167fd6ec encoding/proto: simplify & optimize proto codec (#3958) 2020-10-14 14:51:13 -07:00
d9063e7af3 standardized experimental warnings (#3917) 2020-10-02 09:11:08 -07:00
132187f04c Modified tests to use tlogger. (#3343)
* Modified tests to use tlogger.

* Fail on errors, with error expectations.

* Added expects and MixedCapsed grpclb_config tests

* Moved tlogger to grpctest, moved leakcheck tester to grpctest.go

* Added ExpectErrorN()

* Removed redundant leak checks

* Fixed new test

* Made tlogger globals into tlogger methods

* ErrorsLeft -> EndTest

* Removed some redundant lines

* Fixed error in test and empty map in EndTest
2020-02-06 13:03:20 -08:00
8c50fc2565 revert buffer reuse (#3338)
* Revert "stream: fix returnBuffers race during retry (#3293)"

This reverts commit ede71d589cc36a6adff7244ce220516f0b3e446b.

* Revert "codec/proto: reuse of marshal byte buffers (#3167)"

This reverts commit 642675125e198ce612ea9caff4bf75d3a4a45667.
2020-01-27 13:30:41 -08:00
642675125e codec/proto: reuse of marshal byte buffers (#3167)
Performance benchmarks can be found below. Obviously, a 8 KiB
request/response is tailored to showcase this improvement as this is
where codec buffer reuse shines, but I've run other benchmarks too (like
1-byte requests and responses) and there's no discernable impact on
performance.

We do not allow reuse of buffers when stat handlers or binlogs are
turned on. This is because those two may need access to the data and
payload even after the data has been written to the wire. In such cases,
we never return the data back to the pool.

A buffer reuse threshold of 1 KiB was determined after several
experiments. There's diminished returns when buffer reuse is enabled for
smaller messages (actually, a negative impact).

unary-networkMode_none-bufConn_false-keepalive_false-benchTime_40s-trace_false-latency_0s-kbps_0-MTU_0-maxConcurrentCalls_6-reqSize_8192B-respSize_8192B-compressor_off-channelz_false-preloader_false
               Title       Before        After Percentage
            TotalOps       839638       906223     7.93%
             SendOps            0            0      NaN%
             RecvOps            0            0      NaN%
            Bytes/op    103788.29     80592.47   -22.35%
           Allocs/op       183.33       189.30     3.27%
             ReqT/op 1375662899.20 1484755763.20     7.93%
            RespT/op 1375662899.20 1484755763.20     7.93%
            50th-Lat    238.746µs    225.019µs    -5.75%
            90th-Lat    514.253µs    456.439µs   -11.24%
            99th-Lat    711.083µs    702.466µs    -1.21%
             Avg-Lat     285.45µs    264.456µs    -7.35%
2019-12-20 09:41:23 -08:00
dcd1c9748d Use exact size, if known, to allocate decompression buffer (#3048)
For large messages this generates far less garbage than ioutil.ReadAll().

Implement for gzip - RFC1952 requires it, and the Go implementation
checks it already (modulo 2^32).
2019-10-04 10:05:56 -07:00
ktr
0e83fbebe8 encoding: check whether encoding.Name() is empty before calling strings.ToLower (#2707) 2019-03-22 13:34:43 -07:00
59a2cfbdf9 Remove support for Go1.6-1.8 (#2428) 2018-11-01 15:43:42 -07:00
0bc7c3280e Revert "Less mem (#1987)" (#2049)
This reverts commit 7a8c9895074e03bc7fcff30bd561eaef4fa76dfa.
2018-05-03 11:37:59 -07:00
3592bccfd9 interop: Fix unimplemented method test (#2040)
* Don't send nil requests.

* Fix import name and get rid of condition.

* Let registered encoder deal with nil requests.

* Break encode into encode and compress.
2018-05-02 16:08:12 -07:00
35a2846daa Various simplifications (gosimple)
This fixes:
clientconn.go:948:3: should write m = cc.sc.Methods[method[:i+1]] instead of m, _ = cc.sc.Methods[method[:i+1]] (S1005)
encoding/proto/proto_test.go:43:5: should use !bytes.Equal(p.GetBody(), expectedBody) instead (S1004)
resolver/dns/dns_resolver.go:260:2: should merge variable declaration with assignment on next line (S1021)
resolver/dns/dns_resolver.go:344:2: should use 'return <expr>' instead of 'if <expr> { return <bool> }; return <bool>' (S1008)
2018-04-15 15:32:33 +02:00
4d9544a0fd Simplify make() (gosimple)
This fixes:
benchmark/worker/benchmark_client.go:151:36: should use make([]*grpc.ClientConn, connCount) instead (S1019)
benchmark/worker/benchmark_client.go:231:47: should use make([]lockingHistogram, rpcCountPerConn * len(conns)) instead (S1019)
benchmark/worker/benchmark_client.go:343:39: should use make([]*stats.Histogram, len(bc.lockingHistograms)) instead (S1019)
benchmark/worker/benchmark_client.go:369:22: should use make([]uint32, len(mergedHistogram.Buckets)) instead (S1019)
encoding/encoding.go:85:47: should use make(map[string]Codec) instead (S1019)
proxy_test.go:116:26: should use make([]byte, len(msg)) instead (S1019)
2018-04-15 15:32:33 +02:00
2249df6df9 gzip: Add ability to set compression level (#1891) 2018-03-20 11:57:00 -07:00
f9628db66d Fix lint error and typo (#1843) 2018-02-01 11:38:14 -08:00
5ba054bf37 encoding: Introduce new method for registering and choosing codecs (#1813) 2018-01-23 11:39:40 -08:00
08b7bd3beb gzip: add Name const to avoid typos in usage (#1804) 2018-01-17 13:28:07 -08:00
816fa5b06f Add proper support for 'identity' encoding type (#1664) 2017-11-17 09:24:54 -08:00
5db344a40a Introduce new Compressor/Decompressor API (#1428) 2017-10-31 10:21:13 -07:00