-
Notifications
You must be signed in to change notification settings - Fork 4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
THRIFT-4448: Golang: do something with context.Context #1459
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please run go imports
to fix imports order. Looks great!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
Looks like two of the builds failed as expected on go1.6 context. The third build that failed looks like it failed on JS issues, so likely something flakey. |
When context support was added, significant effort went into keeping 1.6 compatibility so I think it would be great if we could maintain that support. On the other hand, this patch can go into 0.12 at the earliest and by that time 1.6 will be ancient. I haven't reviewed the patch yet, but if you'd like to drop compatibility, please do so across the codebase (so no more |
I really appreciate your feedback & involvement @dcelasun! I personally think dropping Related question: why was 'context support' added when it doesn't seem to be hooked up to anything in the library? Seems like the method signatures were the only thing that changed. |
Sounds good to me, but we need to run it by someone with commit bits. cc @Jens-G @jeking3
It was added to support passing arbitrary values into RPC handlers. One of the big use cases was accessing client IP from an RPC handler. Before type MyProcessor struct {
*GeneratedProcessor
}
func (p *MyProcessor) Process(ctx context.Context, in, out TProtocol) (bool, TException) {
name, _, seqId, err := in.ReadMessageBegin()
if err != nil {
return false, err
}
if processor, ok := p.GetProcessorFunction(name); ok {
//TODO: get IP from transport and add to ctx
return processor.Process(ctx, seqId, in, out)
}
// rest of it...
} |
At this point we should consider dropping go 1.6. Other go projects have moved on and we can too. I had a discussion with someone about whether it makes sense to support older go versions, and they said back to 1.7 makes sense, but 1.6 to 1.7 was a breaking change. Separately, we might dump the trusty CI build environment. Not sure about that yet. |
Sounds good want me to take a stab at dropping 1.6 support? |
Ugh, so it turns out Ubuntu Xenial comes with go 1.6 which is pretty much the version we use on all of our CI builds for testing (like cross test). For further details on the issue see: Now I have to think some more about it. :| |
My thoughts after sleeping on it are that we should support the current Ubuntu LTS. That said, I have no problem telling folks not to use the ancient golang included in the LTS and to use something newer from either an Ubuntu PPA or directly form golang sources. I also found evidence in a number of other projects that support for golang 1.6 was dropped. So if you want to fix this in the way suggested, you will need to update the ubuntu-xenial Dockerfile to use golang 1.7 instead, and you should update the top level LANGUAGES.md file, add a breaking change note into the lib/go README file, and update the build/docker/README.md file. Thanks. |
I think that's the right approach. It’s pretty easy/fast to install golang from a tar.gz distribution. I do it pretty frequently to pin a specific version of go in docker images. I'll take a stab at updating this hopefully tomorrow or early next week. |
2c03b43
to
e081a81
Compare
It would be nice to add a client test using e.g
Otherwise LGTM. |
@dcelasun I'm happy to do that. Though in my experience, tests that depend on timing will find a way to be flakey, especially in CI. If you think the value of testing this is worth the risk of introducing a flakey test, I'm happy to write it. |
I think it's worth it. The context passes through most parts of the stack and having a test to ensure it's propagated properly feels imporant. Also, we can at least reduce the flakiness with longer timers, say 2s sleep and 1s timeout. The test suite already takes quite a bit of time to run, an additional second should be fine. |
@dcelasun: done, could you take another look? |
The test fails with:
|
@dcelasun I don't think I can do a |
That’s what I get for reviewing code before fully waking up :) |
A different failure this time:
|
Hmm yeah must be a race condition with the test server starting in the go routine. Any thoughts on how to wait for it to start up? I guess I could use a wait group to wait at least until goroutine code begins to execute. Or I could have some retry logic that tries to contact the server for a second before failing |
I think the only one-liner fix is a 500ms sleep before |
It's not clear to me what went wrong in the Travis build. Trusty, for example, seems to have stack overflow'd while installing ocaml. Is there a way to retrigger a build without pushing another commit?
|
The only other way is for someone with Travis crendentials to manually trigger it. I think it's faster if you push something trivial (whitespace etc.) Thrift's CI builds are unfortunately very hit and miss :/ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. Travis failures are unrelated.
cc @jeking3
It bugged me to have a time.Sleep in the test so I wrote the retry logic :) |
Looks much cleaner! |
7bf76ce
to
6f6bd06
Compare
Would you mind squashing this into a single commit? |
6f6bd06
to
18bfda3
Compare
@jeking3 done |
…compatibility. Client: go This closes apache#1459
- testing double rendering in JS, Java, Python and C++ - a comment added (about setprecision) - BOOST_TEST -> BOOST_CHECK double rendering in erlang, fixed (some additional tests added) less than operator - correction in erlang test style changes, some fixes in erlang test some fixes in erlang test some fixes in erlang test - no need for including lists library more style changes - something overlooked expected 2 lines before main - fixed (not seen locally) noticed that test cases should be added manually in Python DoubleConstantTest thrift compilation directive is now given in generate.cmake render_double_to_string -> emit_double_as_string added assertion error messages to see the problems inside Java tests in more detail RDP access to AppVeyor build workers THRIFT-82: Add Common Lisp support Client: cl There's framed and buffered socket transport, binary protocol, multiplex, simple server, cross-tests, self-tests, tutorial, CL library, CL code generator. Only SBCL is supported for now. This closes apache#1412 THRIFT-82: follow-up to common lisp to stabilize the linux build environment and update some docs THRIFT-82: fix cl test server to return the correct SecondService string and enable multi tests THRIFT-4503: fix dlang server logging on client disconnect so it does not report an error for normal operation THRIFT-4498: add phpcs back Client: php This closes apache#1498 THFIFT-4486: golang: support https from generated clients golang: don't generate -remote.go clients when there are no functions golang: support for http headers in -remote clients golang: serialize cli requests with TJsonProtocol since serialization is not supported with TSimpleJsonProtocol Client: golang This closes apache#1488 duplicate key problem in appveyor settings ignore the test cases with (-+)1.7e+308 in Java tests ignore the test cases with (-+)1.7e+308 in Java tests - 2 pyflakes8 style changes disabling the test named 'TestRenderedDoubleConstants' on machines with the MSVC2010 configuration msvc.profile parameter existence check passing "msvc profile" on build stage "MSVC_PROFILE" as a cache variable wrong usage of cache variables let's see whether the MSVC_PROFILE parameter is passed correctly let's see whether the MSVC_PROFILE parameter is passed correctly let's see whether TestRenderedDoubleConstants is excluded or not msvc.profile access - fixed msvc.profile access - fixed THRIFT-4436: port nodejs changes from THRIFT-3748 to js lib, test for serialization of nested list, run all tests when building js lib Client: js This closes apache#1457 THRIFT-4505: Fix python build on Vagrant Windows boxes Client: py This closes apache#1499 THRIFT-4506: fix use of assert for correctness in Java SASL negotiation Client: java Updated the languages matrix markdown documentation. Minor tweaks to the language matrix markdown documentation. THRIFT-4508: Fix node.js to be the desired version in docker ubuntu-artful image THRIFT-4354: fix php socket blocking behavior Patch: Robert Lu <robberphex@gmail.com> Client: php This closes apache#1384 THRIFT-4508: end trusty CI builds; handle nodejs 4.x LTS EOL; update docs THRIFT-4508: change windows CI builds to use current MSVC, one cygwin and one mingw build THRIFT-4480 - Handle seqid = 0 Client: js This closes apache#1487 THRIFT-4509: remove nodejs browser test Client: nodejs This closes apache#1501 fix wrong document @param in TBase.h Client: cocoa This closes apache#1504 THRIFT-4024: Skip() throws TProtocolException.INVALID_DATA on unknown data types Client: js This closes apache#1503 THRIFT-4495: Allow `undefined` for non-required Erlang records fields. Client: erl As of Erlang 19, the dialyzer static type-analysis tool no longer implicitly adds `undefined` to the allowed types for a field. This means that dialyzer will now complain about any non-required fields that are not explicitly initialed when creating a new record. This closes apache#1494 THRIFT-4497: Use `map()` field type for Erlang type for map struct fields. Client: erl The Thrift Erlang code generator previously generated fields with the `#{}` Erlang type for maps fields. In the Erlang type specification languages, however, `#{}` specifically means an empty map. This commit fixes the code to emit `map()` instead, which means the maps keys and values may be of any type. It would be possible to emit a field type such as `${keytype() => maptype()}`, but this commit does not do that. This closes apache#1495 THRIFT-4515: fix up nonblocking options and enable ssl for nonblocking in cpp server cross Client: cpp THRIFT-4465: Fix C++ TNonblockingServer and THRIFT_EAGAIN issues Client: cpp This closes apache#1497 THRIFT-4337: Able to set keyStore and trustStore as InputStream in the TSSLTransportFactory.TSSLTransportParameters Client: java This closes apache#1486 THRIFT-4515: fix windows build Client: cpp THRIFT-4448: Golang: do something with context.Context. Remove Go1.6 compatibility. Client: go This closes apache#1459 THRIFT-4517: disable ocaml in xenial because it is broken THRIFT-4337: fix javadoc build error related to changes THRIFT-4508: remove cygwin64 build in favor of MSVC2013 TestRenderedDoubleConstants (in Java/Python) has been disabled on MSVC2013 builders THRIFT-4509: * switch from grunt-external-daemon and grunt-shell to grunt-shell-spawn * update grunt to 1.0.2 * always use local copy of jquery and qunit * commit the package-lock files for npm keep versions stable Client: js This closes apache#1506 THRIFT-4509: add jslint and fix build script output THRIFT-4429: Make TThreadPoolServer.executorService_ available in inherited classes and refactor methods to be able customization Client: java This closes apache#1485 THRIFT-4513: Fix thrift compiler to generate constants in stable order. This closes apache#1505 reverting changes on disabling a test depending on the MSVC compiler double emitting operation depending on the compiler version THRIFT-4474: Use PSR-4 autoloader by default Client: php This closes apache#1479 THRIFT-4516: Fix "go vet" warnings for Go 1.10 Client: go THRIFT-4419: Fix bug where framed messages > 4K could not be read Client: rs This closes apache#1508 emit_double_as_string refactored unnecessary carat has been removed
- testing double rendering in JS, Java, Python and C++ - a comment added (about setprecision) - BOOST_TEST -> BOOST_CHECK double rendering in erlang, fixed (some additional tests added) less than operator - correction in erlang test style changes, some fixes in erlang test some fixes in erlang test some fixes in erlang test - no need for including lists library more style changes - something overlooked expected 2 lines before main - fixed (not seen locally) noticed that test cases should be added manually in Python DoubleConstantTest thrift compilation directive is now given in generate.cmake render_double_to_string -> emit_double_as_string added assertion error messages to see the problems inside Java tests in more detail RDP access to AppVeyor build workers THRIFT-82: Add Common Lisp support Client: cl There's framed and buffered socket transport, binary protocol, multiplex, simple server, cross-tests, self-tests, tutorial, CL library, CL code generator. Only SBCL is supported for now. This closes apache#1412 THRIFT-82: follow-up to common lisp to stabilize the linux build environment and update some docs THRIFT-82: fix cl test server to return the correct SecondService string and enable multi tests THRIFT-4503: fix dlang server logging on client disconnect so it does not report an error for normal operation THRIFT-4498: add phpcs back Client: php This closes apache#1498 THFIFT-4486: golang: support https from generated clients golang: don't generate -remote.go clients when there are no functions golang: support for http headers in -remote clients golang: serialize cli requests with TJsonProtocol since serialization is not supported with TSimpleJsonProtocol Client: golang This closes apache#1488 duplicate key problem in appveyor settings ignore the test cases with (-+)1.7e+308 in Java tests ignore the test cases with (-+)1.7e+308 in Java tests - 2 pyflakes8 style changes disabling the test named 'TestRenderedDoubleConstants' on machines with the MSVC2010 configuration msvc.profile parameter existence check passing "msvc profile" on build stage "MSVC_PROFILE" as a cache variable wrong usage of cache variables let's see whether the MSVC_PROFILE parameter is passed correctly let's see whether the MSVC_PROFILE parameter is passed correctly let's see whether TestRenderedDoubleConstants is excluded or not msvc.profile access - fixed msvc.profile access - fixed THRIFT-4436: port nodejs changes from THRIFT-3748 to js lib, test for serialization of nested list, run all tests when building js lib Client: js This closes apache#1457 THRIFT-4505: Fix python build on Vagrant Windows boxes Client: py This closes apache#1499 THRIFT-4506: fix use of assert for correctness in Java SASL negotiation Client: java Updated the languages matrix markdown documentation. Minor tweaks to the language matrix markdown documentation. THRIFT-4508: Fix node.js to be the desired version in docker ubuntu-artful image THRIFT-4354: fix php socket blocking behavior Patch: Robert Lu <robberphex@gmail.com> Client: php This closes apache#1384 THRIFT-4508: end trusty CI builds; handle nodejs 4.x LTS EOL; update docs THRIFT-4508: change windows CI builds to use current MSVC, one cygwin and one mingw build THRIFT-4480 - Handle seqid = 0 Client: js This closes apache#1487 THRIFT-4509: remove nodejs browser test Client: nodejs This closes apache#1501 fix wrong document @param in TBase.h Client: cocoa This closes apache#1504 THRIFT-4024: Skip() throws TProtocolException.INVALID_DATA on unknown data types Client: js This closes apache#1503 THRIFT-4495: Allow `undefined` for non-required Erlang records fields. Client: erl As of Erlang 19, the dialyzer static type-analysis tool no longer implicitly adds `undefined` to the allowed types for a field. This means that dialyzer will now complain about any non-required fields that are not explicitly initialed when creating a new record. This closes apache#1494 THRIFT-4497: Use `map()` field type for Erlang type for map struct fields. Client: erl The Thrift Erlang code generator previously generated fields with the `#{}` Erlang type for maps fields. In the Erlang type specification languages, however, `#{}` specifically means an empty map. This commit fixes the code to emit `map()` instead, which means the maps keys and values may be of any type. It would be possible to emit a field type such as `${keytype() => maptype()}`, but this commit does not do that. This closes apache#1495 THRIFT-4515: fix up nonblocking options and enable ssl for nonblocking in cpp server cross Client: cpp THRIFT-4465: Fix C++ TNonblockingServer and THRIFT_EAGAIN issues Client: cpp This closes apache#1497 THRIFT-4337: Able to set keyStore and trustStore as InputStream in the TSSLTransportFactory.TSSLTransportParameters Client: java This closes apache#1486 THRIFT-4515: fix windows build Client: cpp THRIFT-4448: Golang: do something with context.Context. Remove Go1.6 compatibility. Client: go This closes apache#1459 THRIFT-4517: disable ocaml in xenial because it is broken THRIFT-4337: fix javadoc build error related to changes THRIFT-4508: remove cygwin64 build in favor of MSVC2013 TestRenderedDoubleConstants (in Java/Python) has been disabled on MSVC2013 builders THRIFT-4509: * switch from grunt-external-daemon and grunt-shell to grunt-shell-spawn * update grunt to 1.0.2 * always use local copy of jquery and qunit * commit the package-lock files for npm keep versions stable Client: js This closes apache#1506 THRIFT-4509: add jslint and fix build script output THRIFT-4429: Make TThreadPoolServer.executorService_ available in inherited classes and refactor methods to be able customization Client: java This closes apache#1485 THRIFT-4513: Fix thrift compiler to generate constants in stable order. This closes apache#1505 reverting changes on disabling a test depending on the MSVC compiler double emitting operation depending on the compiler version THRIFT-4474: Use PSR-4 autoloader by default Client: php This closes apache#1479 THRIFT-4516: Fix "go vet" warnings for Go 1.10 Client: go THRIFT-4419: Fix bug where framed messages > 4K could not be read Client: rs This closes apache#1508 emit_double_as_string refactored unnecessary carat has been removed THRIFT-82: Add Common Lisp support Client: cl There's framed and buffered socket transport, binary protocol, multiplex, simple server, cross-tests, self-tests, tutorial, CL library, CL code generator. Only SBCL is supported for now. This closes apache#1412 THRIFT-82: follow-up to common lisp to stabilize the linux build environment and update some docs THRIFT-82: fix cl test server to return the correct SecondService string and enable multi tests THRIFT-4503: fix dlang server logging on client disconnect so it does not report an error for normal operation THRIFT-4498: add phpcs back Client: php This closes apache#1498 THFIFT-4486: golang: support https from generated clients golang: don't generate -remote.go clients when there are no functions golang: support for http headers in -remote clients golang: serialize cli requests with TJsonProtocol since serialization is not supported with TSimpleJsonProtocol Client: golang This closes apache#1488 THRIFT-4436: port nodejs changes from THRIFT-3748 to js lib, test for serialization of nested list, run all tests when building js lib Client: js This closes apache#1457 THRIFT-4505: Fix python build on Vagrant Windows boxes Client: py This closes apache#1499 THRIFT-4506: fix use of assert for correctness in Java SASL negotiation Client: java Updated the languages matrix markdown documentation. Minor tweaks to the language matrix markdown documentation. THRIFT-4508: Fix node.js to be the desired version in docker ubuntu-artful image THRIFT-4354: fix php socket blocking behavior Patch: Robert Lu <robberphex@gmail.com> Client: php This closes apache#1384 THRIFT-4508: end trusty CI builds; handle nodejs 4.x LTS EOL; update docs THRIFT-4508: change windows CI builds to use current MSVC, one cygwin and one mingw build THRIFT-4480 - Handle seqid = 0 Client: js This closes apache#1487 THRIFT-4509: remove nodejs browser test Client: nodejs This closes apache#1501 fix wrong document @param in TBase.h Client: cocoa This closes apache#1504 THRIFT-4024: Skip() throws TProtocolException.INVALID_DATA on unknown data types Client: js This closes apache#1503 THRIFT-4495: Allow `undefined` for non-required Erlang records fields. Client: erl As of Erlang 19, the dialyzer static type-analysis tool no longer implicitly adds `undefined` to the allowed types for a field. This means that dialyzer will now complain about any non-required fields that are not explicitly initialed when creating a new record. This closes apache#1494 THRIFT-4497: Use `map()` field type for Erlang type for map struct fields. Client: erl The Thrift Erlang code generator previously generated fields with the `#{}` Erlang type for maps fields. In the Erlang type specification languages, however, `#{}` specifically means an empty map. This commit fixes the code to emit `map()` instead, which means the maps keys and values may be of any type. It would be possible to emit a field type such as `${keytype() => maptype()}`, but this commit does not do that. This closes apache#1495 THRIFT-4515: fix up nonblocking options and enable ssl for nonblocking in cpp server cross Client: cpp THRIFT-4465: Fix C++ TNonblockingServer and THRIFT_EAGAIN issues Client: cpp This closes apache#1497 THRIFT-4337: Able to set keyStore and trustStore as InputStream in the TSSLTransportFactory.TSSLTransportParameters Client: java This closes apache#1486 THRIFT-4515: fix windows build Client: cpp THRIFT-4448: Golang: do something with context.Context. Remove Go1.6 compatibility. Client: go This closes apache#1459 THRIFT-4517: disable ocaml in xenial because it is broken THRIFT-4337: fix javadoc build error related to changes THRIFT-4508: remove cygwin64 build in favor of MSVC2013 THRIFT-4509: * switch from grunt-external-daemon and grunt-shell to grunt-shell-spawn * update grunt to 1.0.2 * always use local copy of jquery and qunit * commit the package-lock files for npm keep versions stable Client: js This closes apache#1506 THRIFT-4509: add jslint and fix build script output THRIFT-4429: Make TThreadPoolServer.executorService_ available in inherited classes and refactor methods to be able customization Client: java This closes apache#1485 THRIFT-4513: Fix thrift compiler to generate constants in stable order. This closes apache#1505 THRIFT-4474: Use PSR-4 autoloader by default Client: php This closes apache#1479 THRIFT-4516: Fix "go vet" warnings for Go 1.10 Client: go THRIFT-4419: Fix bug where framed messages > 4K could not be read Client: rs This closes apache#1508 THRIFT-4523 TStreamTransportImpl.GetOutputStream broken Client: Delphi Patch: Jens Geyer THRIFT-4515: cross server test improvement: graceful test server shutdown This closes apache#1509 THRIFT-82: move to SBCL 1.4.5 (hopefully will address 1.4.4 sporadic build errors)
…compatibility. Client: go This closes apache#1459
THRIFT-4490 Allow a default service as fallback for multiplex processors connected by old clients Client: Delphi Patch: Jens Geyer THRIFT-4492 protected ExceptionType type member of TApplicationException cannot be accessed Client: C# Patch: Jens Geyer This closes apache#1493 THRIFT-4352: update artful to use haxe 3.4.4 which fixes a core in haxe THRIFT-82: Add Common Lisp support Client: cl There's framed and buffered socket transport, binary protocol, multiplex, simple server, cross-tests, self-tests, tutorial, CL library, CL code generator. Only SBCL is supported for now. This closes apache#1412 THRIFT-82: follow-up to common lisp to stabilize the linux build environment and update some docs THRIFT-82: fix cl test server to return the correct SecondService string and enable multi tests THRIFT-4503: fix dlang server logging on client disconnect so it does not report an error for normal operation THRIFT-4498: add phpcs back Client: php This closes apache#1498 THFIFT-4486: golang: support https from generated clients golang: don't generate -remote.go clients when there are no functions golang: support for http headers in -remote clients golang: serialize cli requests with TJsonProtocol since serialization is not supported with TSimpleJsonProtocol Client: golang This closes apache#1488 Add nodejs test cases for unix domain socket Indicate that nodejs now supports unix domain socket THRIFT-4436: port nodejs changes from THRIFT-3748 to js lib, test for serialization of nested list, run all tests when building js lib Client: js This closes apache#1457 THRIFT-4505: Fix python build on Vagrant Windows boxes Client: py This closes apache#1499 THRIFT-4506: fix use of assert for correctness in Java SASL negotiation Client: java Updated the languages matrix markdown documentation. Minor tweaks to the language matrix markdown documentation. THRIFT-4508: Fix node.js to be the desired version in docker ubuntu-artful image THRIFT-4354: fix php socket blocking behavior Patch: Robert Lu <robberphex@gmail.com> Client: php This closes apache#1384 THRIFT-4508: end trusty CI builds; handle nodejs 4.x LTS EOL; update docs THRIFT-4508: change windows CI builds to use current MSVC, one cygwin and one mingw build THRIFT-4480 - Handle seqid = 0 Client: js This closes apache#1487 move the newly supported socket to the correct programming lnguage THRIFT-4509: remove nodejs browser test Client: nodejs This closes apache#1501 fix wrong document @param in TBase.h Client: cocoa This closes apache#1504 THRIFT-4024: Skip() throws TProtocolException.INVALID_DATA on unknown data types Client: js This closes apache#1503 THRIFT-4495: Allow `undefined` for non-required Erlang records fields. Client: erl As of Erlang 19, the dialyzer static type-analysis tool no longer implicitly adds `undefined` to the allowed types for a field. This means that dialyzer will now complain about any non-required fields that are not explicitly initialed when creating a new record. This closes apache#1494 THRIFT-4497: Use `map()` field type for Erlang type for map struct fields. Client: erl The Thrift Erlang code generator previously generated fields with the `#{}` Erlang type for maps fields. In the Erlang type specification languages, however, `#{}` specifically means an empty map. This commit fixes the code to emit `map()` instead, which means the maps keys and values may be of any type. It would be possible to emit a field type such as `${keytype() => maptype()}`, but this commit does not do that. This closes apache#1495 THRIFT-4515: fix up nonblocking options and enable ssl for nonblocking in cpp server cross Client: cpp THRIFT-4465: Fix C++ TNonblockingServer and THRIFT_EAGAIN issues Client: cpp This closes apache#1497 THRIFT-4337: Able to set keyStore and trustStore as InputStream in the TSSLTransportFactory.TSSLTransportParameters Client: java This closes apache#1486 THRIFT-4515: fix windows build Client: cpp THRIFT-4448: Golang: do something with context.Context. Remove Go1.6 compatibility. Client: go This closes apache#1459 THRIFT-4517: disable ocaml in xenial because it is broken THRIFT-4337: fix javadoc build error related to changes THRIFT-4508: remove cygwin64 build in favor of MSVC2013 THRIFT-4509: * switch from grunt-external-daemon and grunt-shell to grunt-shell-spawn * update grunt to 1.0.2 * always use local copy of jquery and qunit * commit the package-lock files for npm keep versions stable Client: js This closes apache#1506 THRIFT-4509: add jslint and fix build script output THRIFT-4429: Make TThreadPoolServer.executorService_ available in inherited classes and refactor methods to be able customization Client: java This closes apache#1485 THRIFT-4513: Fix thrift compiler to generate constants in stable order. This closes apache#1505 remove uds type; use --domain-socket only implement createHttpUDSConnection API
…compatibility. Client: go This closes apache#1459
This patch wires through
context.Context
such that it can be used in inhttp.Request
'sWithContext
method. This allows Thrift HTTP requests to canceled or timed out via the context.This patch breaks support for go<1.7 so it's not ready to ship, but I'm hoping to get some direction on this. When does Thrift expect to drop support of go1.7? It looks like the current solution is to duplicate files that need to use
golang.org/x/net/context
and add a// +build !go1.7
but duplication seems unsustainable as thecontext
package is imported more places.Go 1.7 was released 15 August 2016. Given Golang has had significant performance improvements in most dot releases, I suspect most production services stay reasonably up to date. Here at Periscope/Twitter we're on go1.9.1, and we're a fairly large organization.