Skip to content
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

Closed

Conversation

johnboiles
Copy link
Contributor

@johnboiles johnboiles commented Jan 5, 2018

This patch wires through context.Context such that it can be used in in http.Request's WithContext 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 the context 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.

Copy link

@almalkawi almalkawi left a 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!

Copy link

@almalkawi almalkawi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@johnboiles
Copy link
Contributor Author

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.

@johnboiles johnboiles changed the title Golang: do something with context.Context THRIFT-4448: Golang: do something with context.Context Jan 9, 2018
@dcelasun
Copy link
Member

dcelasun commented Jan 9, 2018

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 x/net/context anywhere).

@johnboiles
Copy link
Contributor Author

I really appreciate your feedback & involvement @dcelasun! I personally think dropping go1.6/x/net/context support is best for the project. Are you the right person to make that call? Or are there others we should check with before I put in the work.

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.

@dcelasun
Copy link
Member

dcelasun commented Jan 9, 2018

I personally think dropping go1.6/x/net/context support is best for the project. Are you the right person to make that call?

Sounds good to me, but we need to run it by someone with commit bits. cc @Jens-G @jeking3

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.

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 context, this was impossible since the underlying transport was not visible to the handler. Now, you can implement a custom TProcessor that embeds the generated processor, and pass the IP manually, something like:

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...
}

@johnboiles
Copy link
Contributor Author

Thank you for the explainer @dcelasun! Makes sense to me.

@Jens-G, @jeking3: if one of you sign off on this, I'll make the changes to drop go1.6 and x/net/context support from thrift:master.

@jeking3
Copy link
Contributor

jeking3 commented Jan 11, 2018

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.

@johnboiles
Copy link
Contributor Author

Sounds good want me to take a stab at dropping 1.6 support?

@jeking3
Copy link
Contributor

jeking3 commented Jan 11, 2018

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:

golang/mock#118

Now I have to think some more about it. :|

@jeking3
Copy link
Contributor

jeking3 commented Jan 11, 2018

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.

@johnboiles
Copy link
Contributor Author

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.

@johnboiles
Copy link
Contributor Author

@jeking3 @dcelasun Travis is green so I think we're almost good to go here. Mind taking another look and merging if it looks good?

@dcelasun
Copy link
Member

dcelasun commented Feb 1, 2018

It would be nice to add a client test using e.g context.WithTimeout(). Something like:

  • In the handler function, sleep for 100ms before returning
  • In the client, call the RPC with context.WithTimeout(context.Background(), 50*time.Millisecond)
  • Check if ctx.Err() == context.Canceled

Otherwise LGTM.

@johnboiles
Copy link
Contributor Author

@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.

@dcelasun
Copy link
Member

dcelasun commented Feb 1, 2018

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.

@johnboiles
Copy link
Contributor Author

@dcelasun: done, could you take another look?

@dcelasun
Copy link
Member

dcelasun commented Feb 2, 2018

The test fails with:

src/common/context_test.go:45: server.Close undefined (type *http.Server has no field or method Close)

Server.Close() was added in 1.8 but the test uses 1.7. You can just remove that line since it's not a long running process, or you can make it conditional with runtime.Version.

@johnboiles
Copy link
Contributor Author

@dcelasun I don't think I can do a runtime.Version check since the code is failing at compilation time. I'll just remove that line.

@dcelasun
Copy link
Member

dcelasun commented Feb 2, 2018

That’s what I get for reviewing code before fully waking up :)

@dcelasun
Copy link
Member

dcelasun commented Feb 2, 2018

A different failure this time:

--- FAIL: TestHttpContextTimeout (0.00s)
	context_test.go:74: Unexpected error: dial tcp 127.0.0.1:9096: getsockopt: connection refused

@johnboiles
Copy link
Contributor Author

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

@dcelasun
Copy link
Member

dcelasun commented Feb 2, 2018

I think the only one-liner fix is a 500ms sleep before client.TestVoid(). Retry logic would work as well.

@johnboiles
Copy link
Contributor Author

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?

[default] synchronized from https://opam.ocaml.org
Stack overflow
[ERROR] Initialisation failed
Fatal error:
Stack overflow
The command '/bin/sh -c apt-get install -y --no-install-recommends `# OCaml dependencies`       ocaml       opam &&     opam init --yes &&     opam install --yes oasis' returned a non-zero code: 1

@dcelasun
Copy link
Member

dcelasun commented Feb 2, 2018

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 :/

Copy link
Member

@dcelasun dcelasun left a 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

@johnboiles
Copy link
Contributor Author

It bugged me to have a time.Sleep in the test so I wrote the retry logic :)

@dcelasun
Copy link
Member

dcelasun commented Feb 2, 2018

Looks much cleaner!

@johnboiles johnboiles force-pushed the johnboiles/go-context-http branch 2 times, most recently from 7bf76ce to 6f6bd06 Compare February 5, 2018 18:36
@jeking3
Copy link
Contributor

jeking3 commented Feb 13, 2018

Would you mind squashing this into a single commit?

@johnboiles
Copy link
Contributor Author

@jeking3 done

jeking3 pushed a commit to jeking3/thrift that referenced this pull request Mar 12, 2018
@asfgit asfgit closed this in 5785279 Mar 13, 2018
ozymaxx pushed a commit to ozymaxx/thrift that referenced this pull request Mar 20, 2018
- 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
ozymaxx pushed a commit to ozymaxx/thrift that referenced this pull request Mar 20, 2018
- 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)
danielhtshih pushed a commit to danielhtshih/thrift that referenced this pull request Mar 20, 2018
danielhtshih added a commit to danielhtshih/thrift that referenced this pull request Mar 20, 2018
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
hsanjuan pushed a commit to gxed/thrift-go that referenced this pull request Jan 30, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants