- 14 Apr, 2014 8 commits
-
-
Dmitriy Vyukov authored
Currently Pool can cache up to 15 elements per P, and these elements are not accesible to other Ps. If a Pool caches large objects, say 2MB, and GOMAXPROCS is set to a large value, say 32, then the Pool can waste up to 960MB. The new caching policy caches at most 1 per-P element, the rest is shared between Ps. Get/Put performance is unchanged. Nested Get/Put performance is 57% worse. However, overall scalability of nested Get/Put is significantly improved, so the new policy starts winning under contention. benchmark old ns/op new ns/op delta BenchmarkPool 27.4 26.7 -2.55% BenchmarkPool-4 6.63 6.59 -0.60% BenchmarkPool-16 1.98 1.87 -5.56% BenchmarkPool-64 1.93 1.86 -3.63% BenchmarkPoolOverlflow 3970 6235 +57.05% BenchmarkPoolOverlflow-4 10935 1668 -84.75% BenchmarkPoolOverlflow-16 13419 520 -96.12% BenchmarkPoolOverlflow-64 10295 380 -96.31% LGTM=rsc R=rsc CC=golang-codereviews, khr https://golang.org/cl/86020043
-
Ian Lance Taylor authored
LGTM=bradfitz R=golang-codereviews, bradfitz CC=golang-codereviews https://golang.org/cl/87140044
-
Russ Cox authored
These are not ready and will not be in Go 1.3. Fixes #6932. LGTM=bradfitz R=golang-codereviews, bradfitz, minux.ma CC=golang-codereviews, iant, r https://golang.org/cl/87630043
-
Russ Cox authored
We have never released cmd/prof and don't plan to. Now that nm, addr2line, and objdump have been rewritten in Go, cmd/prof is the only thing keeping us from deleting libmach. Delete cmd/prof, and then since nothing is using libmach, delete libmach. 13,000 lines of C deleted. LGTM=minux.ma R=golang-codereviews, minux.ma CC=golang-codereviews, iant, r https://golang.org/cl/87020044
-
Brad Fitzpatrick authored
Fixes #6981 LGTM=rsc R=golang-codereviews, nightlyone CC=adg, dsymonds, golang-codereviews, rsc https://golang.org/cl/85560045
-
Russ Cox authored
Update cmd/dist not to build the C version. Update cmd/go to install the Go version to the tool directory. Update #7452 This is the basic logic needed for objdump, and it works well enough to support the pprof list and weblist commands. A real disassembler needs to be added in order to support the pprof disasm command and the per-line assembly displays in weblist. That's still to come. Probably objdump will move to go.tools when the disassembler is added, but it can stay here for now. LGTM=minux.ma R=golang-codereviews, minux.ma CC=golang-codereviews, iant, r https://golang.org/cl/87580043
-
Russ Cox authored
Broke other things - see issue 7522. Fixes #7522. Reopens issue 7363. ««« original CL description cmd/gc: make embedded, unexported fields read-only. Fixes #7363. LGTM=gri R=gri, rsc, bradfitz CC=golang-codereviews https://golang.org/cl/66510044 »»» LGTM=r, mpvl R=golang-codereviews, r CC=golang-codereviews, iant, mpvl https://golang.org/cl/85580046
-
Russ Cox authored
It looks like maybe on slower builders 4 seconds is not enough. Trying to get rid of the flaky failures. TBR=iant CC=golang-codereviews https://golang.org/cl/86870044
-
- 12 Apr, 2014 1 commit
-
-
Rob Pike authored
LGTM=alex.brainman R=alex.brainman CC=golang-codereviews https://golang.org/cl/87250043
-
- 11 Apr, 2014 16 commits
-
-
Adam Langley authored
R=adg LGTM=bradfitz R=golang-codereviews, bradfitz CC=golang-codereviews https://golang.org/cl/86930043
-
Brad Fitzpatrick authored
What was happening on Issue 7010 was handler intentionally took 30 milliseconds and the proxy's client timeout was 35 milliseconds. Then it slammed the proxy with a bunch of requests. Sometimes the server would be too slow to respond in its 5 millisecond window and the client code would cancel the request, force-closing the persistConn. If this came at the right time, the server's reply was already in flight, and one of the goroutines would report: Unsolicited response received on idle HTTP channel starting with "H"; err=<nil> ... rightfully scaring the user. But the error was already handled and returned to the user, and this connection knows it's been shut down. So look at the closed flag after acquiring the same mutex guarding another field we were checking, and don't complain if it's a known shutdown. Also move closed down below the mutex which guards it. Fixes #7010 LGTM=dsymonds R=golang-codereviews, dsymonds CC=adg, golang-codereviews, rsc https://golang.org/cl/86740044
-
Jan Ziak authored
Fixes #7129 LGTM=rsc R=rsc CC=golang-codereviews https://golang.org/cl/86470044
-
Jan Ziak authored
Fixes #7742 LGTM=dave, rsc R=rsc, bradfitz, dave CC=golang-codereviews https://golang.org/cl/85580047
-
Dmitriy Vyukov authored
The test fails now with -race, so it's disabled. The intention is that the fix for issue 7264 will also modify this test the same way and enable it. Reporduce with 'go test -race -issue7264 -cpu=4'. Update #7264 LGTM=bradfitz R=golang-codereviews, bradfitz CC=golang-codereviews https://golang.org/cl/86770043
-
Alex Brainman authored
LGTM=bradfitz R=golang-codereviews, bradfitz CC=golang-codereviews https://golang.org/cl/84650047
-
Matthew Cottingham authored
Add test for multipart form requests with an invalid content-type to ensure ErrNotMultipart is returned. Change ParseMultipartForm to return ErrNotMultipart when it is returned by multipartReader. Modify test for empty multipart request handling to use POST so that the body is checked. Fixes #6334. This is the first changeset working on multipart request handling. Further changesets could add more tests and clean up the TODO. LGTM=bradfitz R=golang-codereviews, gobot, bradfitz, rsc CC=golang-codereviews https://golang.org/cl/44040043
-
Brad Fitzpatrick authored
I was implementing rules from RFC 2616. The rules are apparently useless, ambiguous, and too strict for common software on the Internet. (e.g. curl) Add more tests, including a test of a chunked request. Fixes #7625 LGTM=dsymonds R=golang-codereviews, dsymonds CC=adg, golang-codereviews, rsc https://golang.org/cl/84480045
-
Rui Ueyama authored
LGTM=bradfitz R=golang-codereviews, bradfitz CC=golang-codereviews https://golang.org/cl/86420046
-
Robert Griesemer authored
Also: Simplify ReadSlice implementation and ensure that it doesn't call fill() with a full buffer (this caused a failure in net/textproto TestLargeReadMIMEHeader because fill() wasn't able to read more data). Fixes #7745. LGTM=bradfitz R=r, bradfitz CC=golang-codereviews https://golang.org/cl/86590043
-
Robert Griesemer authored
LGTM=bradfitz R=bradfitz CC=golang-codereviews https://golang.org/cl/86060044
-
Rui Ueyama authored
LGTM=bradfitz R=golang-codereviews, bradfitz CC=golang-codereviews https://golang.org/cl/86600045
-
Rui Ueyama authored
To create a valid JSON string, "%s" is not enough. Fixes #7761. LGTM=bradfitz R=golang-codereviews, bradfitz CC=golang-codereviews https://golang.org/cl/86730043
-
Russ Cox authored
It runs too long in -short mode. Disable the one in init, because it doesn't respect -short. Make the part that claims to test execution in a finalizer actually execute the test in the finalizer. LGTM=bradfitz R=golang-codereviews, bradfitz CC=aram.h, golang-codereviews, iant, khr https://golang.org/cl/86550045
-
Brad Fitzpatrick authored
The Go HTTP server doesn't use Response.Write, but others do, so make it correct. Add a bunch more tests. This bug is almost a year old. :/ Fixes #5381 LGTM=adg R=golang-codereviews, adg CC=dsymonds, golang-codereviews, rsc https://golang.org/cl/85740046
-
Brad Fitzpatrick authored
Go's had pretty decent HTTP Trailer support for a long time, but the docs have been largely non-existent. Fix that. In the process, re-learn the Trailer code, clean some stuff up, add some error checks, remove some TODOs, fix a minor bug or two, and add tests. LGTM=adg R=golang-codereviews, adg CC=dsymonds, golang-codereviews, rsc https://golang.org/cl/86660043
-
- 10 Apr, 2014 15 commits
-
-
Rob Pike authored
Keep those builders busy. LGTM=bradfitz R=golang-codereviews, bradfitz CC=golang-codereviews https://golang.org/cl/85710046
-
Brad Fitzpatrick authored
Tests for the race detector to catch anybody trying to mutate Reader in ReadAt. LGTM=gri R=gri CC=golang-codereviews https://golang.org/cl/86700043
-
Brad Fitzpatrick authored
LGTM=r R=r CC=golang-codereviews https://golang.org/cl/86580043
-
Alexey Borzenkov authored
Fixes #7750. LGTM=bradfitz R=golang-codereviews, ibilicc, bradfitz CC=golang-codereviews https://golang.org/cl/84850043
-
Russ Cox authored
TBR=0intro CC=golang-codereviews https://golang.org/cl/86620043
-
Keith Randall authored
LGTM=iant R=remyoudompheng, iant CC=golang-codereviews https://golang.org/cl/86270043
-
Rui Ueyama authored
There is a race condition that causes spurious wakeup from Wait in the following case: G1: decrement wg.counter, observe the counter is now 0 (should unblock goroutines queued *at this moment*) G2: increment wg.counter G2: call Wait() to add itself to the wait queue G1: acquire wg.m, unblock all waiting goroutines In the last step G2 is spuriously woken up by G1. Fixes #7734. LGTM=rsc, dvyukov R=dvyukov, 0xjnml, rsc CC=golang-codereviews https://golang.org/cl/85580043
-
Brad Fitzpatrick authored
In a typical HTTP request, the client writes the request, and then the server replies. Go's HTTP client code (Transport) has two goroutines per connection: one writing, and one reading. A third goroutine (the one initiating the HTTP request) coordinates with those two. Because most HTTP requests are done when the server replies, the Go code has always handled connection reuse purely in the readLoop goroutine. But if a client is writing a large request and the server replies before it's consumed the entire request (e.g. it replied with a 403 Forbidden and had no use for the body), it was possible for Go to re-select that connection for a subsequent request before we were done writing the first. That wasn't actually a data race; the second HTTP request would just get enqueued to write its request on the writeLoop. But because the previous writeLoop didn't finish writing (and might not ever), that connection is in a weird state. We really just don't want to get into a state where we're re-using a connection when the server spoke out of turn. This CL changes the readLoop goroutine to verify that the writeLoop finished before returning the connection. In the process, it also fixes a potential goroutine leak where a connection could close but the recycling logic could be blocked forever waiting for the client to read to EOF or error. Now it also selects on the persistConn's close channel, and the closer of that is no longer the readLoop (which was dead locking in some cases before). It's now closed at the same place the underlying net.Conn is closed. This likely fixes or helps Issue 7620. Also addressed some small cosmetic things in the process. Update #7620 Fixes #7569 LGTM=adg R=golang-codereviews, adg CC=dsymonds, golang-codereviews, rsc https://golang.org/cl/86290043
-
David du Colombier authored
We originally decided to skip this test in short mode to prevent the parallel runtime test to timeout on the Plan 9 builder. This should no longer be required since the issue was fixed in CL 86210043. LGTM=dave, bradfitz R=dvyukov, dave, bradfitz CC=golang-codereviews, rsc https://golang.org/cl/84790044
-
David du Colombier authored
If you pass ns = 100,000 to this function, timediv will return ms = 0. tsemacquire in /sys/src/9/port/sysproc.c will return immediately when ms == 0 and the semaphore cannot be acquired immediately - it doesn't sleep - so notetsleep will spin, chewing cpu and repeatedly reading the time, until the 100us have passed. Thanks to the time reads it won't take too many iterations, but whatever we are waiting for does not get a chance to run. Eventually the notetsleep spin loop returns and we end up in the stoptheworld spin loop - actually a sleep loop but we're not doing a good job of sleeping. After 100ms or so of this, the kernel says enough and schedules a different thread. That thread manages to do whatever we're waiting for, and the spinning in the other thread stops. If tsemacquire had actually slept, this would have happened much quicker. Many thanks to Russ Cox for help debugging. LGTM=rsc R=rsc CC=golang-codereviews https://golang.org/cl/86210043
-
Rob Pike authored
All that's left is net/http and the stuff I need help describing: FreeBSD and Windows. LGTM=adg R=golang-codereviews, adg CC=golang-codereviews https://golang.org/cl/86320043
-
Alex Brainman authored
even when there are no *_test.go files present. rsc suggested this change Fixes #7108 LGTM=r, adg R=golang-codereviews, r, adg CC=golang-codereviews https://golang.org/cl/84300043
-
Preetam Jinka authored
The buffer length should be the size in bytes instead of the number of structs. Fixes #6588. LGTM=mikioh.mikioh R=golang-codereviews, mikioh.mikioh, adg CC=golang-codereviews https://golang.org/cl/84830043
-
Andrew Gerrand authored
Generated by addca. R=gobot CC=golang-codereviews https://golang.org/cl/85550044
-
Robert Griesemer authored
bufio: undo incorrect bug fix ««« original CL description bufio: fix potential endless loop in ReadByte Fixes #7745. LGTM=bradfitz, r R=r, bradfitz CC=golang-codereviews https://golang.org/cl/86220044 »»» LGTM=adg R=r, adg CC=golang-codereviews https://golang.org/cl/85550045
-