From fa5c37ab5f4e8196cb353cd4f884dcf362809cc0 Mon Sep 17 00:00:00 2001 From: Jonas Marty Date: Thu, 20 Jan 2022 14:58:23 +0100 Subject: [PATCH 01/14] Fixes #5500, uncompilable code when a .thirft struct named 'System' is present --- compiler/cpp/src/thrift/generate/t_netstd_generator.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiler/cpp/src/thrift/generate/t_netstd_generator.cc b/compiler/cpp/src/thrift/generate/t_netstd_generator.cc index 1f8e169da..9c87df49b 100644 --- a/compiler/cpp/src/thrift/generate/t_netstd_generator.cc +++ b/compiler/cpp/src/thrift/generate/t_netstd_generator.cc @@ -1794,7 +1794,7 @@ void t_netstd_generator::generate_netstd_struct_equals(ostream& out, t_struct* t } else { - out << "System.Object.Equals("; + out << "global::System.Object.Equals("; } out << prop_name((*f_iter)) << ", other." << prop_name((*f_iter)) << ")"; if (!field_is_required((*f_iter))) From fb87b440cdba9ba53b0db88296c86a92a3ae2503 Mon Sep 17 00:00:00 2001 From: Jens Geyer Date: Fri, 21 Jan 2022 09:37:30 +0100 Subject: [PATCH 02/14] Updated changes.md for 0.16.0 --- CHANGES.md | 170 ++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 123 insertions(+), 47 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index a935870b8..c1a903484 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,81 @@ # Apache Thrift Changelog +## 0.16.0 + +### Known Open Issues (Blocker or Critical) + +- [THRIFT-3877](https://issues.apache.org/jira/browse/THRIFT-3877) - C++ library don't work with HTTP (csharp server, cpp client; need cross test enhancement) +- [THRIFT-5468](https://issues.apache.org/jira/browse/THRIFT-5468) - Swift service generator doesn't support oneway + +### Deprecated Languages + +- [THRIFT-5476](https://issues.apache.org/jira/browse/THRIFT-5476) - Deprecate Common Lisp support + +### Breaking Changes + +- (none) + +### C++ + +- [THRIFT-5456](https://issues.apache.org/jira/browse/THRIFT-5456) - ServerSocket doesn't ignore SIGPIPE +- [THRIFT-5187](https://issues.apache.org/jira/browse/THRIFT-5187) - Add support for Unix domain sockets on Windows 10 or later + +### Common LISP + +- [THRIFT-5476](https://issues.apache.org/jira/browse/THRIFT-5476) - Deprecate Common Lisp support + +### Erlang + +- [THRIFT-5471](https://issues.apache.org/jira/browse/THRIFT-5471) - Introduce delimiter and app_prefix options to erl generator + +### Go + +- [THRIFT-5461](https://issues.apache.org/jira/browse/THRIFT-5461) - Invalid golang code generated for optional set with a default value +- [THRIFT-5490](https://issues.apache.org/jira/browse/THRIFT-5490) - Improve memory efficiency in go THeader implementation +- [THRIFT-5469](https://issues.apache.org/jira/browse/THRIFT-5469) - Go lib skip map value may cause stack overflow + +### Haxe + +- [THRIFT-5470](https://issues.apache.org/jira/browse/THRIFT-5470) - Error: Constraint check failure for haxe.ds.ObjectMap.K + +### Java + +- [THRIFT-5486](https://issues.apache.org/jira/browse/THRIFT-5486) - fix issues found by spotbugs +- [THRIFT-5443](https://issues.apache.org/jira/browse/THRIFT-5443) - add support for partial deserialization of Thrift + +### JavaScript + +- [THRIFT-5448](https://issues.apache.org/jira/browse/THRIFT-5448) - Wrong type mapping of thrift binary type + +### netstd + +- [THRIFT-5500](https://issues.apache.org/jira/browse/THRIFT-5500) - Uncompilable code when .thrift struct 'System' exists +- [THRIFT-5479](https://issues.apache.org/jira/browse/THRIFT-5479) - Add net 6 support +- [THRIFT-5408](https://issues.apache.org/jira/browse/THRIFT-5408) - Support for deprecated methods (via annotation) +- [THRIFT-5481](https://issues.apache.org/jira/browse/THRIFT-5481) - consolidate netstd server implementation details into one common model +- [THRIFT-5480](https://issues.apache.org/jira/browse/THRIFT-5480) - TThreadPoolAsyncServer using TFramedTransport mistakenly drops client +- [THRIFT-5401](https://issues.apache.org/jira/browse/THRIFT-5401) - MaxMessageSize reached exception thrown in TEndpointTransport + +### Perl + +- [THRIFT-5416](https://issues.apache.org/jira/browse/THRIFT-5416) - Allow UDP Socket Client In Perl +- [THRIFT-5055](https://issues.apache.org/jira/browse/THRIFT-5055) - Fix build-cpan-dist.sh to create a CPAN distribution correctly + +### Python + +- [THRIFT-5488](https://issues.apache.org/jira/browse/THRIFT-5488) - SystemError when using fast binary or compact protocol in python 3.10 +- [THRIFT-5454](https://issues.apache.org/jira/browse/THRIFT-5454) - Python TProcessPoolServer does not spawn expected number of worker processes + +### Rust + +- [THRIFT-5457](https://issues.apache.org/jira/browse/THRIFT-5457) - Travis fails consistently on a Rust dependency +- [THRIFT-5452](https://issues.apache.org/jira/browse/THRIFT-5452) - Make server optional + +### Test Suite + +- [THRIFT-5450](https://issues.apache.org/jira/browse/THRIFT-5450) - AppVeyor CI does not run any MSVC tests? + + ## 0.15.0 ### Known Open Issues (Blocker or Critical) @@ -27,7 +103,7 @@ - [THRIFT-5394](https://issues.apache.org/jira/browse/THRIFT-5394) - AppVeyor CI tries to download outdated cmake - [THRIFT-5429](https://issues.apache.org/jira/browse/THRIFT-5429) - build: autotools: add foreign to AM_INIT_AUTOMAKE -### C glib +### C glib - [THRIFT-5244](https://issues.apache.org/jira/browse/THRIFT-5244) - Dynamic exception specifications are deprecated in C++11[-Wdeprecated] - [THRIFT-5265](https://issues.apache.org/jira/browse/THRIFT-5265) - Add the zlib transport to c_glib @@ -57,7 +133,7 @@ - [THRIFT-5384](https://issues.apache.org/jira/browse/THRIFT-5384) - Improved error message for HTTP transports - [THRIFT-5385](https://issues.apache.org/jira/browse/THRIFT-5385) - XML-HTTP client reports IsOpen=TRUE even if it is not - [THRIFT-5386](https://issues.apache.org/jira/browse/THRIFT-5386) - XML-HTTP client may throw "max message size reached" incorrectly -- [THRIFT-5387](https://issues.apache.org/jira/browse/THRIFT-5387) - Improved and simplified Delphi test setup +- [THRIFT-5387](https://issues.apache.org/jira/browse/THRIFT-5387) - Improved and simplified Delphi test setup - [THRIFT-5390](https://issues.apache.org/jira/browse/THRIFT-5390) - Named Pipes transport hardening - [THRIFT-5428](https://issues.apache.org/jira/browse/THRIFT-5428) - Prevent costly reallocations to improve performance - [THRIFT-5437](https://issues.apache.org/jira/browse/THRIFT-5437) - Make TProtocolImpl CTOR virtual @@ -100,11 +176,11 @@ ### Java - [THRIFT-5375](https://issues.apache.org/jira/browse/THRIFT-5375) - Put org.apache.tomcat.embed:tomcat-embed-core into scope test -- [THRIFT-5383](https://issues.apache.org/jira/browse/THRIFT-5383) - TJSONProtocol Java readString throws on bounds check +- [THRIFT-5383](https://issues.apache.org/jira/browse/THRIFT-5383) - TJSONProtocol Java readString throws on bounds check - [THRIFT-5400](https://issues.apache.org/jira/browse/THRIFT-5400) - Java library does not export the .annotation package - [THRIFT-5425](https://issues.apache.org/jira/browse/THRIFT-5425) - Throw an exception when reading TSimpleJson in Java - [THRIFT-5430](https://issues.apache.org/jira/browse/THRIFT-5430) - FieldMetaData synchronized method can trigger deadlock during static class initialization in JVM native code -- [THRIFT-5432](https://issues.apache.org/jira/browse/THRIFT-5432) - TSaslTransport throw TTransportException of MaxMessageSize reached +- [THRIFT-5432](https://issues.apache.org/jira/browse/THRIFT-5432) - TSaslTransport throw TTransportException of MaxMessageSize reached - [THRIFT-5433](https://issues.apache.org/jira/browse/THRIFT-5433) - Add Counter To Thread Name of TThreadPoolServer ### JavaScript @@ -131,7 +207,7 @@ - [THRIFT-5349](https://issues.apache.org/jira/browse/THRIFT-5349) - Add net5.0 as supported platform - [THRIFT-5373](https://issues.apache.org/jira/browse/THRIFT-5373) - HTTP status in case of Protocol/Transport exceptions - [THRIFT-5391](https://issues.apache.org/jira/browse/THRIFT-5391) - Named pipes transport hardening -- [THRIFT-5398](https://issues.apache.org/jira/browse/THRIFT-5398) - ThreadPoolServer not stoppable via CancellationToken +- [THRIFT-5398](https://issues.apache.org/jira/browse/THRIFT-5398) - ThreadPoolServer not stoppable via CancellationToken - [THRIFT-5407](https://issues.apache.org/jira/browse/THRIFT-5407) - Keep support for .NET Core 3.1 - [THRIFT-5419](https://issues.apache.org/jira/browse/THRIFT-5419) - Incorrect usage of thread pool in TThreadPoolAsyncServer may lead to poor performance - [THRIFT-5422](https://issues.apache.org/jira/browse/THRIFT-5422) - add threadpool server to netstd test suite impl @@ -292,19 +368,19 @@ - [THRIFT-5215](https://issues.apache.org/jira/browse/THRIFT-5215) - C++: Remove portable_endian.h - [THRIFT-5217](https://issues.apache.org/jira/browse/THRIFT-5217) - Deprecated boost header - [THRIFT-5237](https://issues.apache.org/jira/browse/THRIFT-5237) - Implement MAX_MESSAGE_SIZE and consolidate limits into a TConfiguration class -- [THRIFT-5290](https://issues.apache.org/jira/browse/THRIFT-5290) - Adjusting cpp *.cproj msvcrt options according to LEGAL-538 +- [THRIFT-5290](https://issues.apache.org/jira/browse/THRIFT-5290) - Adjusting cpp *.cproj msvcrt options according to LEGAL-538 - [THRIFT-5295](https://issues.apache.org/jira/browse/THRIFT-5295) - Thread and ThreadFactory should be extensible - [THRIFT-5344](https://issues.apache.org/jira/browse/THRIFT-5344) - TTransport may throw raw pointer exceptions ### Compiler (General) -- [THRIFT-4173](https://issues.apache.org/jira/browse/THRIFT-4173) - Go: thrift compiler generates wrong code for list of aliased type +- [THRIFT-4173](https://issues.apache.org/jira/browse/THRIFT-4173) - Go: thrift compiler generates wrong code for list of aliased type - [THRIFT-4938](https://issues.apache.org/jira/browse/THRIFT-4938) - Issues with version.h treatment - [THRIFT-4973](https://issues.apache.org/jira/browse/THRIFT-4973) - Add deprecation messages for csharp and netcore - [THRIFT-4980](https://issues.apache.org/jira/browse/THRIFT-4980) - Remove deprecated C# and netcore bindings from the code base - [THRIFT-4982](https://issues.apache.org/jira/browse/THRIFT-4982) - Remove deprecated C# bindings from the code baseï…‚ - [THRIFT-5153](https://issues.apache.org/jira/browse/THRIFT-5153) - Deprecate byte -- [THRIFT-5225](https://issues.apache.org/jira/browse/THRIFT-5225) - Use nullptr instead of NULL +- [THRIFT-5225](https://issues.apache.org/jira/browse/THRIFT-5225) - Use nullptr instead of NULL - [THRIFT-5302](https://issues.apache.org/jira/browse/THRIFT-5302) - Add recursive function name uniqueness check ### D @@ -320,7 +396,7 @@ - [THRIFT-5154](https://issues.apache.org/jira/browse/THRIFT-5154) - Generate interface IDs (IID) for Windows platforms - [THRIFT-5235](https://issues.apache.org/jira/browse/THRIFT-5235) - Add property setter for isset flags - [THRIFT-5261](https://issues.apache.org/jira/browse/THRIFT-5261) - Support for deprecated methods (via annotation) -- [THRIFT-5004](https://issues.apache.org/jira/browse/THRIFT-5004) - Make exception implementations more consistent +- [THRIFT-5004](https://issues.apache.org/jira/browse/THRIFT-5004) - Make exception implementations more consistent - [THRIFT-5005](https://issues.apache.org/jira/browse/THRIFT-5005) - Refactoring of the Delphi libs - [THRIFT-5006](https://issues.apache.org/jira/browse/THRIFT-5006) - Implement DEFAULT_MAX_LENGTH at TFramedTransport - [THRIFT-5007](https://issues.apache.org/jira/browse/THRIFT-5007) - Implement MAX_MESSAGE_SIZE and remaining read bytes control @@ -424,7 +500,7 @@ - [THRIFT-5238](https://issues.apache.org/jira/browse/THRIFT-5238) - GetHashCode can throw NullReferenceException - [THRIFT-5253](https://issues.apache.org/jira/browse/THRIFT-5253) - using Result in result name generates wrong IAsync interface - [THRIFT-5254](https://issues.apache.org/jira/browse/THRIFT-5254) - Member name cannot be Isset (unless it is an "required" member) -- [THRIFT-5316](https://issues.apache.org/jira/browse/THRIFT-5316) - Netstd compiler generates wrong ToString() method: .ToString(sb) +- [THRIFT-5316](https://issues.apache.org/jira/browse/THRIFT-5316) - Netstd compiler generates wrong ToString() method: .ToString(sb) - [THRIFT-5317](https://issues.apache.org/jira/browse/THRIFT-5317) - netstd compiler does not escape keywords - [THRIFT-5320](https://issues.apache.org/jira/browse/THRIFT-5320) - Usage of "Task" as IDL identifier generates uncompileable code - [THRIFT-4990](https://issues.apache.org/jira/browse/THRIFT-4990) - Upgrade to .NET Core 3.1 (LTS) @@ -434,7 +510,7 @@ - [THRIFT-5026](https://issues.apache.org/jira/browse/THRIFT-5026) - TestClient/Server ignores first cmdline argument - [THRIFT-5027](https://issues.apache.org/jira/browse/THRIFT-5027) - Implement remaining read bytes checks - [THRIFT-5053](https://issues.apache.org/jira/browse/THRIFT-5053) - Fix the netstd tutorial console logging and README -- [THRIFT-5083](https://issues.apache.org/jira/browse/THRIFT-5083) - NetStd JSON Protocol left in incorrect state +- [THRIFT-5083](https://issues.apache.org/jira/browse/THRIFT-5083) - NetStd JSON Protocol left in incorrect state - [THRIFT-5133](https://issues.apache.org/jira/browse/THRIFT-5133) - TCompactProtocol string allocation improvement - [THRIFT-5172](https://issues.apache.org/jira/browse/THRIFT-5172) - NetStd TBaseClient open output transport multiple times - [THRIFT-5210](https://issues.apache.org/jira/browse/THRIFT-5210) - further performance optimizations @@ -463,7 +539,7 @@ - [THRIFT-5103](https://issues.apache.org/jira/browse/THRIFT-5103) - PHP 7.4 THttpClient deprecated error - [THRIFT-5130](https://issues.apache.org/jira/browse/THRIFT-5130) - Use Apcu instead of APC - [THRIFT-5132](https://issues.apache.org/jira/browse/THRIFT-5132) - Warning in TSocket when using ssl connection -- [THRIFT-5199](https://issues.apache.org/jira/browse/THRIFT-5199) - Infinite loop in PHP TSocket::write when peer closes connection +- [THRIFT-5199](https://issues.apache.org/jira/browse/THRIFT-5199) - Infinite loop in PHP TSocket::write when peer closes connection - [THRIFT-5336](https://issues.apache.org/jira/browse/THRIFT-5336) - Add possibility to setup connection timeout in TCurlClient ### Python @@ -540,7 +616,7 @@ ### Deprecated Languages - [THRIFT-4723](https://issues.apache.org/jira/browse/THRIFT-4723) - CSharp and Netcore targets are deprecated and will be removed with the next release) - use NetStd instead. - + ### Removed Languages - [THRIFT-4719](https://issues.apache.org/jira/browse/THRIFT-4719) - Cocoa language was removed) - use swift instead. @@ -603,7 +679,7 @@ - [THRIFT-4723](https://issues.apache.org/jira/browse/THRIFT-4723) - Consolidate C# and netcore into new netstd language target (and finally deprecate both C# and netcore bindings) - [THRIFT-4741](https://issues.apache.org/jira/browse/THRIFT-4741) - Missing "inner" argument from one CTOR - [THRIFT-4769](https://issues.apache.org/jira/browse/THRIFT-4769) - Change NuGet package to use netstd artifact -- [THRIFT-4859](https://issues.apache.org/jira/browse/THRIFT-4859) - Enables changing 'UserAgent' +- [THRIFT-4859](https://issues.apache.org/jira/browse/THRIFT-4859) - Enables changing 'UserAgent' - [THRIFT-4907](https://issues.apache.org/jira/browse/THRIFT-4907) - strong named assemblies wanted ### C++ @@ -715,8 +791,8 @@ - [THRIFT-4726](https://issues.apache.org/jira/browse/THRIFT-4726) - Remove SLF4J Logging Guards - [THRIFT-4748](https://issues.apache.org/jira/browse/THRIFT-4748) - Add Jitpack support - [THRIFT-4766](https://issues.apache.org/jira/browse/THRIFT-4766) - JDK9+ fails on missing annotations -- [THRIFT-4773](https://issues.apache.org/jira/browse/THRIFT-4773) - TSaslTransport should relay underlying TTransportException to TSaslTransportException -- [THRIFT-4805](https://issues.apache.org/jira/browse/THRIFT-4805) - Suppress excessive logging of SASL TTransportExceptions in case of END_OF_FILE +- [THRIFT-4773](https://issues.apache.org/jira/browse/THRIFT-4773) - TSaslTransport should relay underlying TTransportException to TSaslTransportException +- [THRIFT-4805](https://issues.apache.org/jira/browse/THRIFT-4805) - Suppress excessive logging of SASL TTransportExceptions in case of END_OF_FILE - [THRIFT-4849](https://issues.apache.org/jira/browse/THRIFT-4849) - Do not Ignore InterruptedException - [THRIFT-4851](https://issues.apache.org/jira/browse/THRIFT-4851) - Remove All Calls To printStackTrace - [THRIFT-4857](https://issues.apache.org/jira/browse/THRIFT-4857) - Java field hash code implementation inconsistent with equals. @@ -729,7 +805,7 @@ ### JavaScript - [THRIFT-4675](https://issues.apache.org/jira/browse/THRIFT-4675) - JS code generators not handling int64 type properly for constants and for TypeScript type mappings -- [THRIFT-4728](https://issues.apache.org/jira/browse/THRIFT-4728) - Cleanup for the double rendering test in JS +- [THRIFT-4728](https://issues.apache.org/jira/browse/THRIFT-4728) - Cleanup for the double rendering test in JS - [THRIFT-4737](https://issues.apache.org/jira/browse/THRIFT-4737) - thrift.js does not use customHeaders in jqRequest - [THRIFT-4745](https://issues.apache.org/jira/browse/THRIFT-4745) - warning C4305: 'initializing' : truncation from '"__int64' to 'long' - [THRIFT-4757](https://issues.apache.org/jira/browse/THRIFT-4757) - grunt-shell-spawn drags in sync-exec which has a security notice @@ -767,7 +843,7 @@ - [THRIFT-4879](https://issues.apache.org/jira/browse/THRIFT-4879) - general performance improvements for netstd library - [THRIFT-4891](https://issues.apache.org/jira/browse/THRIFT-4891) - Align HTTP test client with all other variants - [THRIFT-4893](https://issues.apache.org/jira/browse/THRIFT-4893) - Enable automatic content encoding handling for gzip,deflate in the HTTP client -- [THRIFT-4898](https://issues.apache.org/jira/browse/THRIFT-4898) - Pipe write operations across a network are limited to 65,535 bytes per write. +- [THRIFT-4898](https://issues.apache.org/jira/browse/THRIFT-4898) - Pipe write operations across a network are limited to 65,535 bytes per write. - [THRIFT-4919](https://issues.apache.org/jira/browse/THRIFT-4919) - THttpTransport.cs (netstd) and THttpClientTransport (netcore) have bad timeout code ### node.js @@ -1199,7 +1275,7 @@ Released 2017-DEC-27 - [THRIFT-4141](https://issues.apache.org/jira/browse/THRIFT-4141) - Installation of haxe in docker files refers to a redirect link and fails - [THRIFT-4147](https://issues.apache.org/jira/browse/THRIFT-4147) - Rust: protocol should accept transports with non-static lifetime - [THRIFT-4148](https://issues.apache.org/jira/browse/THRIFT-4148) - [maven-thrift-plugin] compile error while import a thrift in dependency jar file. -- [THRIFT-4149](https://issues.apache.org/jira/browse/THRIFT-4149) - System.out pollutes log files +- [THRIFT-4149](https://issues.apache.org/jira/browse/THRIFT-4149) - System.out pollutes log files - [THRIFT-4154](https://issues.apache.org/jira/browse/THRIFT-4154) - PHP close() of a TSocket needs to close any type of socket - [THRIFT-4158](https://issues.apache.org/jira/browse/THRIFT-4158) - minor issue in README-MSYS2.md - [THRIFT-4159](https://issues.apache.org/jira/browse/THRIFT-4159) - Building tests fails on MSYS2 (MinGW64) due to a (small?) linker error @@ -1248,7 +1324,7 @@ Released 2017-DEC-27 - [THRIFT-4263](https://issues.apache.org/jira/browse/THRIFT-4263) - Fix use after free bug for thrown exceptions - [THRIFT-4266](https://issues.apache.org/jira/browse/THRIFT-4266) - Erlang library throws during skipping fields of composite type (maps, lists, structs, sets) - [THRIFT-4268](https://issues.apache.org/jira/browse/THRIFT-4268) - Erlang library emits debugging output in transport layer -- [THRIFT-4273](https://issues.apache.org/jira/browse/THRIFT-4273) - erlang:now/0: Deprecated BIF. +- [THRIFT-4273](https://issues.apache.org/jira/browse/THRIFT-4273) - erlang:now/0: Deprecated BIF. - [THRIFT-4274](https://issues.apache.org/jira/browse/THRIFT-4274) - Python feature tests for SSL/TLS failing - [THRIFT-4279](https://issues.apache.org/jira/browse/THRIFT-4279) - Wrong path in include directive in generated Thrift sources - [THRIFT-4283](https://issues.apache.org/jira/browse/THRIFT-4283) - TNamedPipeServer race condition in interrupt @@ -1277,7 +1353,7 @@ Released 2017-DEC-27 - [THRIFT-4365](https://issues.apache.org/jira/browse/THRIFT-4365) - Perl generated code uses indirect object syntax, which occasionally causes compilation errors. - [THRIFT-4367](https://issues.apache.org/jira/browse/THRIFT-4367) - python TProcessor.process is missing "self" - [THRIFT-4370](https://issues.apache.org/jira/browse/THRIFT-4370) - Ubuntu Artful cppcheck and flake8 are more stringent and causing SCA build job failures -- [THRIFT-4372](https://issues.apache.org/jira/browse/THRIFT-4372) - Pipe write operations across a network are limited to 65,535 bytes per write. +- [THRIFT-4372](https://issues.apache.org/jira/browse/THRIFT-4372) - Pipe write operations across a network are limited to 65,535 bytes per write. - [THRIFT-4374](https://issues.apache.org/jira/browse/THRIFT-4374) - cannot load thrift_protocol due to undefined symbol: _ZTVN10__cxxabiv120__si_class_type_infoE - [THRIFT-4375](https://issues.apache.org/jira/browse/THRIFT-4375) - TMemory throw bad_alloc due to counter overflow - [THRIFT-4376](https://issues.apache.org/jira/browse/THRIFT-4376) - Coverity high impact issue resolution @@ -1286,7 +1362,7 @@ Released 2017-DEC-27 - [THRIFT-4385](https://issues.apache.org/jira/browse/THRIFT-4385) - Go remote client -u flag is broken - [THRIFT-4392](https://issues.apache.org/jira/browse/THRIFT-4392) - compiler/..../plugin.thrift structs mis-ordered blows up ocaml generator - [THRIFT-4395](https://issues.apache.org/jira/browse/THRIFT-4395) - Unable to build in the ubuntu-xenial docker image: clap 2.28 requires Rust 1.20 -- [THRIFT-4396](https://issues.apache.org/jira/browse/THRIFT-4396) - inconsistent (or plain wrong) version numbers in master/trunk +- [THRIFT-4396](https://issues.apache.org/jira/browse/THRIFT-4396) - inconsistent (or plain wrong) version numbers in master/trunk ### Documentation - [THRIFT-4157](https://issues.apache.org/jira/browse/THRIFT-4157) - outdated readme about Haxe installation on Linux @@ -1302,7 +1378,7 @@ Released 2017-DEC-27 - [THRIFT-3272](https://issues.apache.org/jira/browse/THRIFT-3272) - Perl SSL Authentication Support - [THRIFT-3357](https://issues.apache.org/jira/browse/THRIFT-3357) - Generate EnumSet/EnumMap where elements/keys are enums - [THRIFT-3369](https://issues.apache.org/jira/browse/THRIFT-3369) - Implement SSL/TLS support on C with c_glib -- [THRIFT-3467](https://issues.apache.org/jira/browse/THRIFT-3467) - Go Maps for Thrift Sets Should Have Values of Type struct{} +- [THRIFT-3467](https://issues.apache.org/jira/browse/THRIFT-3467) - Go Maps for Thrift Sets Should Have Values of Type struct{} - [THRIFT-3580](https://issues.apache.org/jira/browse/THRIFT-3580) - THeader for Haskell - [THRIFT-3627](https://issues.apache.org/jira/browse/THRIFT-3627) - Missing basic code style consistency of JavaScript. - [THRIFT-3706](https://issues.apache.org/jira/browse/THRIFT-3706) - There's no support for Multiplexed protocol on c_glib library @@ -1312,7 +1388,7 @@ Released 2017-DEC-27 - [THRIFT-3854](https://issues.apache.org/jira/browse/THRIFT-3854) - allow users to clear read buffers - [THRIFT-3859](https://issues.apache.org/jira/browse/THRIFT-3859) - Unix Domain Socket Support in Objective-C - [THRIFT-3921](https://issues.apache.org/jira/browse/THRIFT-3921) - C++ code should print enums as strings -- [THRIFT-3926](https://issues.apache.org/jira/browse/THRIFT-3926) - There should be an error emitted when http status code is not 200 +- [THRIFT-3926](https://issues.apache.org/jira/browse/THRIFT-3926) - There should be an error emitted when http status code is not 200 - [THRIFT-4007](https://issues.apache.org/jira/browse/THRIFT-4007) - Micro-optimization of TTransport.py - [THRIFT-4040](https://issues.apache.org/jira/browse/THRIFT-4040) - Add real cause of TNonblockingServerSocket error to exception - [THRIFT-4064](https://issues.apache.org/jira/browse/THRIFT-4064) - Update node library dependencies @@ -1337,7 +1413,7 @@ Released 2017-DEC-27 - [THRIFT-4203](https://issues.apache.org/jira/browse/THRIFT-4203) - thrift server stop gracefully - [THRIFT-4205](https://issues.apache.org/jira/browse/THRIFT-4205) - c_glib is not linking against glib + gobject - [THRIFT-4209](https://issues.apache.org/jira/browse/THRIFT-4209) - warning CS0414 in T[TLS]ServerSocket.cs -- [THRIFT-4210](https://issues.apache.org/jira/browse/THRIFT-4210) - include Thrift.45.csproj into CI runs +- [THRIFT-4210](https://issues.apache.org/jira/browse/THRIFT-4210) - include Thrift.45.csproj into CI runs - [THRIFT-4217](https://issues.apache.org/jira/browse/THRIFT-4217) - HttpClient should support gzip and deflate - [THRIFT-4222](https://issues.apache.org/jira/browse/THRIFT-4222) - Support Unix Domain Sockets in Golang TServerSocket - [THRIFT-4233](https://issues.apache.org/jira/browse/THRIFT-4233) - Make THsHaServer.invoker available (get method only) in inherited classes @@ -1372,7 +1448,7 @@ Released 2017-DEC-27 - [THRIFT-2945](https://issues.apache.org/jira/browse/THRIFT-2945) - Implement support for Rust language - [THRIFT-3857](https://issues.apache.org/jira/browse/THRIFT-3857) - thrift js:node compiler support an object as parameter not an instance of struct - [THRIFT-3933](https://issues.apache.org/jira/browse/THRIFT-3933) - Port official C# .NET library for Thrift to C# .NET Core library -- [THRIFT-4039](https://issues.apache.org/jira/browse/THRIFT-4039) - Update of Apache Thrift .Net Core lib +- [THRIFT-4039](https://issues.apache.org/jira/browse/THRIFT-4039) - Update of Apache Thrift .Net Core lib - [THRIFT-4113](https://issues.apache.org/jira/browse/THRIFT-4113) - Provide a buffer transport for reading/writing in memory byte stream ### Question @@ -1458,11 +1534,11 @@ Released 2017-DEC-27 - [THRIFT-3884](https://issues.apache.org/jira/browse/THRIFT-3884) - Fix Erlang compact protocol double endianess and boolean list - [THRIFT-3880](https://issues.apache.org/jira/browse/THRIFT-3880) - Erlang Compact protocol) - boolean values inverted - [THRIFT-3879](https://issues.apache.org/jira/browse/THRIFT-3879) - Undefined evaluation order causes incorrect processing in the C++ library JSON protocol -- [THRIFT-3851](https://issues.apache.org/jira/browse/THRIFT-3851) - Golang thrift continually adds the x/thrift content type +- [THRIFT-3851](https://issues.apache.org/jira/browse/THRIFT-3851) - Golang thrift continually adds the x/thrift content type - [THRIFT-3850](https://issues.apache.org/jira/browse/THRIFT-3850) - All apache builds are failing when initiated from a github pull request - [THRIFT-3837](https://issues.apache.org/jira/browse/THRIFT-3837) - Thift 0.9.3 can't be build with QuickCheck 2.8.2 and unordered-containers 0.2.6 - [THRIFT-3831](https://issues.apache.org/jira/browse/THRIFT-3831) - build of test/cpp/src/TestClient.cpp fails with newer gcc on platforms with unsigned char due to narrowing conversions -- [THRIFT-3827](https://issues.apache.org/jira/browse/THRIFT-3827) - php CompactProtocol readI64 function has bug, when value has 32bit ~64bit, Example:value=1461563457000 +- [THRIFT-3827](https://issues.apache.org/jira/browse/THRIFT-3827) - php CompactProtocol readI64 function has bug, when value has 32bit ~64bit, Example:value=1461563457000 - [THRIFT-3825](https://issues.apache.org/jira/browse/THRIFT-3825) - Javascript test dependency is no longer available - [THRIFT-3814](https://issues.apache.org/jira/browse/THRIFT-3814) - Fix contention in TNonblockingServerTest - [THRIFT-3793](https://issues.apache.org/jira/browse/THRIFT-3793) - Appveyor builds reference an ant version that is no longer there @@ -1518,7 +1594,7 @@ Released 2017-DEC-27 - [THRIFT-3813](https://issues.apache.org/jira/browse/THRIFT-3813) - Appveyor builds reference an openssl version that is no longer there - [THRIFT-3658](https://issues.apache.org/jira/browse/THRIFT-3658) - Missing file in THRIFT-3599 - [THRIFT-3649](https://issues.apache.org/jira/browse/THRIFT-3649) - Python TSaslClientTransport initializes TTransportException incorrectly -- [THRIFT-3650](https://issues.apache.org/jira/browse/THRIFT-3650) - incorrect union serialization +- [THRIFT-3650](https://issues.apache.org/jira/browse/THRIFT-3650) - incorrect union serialization - [THRIFT-3713](https://issues.apache.org/jira/browse/THRIFT-3713) - lib/d/test/thrift_test_runner.sh is flaky on Jenkins - [THRIFT-3668](https://issues.apache.org/jira/browse/THRIFT-3668) - range check error in compact protocol - [THRIFT-3663](https://issues.apache.org/jira/browse/THRIFT-3663) - CMake cpp test fails to build on system without zlib @@ -1551,7 +1627,7 @@ Released 2017-DEC-27 - [THRIFT-3056](https://issues.apache.org/jira/browse/THRIFT-3056) - Add string/collection length limits for Python protocol readers - [THRIFT-3237](https://issues.apache.org/jira/browse/THRIFT-3237) - Fix TNamedPipeServer::createNamedPipe memory leak - [THRIFT-3233](https://issues.apache.org/jira/browse/THRIFT-3233) - Fix C++ ThreadManager::Impl::removeWorker worker join -- [THRIFT-3232](https://issues.apache.org/jira/browse/THRIFT-3232) - Cannot deserialize json messages created with fieldNamesAsString +- [THRIFT-3232](https://issues.apache.org/jira/browse/THRIFT-3232) - Cannot deserialize json messages created with fieldNamesAsString - [THRIFT-3206](https://issues.apache.org/jira/browse/THRIFT-3206) - Fix Visual Studio build failure due 'pthread_self': identifier not found - [THRIFT-3200](https://issues.apache.org/jira/browse/THRIFT-3200) - JS and nodejs do not encode JSON protocol binary fields as base64 - [THRIFT-3199](https://issues.apache.org/jira/browse/THRIFT-3199) - Exception field has basic metadata @@ -1568,7 +1644,7 @@ Released 2017-DEC-27 - [THRIFT-3379](https://issues.apache.org/jira/browse/THRIFT-3379) - Potential out of range panic in Go JSON protocols - [THRIFT-3371](https://issues.apache.org/jira/browse/THRIFT-3371) - Abstract namespace Unix domain sockets broken in C++ - [THRIFT-3380](https://issues.apache.org/jira/browse/THRIFT-3380) - nodejs: 0.9.2 -> 0.9.3 upgrade breaks Protocol and Transport requires -- [THRIFT-3367](https://issues.apache.org/jira/browse/THRIFT-3367) - Fix bad links to coding_standards.md #634 +- [THRIFT-3367](https://issues.apache.org/jira/browse/THRIFT-3367) - Fix bad links to coding_standards.md #634 - [THRIFT-3401](https://issues.apache.org/jira/browse/THRIFT-3401) - Nested collections emit Objective-C code that cannot compile - [THRIFT-3403](https://issues.apache.org/jira/browse/THRIFT-3403) - JSON String reader doesn't recognize UTF-16 surrogate pairs - [THRIFT-3362](https://issues.apache.org/jira/browse/THRIFT-3362) - make check fails for C++ at the SecurityTest @@ -1579,7 +1655,7 @@ Released 2017-DEC-27 - [THRIFT-3390](https://issues.apache.org/jira/browse/THRIFT-3390) - TTornado server doesn't handle closed connections properly - [THRIFT-3382](https://issues.apache.org/jira/browse/THRIFT-3382) - TBase class for C++ Library - [THRIFT-3392](https://issues.apache.org/jira/browse/THRIFT-3392) - Java TZlibTransport does not close its wrapper streams upon close() -- [THRIFT-3383](https://issues.apache.org/jira/browse/THRIFT-3383) - i64 related warnings +- [THRIFT-3383](https://issues.apache.org/jira/browse/THRIFT-3383) - i64 related warnings - [THRIFT-3386](https://issues.apache.org/jira/browse/THRIFT-3386) - misc. warnings with make check - [THRIFT-3385](https://issues.apache.org/jira/browse/THRIFT-3385) - warning: format ‘%lu’ expects ‘long unsigned int’, but has type ‘std::basic_string::size_type {aka unsigned int} - [THRIFT-3355](https://issues.apache.org/jira/browse/THRIFT-3355) - npm WARN package.json thrift@1.0.0-dev No license field. @@ -1634,7 +1710,7 @@ Released 2017-DEC-27 - [THRIFT-3483](https://issues.apache.org/jira/browse/THRIFT-3483) - Incorrect empty binary handling introduced by THRIFT-3359 - [THRIFT-3479](https://issues.apache.org/jira/browse/THRIFT-3479) - Oneway calls should not return exceptions to clients - [THRIFT-3478](https://issues.apache.org/jira/browse/THRIFT-3478) - Restore dropped method to THsHaServer.java -- [THRIFT-3477](https://issues.apache.org/jira/browse/THRIFT-3477) - Parser fails on enum item that starts with 'E' letter and continues with number +- [THRIFT-3477](https://issues.apache.org/jira/browse/THRIFT-3477) - Parser fails on enum item that starts with 'E' letter and continues with number - [THRIFT-3476](https://issues.apache.org/jira/browse/THRIFT-3476) - Missing include in ./src/thrift/protocol/TJSONProtocol.cpp - [THRIFT-3474](https://issues.apache.org/jira/browse/THRIFT-3474) - Docker: thrift-compiler - [THRIFT-3473](https://issues.apache.org/jira/browse/THRIFT-3473) - When "optional' is used with a struct member, C++ server seems to not return it correctly @@ -1666,7 +1742,7 @@ Released 2017-DEC-27 - [THRIFT-3428](https://issues.apache.org/jira/browse/THRIFT-3428) - Go test fails when running make check - [THRIFT-3445](https://issues.apache.org/jira/browse/THRIFT-3445) - Throwable messages are hidden from JVM stack trace output - [THRIFT-3443](https://issues.apache.org/jira/browse/THRIFT-3443) - Thrift include can generate uncompilable code -- [THRIFT-3444](https://issues.apache.org/jira/browse/THRIFT-3444) - Large 64 bit Integer does not preserve value through Node.js JSONProtocol +- [THRIFT-3444](https://issues.apache.org/jira/browse/THRIFT-3444) - Large 64 bit Integer does not preserve value through Node.js JSONProtocol - [THRIFT-3436](https://issues.apache.org/jira/browse/THRIFT-3436) - misc. cross test issues with UTF-8 path names - [THRIFT-3435](https://issues.apache.org/jira/browse/THRIFT-3435) - Put generated Java code for fullcamel tests in a separate package/namespace - [THRIFT-3433](https://issues.apache.org/jira/browse/THRIFT-3433) - Doubles aren't interpreted correctly @@ -1718,7 +1794,7 @@ Released 2017-DEC-27 - [THRIFT-3955](https://issues.apache.org/jira/browse/THRIFT-3955) - TThreadedServer Memory Leak - [THRIFT-3829](https://issues.apache.org/jira/browse/THRIFT-3829) - Thrift does not install Python Libraries if Twisted is not installed - [THRIFT-3932](https://issues.apache.org/jira/browse/THRIFT-3932) - C++ ThreadManager has a rare termination race -- [THRIFT-3828](https://issues.apache.org/jira/browse/THRIFT-3828) - cmake fails when Boost_INCLUDE_DIRS (and other variables passed to include_directories()) is empty +- [THRIFT-3828](https://issues.apache.org/jira/browse/THRIFT-3828) - cmake fails when Boost_INCLUDE_DIRS (and other variables passed to include_directories()) is empty - [THRIFT-3958](https://issues.apache.org/jira/browse/THRIFT-3958) - CMake WITH_MT option for windows static runtime linking does not support the cmake build type RelWithDebInfo - [THRIFT-3957](https://issues.apache.org/jira/browse/THRIFT-3957) - TConnectedClient does not disconnect from clients when their timeout is reached. - [THRIFT-3953](https://issues.apache.org/jira/browse/THRIFT-3953) - TSSLSocket::close should handle exceptions from waitForEvent because it is called by the destructor. @@ -1776,7 +1852,7 @@ Released 2017-DEC-27 - [THRIFT-1533](https://issues.apache.org/jira/browse/THRIFT-1533) - Make TTransport should be Closeable - [THRIFT-35](https://issues.apache.org/jira/browse/THRIFT-35) - Move language tests into their appropriate library directory - [THRIFT-1079](https://issues.apache.org/jira/browse/THRIFT-1079) - Support i64 in AS3 -- [THRIFT-1108](https://issues.apache.org/jira/browse/THRIFT-1108) - SSL support for the Ruby library +- [THRIFT-1108](https://issues.apache.org/jira/browse/THRIFT-1108) - SSL support for the Ruby library - [THRIFT-3856](https://issues.apache.org/jira/browse/THRIFT-3856) - update debian package deependencies - [THRIFT-3833](https://issues.apache.org/jira/browse/THRIFT-3833) - haxe http server implementation (by embeding into php web server) - [THRIFT-3839](https://issues.apache.org/jira/browse/THRIFT-3839) - Performance issue with big message deserialization using php extension @@ -1824,7 +1900,7 @@ Released 2017-DEC-27 - [THRIFT-3186](https://issues.apache.org/jira/browse/THRIFT-3186) - Add TServerHTTP to Go library - [THRIFT-2342](https://issues.apache.org/jira/browse/THRIFT-2342) - Add __FILE__ and __LINE__ to Thrift C++ excpetions - [THRIFT-3372](https://issues.apache.org/jira/browse/THRIFT-3372) - Add dart generator to Visual Studio project -- [THRIFT-3366](https://issues.apache.org/jira/browse/THRIFT-3366) - ThriftTest to implement standard return values +- [THRIFT-3366](https://issues.apache.org/jira/browse/THRIFT-3366) - ThriftTest to implement standard return values - [THRIFT-3402](https://issues.apache.org/jira/browse/THRIFT-3402) - Provide a perl Unix Socket implementation - [THRIFT-3361](https://issues.apache.org/jira/browse/THRIFT-3361) - Improve C# library - [THRIFT-3393](https://issues.apache.org/jira/browse/THRIFT-3393) - Introduce i8 to provide consistent set of Thrift IDL integer types @@ -1918,7 +1994,7 @@ Released 2017-DEC-27 - [THRIFT-2779](https://issues.apache.org/jira/browse/THRIFT-2779) - PHP TJSONProtocol encode unicode into UCS-4LE which can't be parsed by other language bindings - [THRIFT-2110](https://issues.apache.org/jira/browse/THRIFT-2110) - Erlang: Support for Multiplexing Services on any Transport, Protocol and Server - [THRIFT-3852](https://issues.apache.org/jira/browse/THRIFT-3852) - A Travis-CI job fails with "write error" -- [THRIFT-3740](https://issues.apache.org/jira/browse/THRIFT-3740) - Fix haxelib.json classpath +- [THRIFT-3740](https://issues.apache.org/jira/browse/THRIFT-3740) - Fix haxelib.json classpath - [THRIFT-3653](https://issues.apache.org/jira/browse/THRIFT-3653) - incorrect union serialization - [THRIFT-3652](https://issues.apache.org/jira/browse/THRIFT-3652) - incorrect serialization of optionals - [THRIFT-3655](https://issues.apache.org/jira/browse/THRIFT-3655) - incorrect union serialization @@ -1946,7 +2022,7 @@ Released 2017-DEC-27 - [THRIFT-3573](https://issues.apache.org/jira/browse/THRIFT-3573) - No rule to make target `../../../test/c_glib/src/.deps/testthrifttest-thrift_test_handler.Po'. - [THRIFT-3572](https://issues.apache.org/jira/browse/THRIFT-3572) - "Unable to determine the behavior of a signed right shift" - [THRIFT-3542](https://issues.apache.org/jira/browse/THRIFT-3542) - Add length limit support to Java test server -- [THRIFT-3537](https://issues.apache.org/jira/browse/THRIFT-3537) - Remove the (now obsolete) csharp:asyncctp flag +- [THRIFT-3537](https://issues.apache.org/jira/browse/THRIFT-3537) - Remove the (now obsolete) csharp:asyncctp flag - [THRIFT-3532](https://issues.apache.org/jira/browse/THRIFT-3532) - Add configurable string and container read size limit to Python protocols - [THRIFT-3531](https://issues.apache.org/jira/browse/THRIFT-3531) - Create cross lang feature test for string and container read length limit - [THRIFT-3482](https://issues.apache.org/jira/browse/THRIFT-3482) - Haskell JSON protocol does not encode binary field as Base64 @@ -1965,7 +2041,7 @@ Released 2017-DEC-27 ### Task - [THRIFT-1801](https://issues.apache.org/jira/browse/THRIFT-1801) - Sync up TApplicationException codes across languages and thrift implementations -- [THRIFT-1259](https://issues.apache.org/jira/browse/THRIFT-1259) - Automate versioning +- [THRIFT-1259](https://issues.apache.org/jira/browse/THRIFT-1259) - Automate versioning ### Test - [THRIFT-3400](https://issues.apache.org/jira/browse/THRIFT-3400) - Add Erlang to cross test @@ -2040,7 +2116,7 @@ Released March 13, 2019 to backport a CVE fix to the popular 0.9.3 release. - [THRIFT-3164](https://issues.apache.org/jira/browse/THRIFT-3164) - Thrift C++ library SSL socket by default allows for unsecure SSLv3 negotiation - [THRIFT-3168](https://issues.apache.org/jira/browse/THRIFT-3168) - Fix Maven POM - [THRIFT-3170](https://issues.apache.org/jira/browse/THRIFT-3170) - Initialism code in the Go compiler causes chaos -- [THRIFT-3169](https://issues.apache.org/jira/browse/THRIFT-3169) - Do not export thrift.TestStruct and thrift.TestEnum in thrift Go library +- [THRIFT-3169](https://issues.apache.org/jira/browse/THRIFT-3169) - Do not export thrift.TestStruct and thrift.TestEnum in thrift Go library - [THRIFT-3191](https://issues.apache.org/jira/browse/THRIFT-3191) - Perl compiler does not add support for unexpected exception handling - [THRIFT-3178](https://issues.apache.org/jira/browse/THRIFT-3178) - glib C does not compile - [THRIFT-3189](https://issues.apache.org/jira/browse/THRIFT-3189) - Perl ServerSocket should allow a specific interface to be listened to @@ -2130,7 +2206,7 @@ Released March 13, 2019 to backport a CVE fix to the popular 0.9.3 release. - [THRIFT-2858](https://issues.apache.org/jira/browse/THRIFT-2858) - Enable header field case insensitive match in THttpServer - [THRIFT-2857](https://issues.apache.org/jira/browse/THRIFT-2857) - C# generator creates uncompilable code for struct constants - [THRIFT-2860](https://issues.apache.org/jira/browse/THRIFT-2860) - Delphi server closes connection on unexpected exceptions -- [THRIFT-2868](https://issues.apache.org/jira/browse/THRIFT-2868) - Enhance error handling in the Go client +- [THRIFT-2868](https://issues.apache.org/jira/browse/THRIFT-2868) - Enhance error handling in the Go client - [THRIFT-2879](https://issues.apache.org/jira/browse/THRIFT-2879) - TMemoryBuffer: using lua string in wrong way - [THRIFT-2851](https://issues.apache.org/jira/browse/THRIFT-2851) - Remove strange public Peek() from Go transports - [THRIFT-2852](https://issues.apache.org/jira/browse/THRIFT-2852) - Better Open/IsOpen/Close behavior for StreamTransport. @@ -2140,7 +2216,7 @@ Released March 13, 2019 to backport a CVE fix to the popular 0.9.3 release. - [THRIFT-2849](https://issues.apache.org/jira/browse/THRIFT-2849) - Spell errors reported by codespell tool - [THRIFT-2870](https://issues.apache.org/jira/browse/THRIFT-2870) - C++ TJSONProtocol using locale dependent formatting - [THRIFT-2882](https://issues.apache.org/jira/browse/THRIFT-2882) - Lua Generator: using string.len function to get struct(map,list,set) size -- [THRIFT-2864](https://issues.apache.org/jira/browse/THRIFT-2864) - JSON generator missing from Visual Studio build project +- [THRIFT-2864](https://issues.apache.org/jira/browse/THRIFT-2864) - JSON generator missing from Visual Studio build project - [THRIFT-2878](https://issues.apache.org/jira/browse/THRIFT-2878) - Go validation support of required fields - [THRIFT-2873](https://issues.apache.org/jira/browse/THRIFT-2873) - TPipe and TPipeServer don't compile on Windows with UNICODE enabled - [THRIFT-2888](https://issues.apache.org/jira/browse/THRIFT-2888) - import of is missing in JSON generator @@ -2301,14 +2377,14 @@ Released March 13, 2019 to backport a CVE fix to the popular 0.9.3 release. - [THRIFT-3201](https://issues.apache.org/jira/browse/THRIFT-3201) - Capture github test artifacts for failed builds - [THRIFT-3266](https://issues.apache.org/jira/browse/THRIFT-3266) - c_glib: Multiple compiler warnings building unit tests - [THRIFT-3285](https://issues.apache.org/jira/browse/THRIFT-3285) - c_glib: Build library with all warnings enabled, no warnings generated -- [THRIFT-1954](https://issues.apache.org/jira/browse/THRIFT-1954) - Allow for a separate connection timeout value +- [THRIFT-1954](https://issues.apache.org/jira/browse/THRIFT-1954) - Allow for a separate connection timeout value - [THRIFT-2098](https://issues.apache.org/jira/browse/THRIFT-2098) - Add support for Qt5+ - [THRIFT-2199](https://issues.apache.org/jira/browse/THRIFT-2199) - Remove Dense protocol (was: move to Contrib) - [THRIFT-406](https://issues.apache.org/jira/browse/THRIFT-406) - C++ Test suite cleanup - [THRIFT-902](https://issues.apache.org/jira/browse/THRIFT-902) - socket and connect timeout in TSocket should be distinguished - [THRIFT-388](https://issues.apache.org/jira/browse/THRIFT-388) - Use a separate wire format for async calls - [THRIFT-727](https://issues.apache.org/jira/browse/THRIFT-727) - support native C++ language specific exception message -- [THRIFT-1784](https://issues.apache.org/jira/browse/THRIFT-1784) - pep-3110 compliance for exception handling +- [THRIFT-1784](https://issues.apache.org/jira/browse/THRIFT-1784) - pep-3110 compliance for exception handling - [THRIFT-1025](https://issues.apache.org/jira/browse/THRIFT-1025) - C++ ServerSocket should inherit from Socket with the necessary Ctor to listen on connections from a specific host - [THRIFT-2269](https://issues.apache.org/jira/browse/THRIFT-2269) - Can deploy libthrift-source.jar to maven center repository - [THRIFT-2804](https://issues.apache.org/jira/browse/THRIFT-2804) - Pull an interface out of TBaseAsyncProcessor @@ -2333,10 +2409,10 @@ Released March 13, 2019 to backport a CVE fix to the popular 0.9.3 release. - [THRIFT-2940](https://issues.apache.org/jira/browse/THRIFT-2940) - Allow installing Thrift from git as NPM module by providing package.json in top level directory - [THRIFT-2937](https://issues.apache.org/jira/browse/THRIFT-2937) - Allow setting a maximum frame size in TFramedTransport - [THRIFT-2976](https://issues.apache.org/jira/browse/THRIFT-2976) - nodejs: xhr and websocket support for browserify -- [THRIFT-2996](https://issues.apache.org/jira/browse/THRIFT-2996) - Test for Haxe 3.1.3 or better +- [THRIFT-2996](https://issues.apache.org/jira/browse/THRIFT-2996) - Test for Haxe 3.1.3 or better - [THRIFT-2969](https://issues.apache.org/jira/browse/THRIFT-2969) - nodejs: DRY up library tests - [THRIFT-2973](https://issues.apache.org/jira/browse/THRIFT-2973) - Update Haxe lib readme regarding Haxe 3.1.3 -- [THRIFT-2952](https://issues.apache.org/jira/browse/THRIFT-2952) - Improve handling of Server.Stop() +- [THRIFT-2952](https://issues.apache.org/jira/browse/THRIFT-2952) - Improve handling of Server.Stop() - [THRIFT-2964](https://issues.apache.org/jira/browse/THRIFT-2964) - nodejs: move protocols and transports into separate files - [THRIFT-2963](https://issues.apache.org/jira/browse/THRIFT-2963) - nodejs) - add test coverage - [THRIFT-3006](https://issues.apache.org/jira/browse/THRIFT-3006) - Attach 'omitempty' json tag for optional fields in Go From 1ef362cc62a761811294f390e0ead2785e12c9b0 Mon Sep 17 00:00:00 2001 From: Jens Geyer Date: Wed, 26 Jan 2022 22:38:04 +0100 Subject: [PATCH 03/14] THRIFT-5504 CA2254 Message template should be compile time constant Client netstd Patch: Jens Geyer --- lib/netstd/Thrift/GlobalSuppressions.cs | 31 +++++++++++++++++++ .../Thrift/Processor/ITAsyncProcessor.cs | 2 +- .../Thrift/Processor/TMultiplexedProcessor.cs | 5 ++- lib/netstd/Thrift/Protocol/TBinaryProtocol.cs | 2 -- .../Thrift/Protocol/TCompactProtocol.cs | 2 -- lib/netstd/Thrift/Protocol/TJSONProtocol.cs | 3 -- lib/netstd/Thrift/Protocol/TProtocol.cs | 1 + lib/netstd/Thrift/Protocol/ToString.cs | 8 ++--- lib/netstd/Thrift/Server/TServer.cs | 8 ++--- .../Thrift/Server/TServerEventHandler.cs | 12 +++++-- .../Thrift/Server/TSimpleAsyncServer.cs | 2 -- .../Thrift/Server/TThreadPoolAsyncServer.cs | 2 -- .../Thrift/Transport/Client/THttpTransport.cs | 2 -- .../Client/TMemoryBufferTransport.cs | 2 -- .../Transport/Layered/TBufferedTransport.cs | 9 ++---- .../Transport/Layered/TFramedTransport.cs | 6 ++-- .../Server/TServerSocketTransport.cs | 5 ++- 17 files changed, 62 insertions(+), 40 deletions(-) create mode 100644 lib/netstd/Thrift/GlobalSuppressions.cs diff --git a/lib/netstd/Thrift/GlobalSuppressions.cs b/lib/netstd/Thrift/GlobalSuppressions.cs new file mode 100644 index 000000000..eb7d3d789 --- /dev/null +++ b/lib/netstd/Thrift/GlobalSuppressions.cs @@ -0,0 +1,31 @@ +// Licensed to the Apache Software Foundation(ASF) under one +// or more contributor license agreements.See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership.The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + + +// This file is used by Code Analysis to maintain SuppressMessage +// attributes that are applied to this project. +// Project-level suppressions either have no target or are given +// a specific target and scoped to a namespace, type, member, etc. + +using System.Diagnostics.CodeAnalysis; + +// suppress certain messages for compatibility reasons with older C# versions we want to support +[assembly: SuppressMessage("Style", "IDE0057", Justification = "compatibility", Scope = "module")] +[assembly: SuppressMessage("Style", "IDE0066", Justification = "compatibility", Scope = "module")] +[assembly: SuppressMessage("Style", "IDE0090", Justification = "compatibility", Scope = "module")] +[assembly: SuppressMessage("Style", "IDE0063", Justification = "compatibility", Scope = "module")] + diff --git a/lib/netstd/Thrift/Processor/ITAsyncProcessor.cs b/lib/netstd/Thrift/Processor/ITAsyncProcessor.cs index f5b8d16e3..0ef683d3c 100644 --- a/lib/netstd/Thrift/Processor/ITAsyncProcessor.cs +++ b/lib/netstd/Thrift/Processor/ITAsyncProcessor.cs @@ -23,6 +23,6 @@ namespace Thrift.Processor { public interface ITAsyncProcessor { - Task ProcessAsync(TProtocol iprot, TProtocol oprot, CancellationToken cancellationToken = default(CancellationToken)); + Task ProcessAsync(TProtocol iprot, TProtocol oprot, CancellationToken cancellationToken = default); } } diff --git a/lib/netstd/Thrift/Processor/TMultiplexedProcessor.cs b/lib/netstd/Thrift/Processor/TMultiplexedProcessor.cs index b19221054..9759058b3 100644 --- a/lib/netstd/Thrift/Processor/TMultiplexedProcessor.cs +++ b/lib/netstd/Thrift/Processor/TMultiplexedProcessor.cs @@ -65,8 +65,7 @@ namespace Thrift.Processor // Create a new TMessage, something that can be consumed by any TProtocol var serviceName = message.Name.Substring(0, index); - ITAsyncProcessor actualProcessor; - if (!_serviceProcessorMap.TryGetValue(serviceName, out actualProcessor)) + if (!_serviceProcessorMap.TryGetValue(serviceName, out ITAsyncProcessor actualProcessor)) { await FailAsync(oprot, message, TApplicationException.ExceptionType.InternalError, $"Service name not found: {serviceName}. Did you forget to call RegisterProcessor()?", @@ -103,7 +102,7 @@ namespace Thrift.Processor _serviceProcessorMap.Add(serviceName, processor); } - private async Task FailAsync(TProtocol oprot, TMessage message, TApplicationException.ExceptionType extype, + private static async Task FailAsync(TProtocol oprot, TMessage message, TApplicationException.ExceptionType extype, string etxt, CancellationToken cancellationToken) { var appex = new TApplicationException(extype, etxt); diff --git a/lib/netstd/Thrift/Protocol/TBinaryProtocol.cs b/lib/netstd/Thrift/Protocol/TBinaryProtocol.cs index 9c2346919..eee137ca1 100644 --- a/lib/netstd/Thrift/Protocol/TBinaryProtocol.cs +++ b/lib/netstd/Thrift/Protocol/TBinaryProtocol.cs @@ -23,8 +23,6 @@ using System.Threading.Tasks; using Thrift.Protocol.Entities; using Thrift.Transport; -#pragma warning disable IDE0079 // unnecessary suppression -#pragma warning disable IDE0066 // use switch expression namespace Thrift.Protocol { diff --git a/lib/netstd/Thrift/Protocol/TCompactProtocol.cs b/lib/netstd/Thrift/Protocol/TCompactProtocol.cs index 3758174cc..6893ad476 100644 --- a/lib/netstd/Thrift/Protocol/TCompactProtocol.cs +++ b/lib/netstd/Thrift/Protocol/TCompactProtocol.cs @@ -26,8 +26,6 @@ using System.Threading.Tasks; using Thrift.Protocol.Entities; using Thrift.Transport; -#pragma warning disable IDE0079 // unnecessary suppression -#pragma warning disable IDE0066 // use switch expression namespace Thrift.Protocol { diff --git a/lib/netstd/Thrift/Protocol/TJSONProtocol.cs b/lib/netstd/Thrift/Protocol/TJSONProtocol.cs index 081f42e96..8799026ba 100644 --- a/lib/netstd/Thrift/Protocol/TJSONProtocol.cs +++ b/lib/netstd/Thrift/Protocol/TJSONProtocol.cs @@ -27,9 +27,6 @@ using Thrift.Protocol.Entities; using Thrift.Protocol.Utilities; using Thrift.Transport; -#pragma warning disable IDE0079 // unnecessary suppression -#pragma warning disable IDE0063 // simplify using -#pragma warning disable IDE0066 // use switch expression namespace Thrift.Protocol { diff --git a/lib/netstd/Thrift/Protocol/TProtocol.cs b/lib/netstd/Thrift/Protocol/TProtocol.cs index 5b1bec16b..cd9383389 100644 --- a/lib/netstd/Thrift/Protocol/TProtocol.cs +++ b/lib/netstd/Thrift/Protocol/TProtocol.cs @@ -50,6 +50,7 @@ namespace Thrift.Protocol public void Dispose() { Dispose(true); + GC.SuppressFinalize(this); } public void IncrementRecursionDepth() diff --git a/lib/netstd/Thrift/Protocol/ToString.cs b/lib/netstd/Thrift/Protocol/ToString.cs index 14fa5204f..50dd6df6d 100644 --- a/lib/netstd/Thrift/Protocol/ToString.cs +++ b/lib/netstd/Thrift/Protocol/ToString.cs @@ -47,15 +47,15 @@ namespace Thrift.Protocol if (first_child) first_child = false; else - sb.Append(","); + sb.Append(','); sb.Append("{ "); pair.Key.ToString(sb); sb.Append(", "); pair.Value.ToString(sb); - sb.Append("}"); + sb.Append('}'); } - sb.Append("}"); + sb.Append('}'); } else if (self is IEnumerable) { @@ -65,7 +65,7 @@ namespace Thrift.Protocol elm.ToString(sb, first_child); first_child = false; } - sb.Append("}"); + sb.Append('}'); } else if (self is TBase) { diff --git a/lib/netstd/Thrift/Server/TServer.cs b/lib/netstd/Thrift/Server/TServer.cs index 3fd0bc531..3d4f3fc20 100644 --- a/lib/netstd/Thrift/Server/TServer.cs +++ b/lib/netstd/Thrift/Server/TServer.cs @@ -35,7 +35,7 @@ namespace Thrift.Server protected TProtocolFactory OutputProtocolFactory; protected TTransportFactory OutputTransportFactory; - protected TServerEventHandler ServerEventHandler; + protected ITServerEventHandler ServerEventHandler; protected TServerTransport ServerTransport; protected TServer(ITProcessorFactory processorFactory, TServerTransport serverTransport, @@ -52,12 +52,12 @@ namespace Thrift.Server Logger = logger; // null is absolutely legal } - public void SetEventHandler(TServerEventHandler seh) + public void SetEventHandler(ITServerEventHandler seh) { ServerEventHandler = seh; } - public TServerEventHandler GetEventHandler() + public ITServerEventHandler GetEventHandler() { return ServerEventHandler; } @@ -66,7 +66,7 @@ namespace Thrift.Server protected void LogError( string msg) { if (Logger != null) - Logger.LogError(msg); + Logger.LogError("{Msg}",msg); // NOTE: Log message template, not string interpolation! } public abstract void Stop(); diff --git a/lib/netstd/Thrift/Server/TServerEventHandler.cs b/lib/netstd/Thrift/Server/TServerEventHandler.cs index 69314efd6..9226b42a1 100644 --- a/lib/netstd/Thrift/Server/TServerEventHandler.cs +++ b/lib/netstd/Thrift/Server/TServerEventHandler.cs @@ -25,10 +25,18 @@ namespace Thrift.Server //TODO: replacement by event? /// - /// Interface implemented by server users to handle events from the server + /// Interface implemented by server users to handle events from the server /// + /// Replaced by ITServerEventHandler // ReSharper disable once InconsistentNaming - public interface TServerEventHandler + #pragma warning disable IDE1006 + public interface TServerEventHandler : ITServerEventHandler { } + #pragma warning restore IDE1006 + + /// + /// Interface implemented by server users to handle events from the server + /// + public interface ITServerEventHandler { /// /// Called before the server begins */ diff --git a/lib/netstd/Thrift/Server/TSimpleAsyncServer.cs b/lib/netstd/Thrift/Server/TSimpleAsyncServer.cs index d46d58a75..f1f6277d5 100644 --- a/lib/netstd/Thrift/Server/TSimpleAsyncServer.cs +++ b/lib/netstd/Thrift/Server/TSimpleAsyncServer.cs @@ -23,8 +23,6 @@ using Thrift.Processor; using System.Threading.Tasks; using Microsoft.Extensions.Logging; -#pragma warning disable IDE0079 // remove unnecessary pragmas -#pragma warning disable IDE0063 // using can be simplified, we don't namespace Thrift.Server { diff --git a/lib/netstd/Thrift/Server/TThreadPoolAsyncServer.cs b/lib/netstd/Thrift/Server/TThreadPoolAsyncServer.cs index ba1834cde..efa1698da 100644 --- a/lib/netstd/Thrift/Server/TThreadPoolAsyncServer.cs +++ b/lib/netstd/Thrift/Server/TThreadPoolAsyncServer.cs @@ -29,8 +29,6 @@ using Thrift.Processor; using System.Threading.Tasks; using Microsoft.Extensions.Logging; -#pragma warning disable IDE0079 // remove unnecessary pragmas -#pragma warning disable IDE0063 // using can be simplified, we don't namespace Thrift.Server { diff --git a/lib/netstd/Thrift/Transport/Client/THttpTransport.cs b/lib/netstd/Thrift/Transport/Client/THttpTransport.cs index 4ca439e4f..60ed59c67 100644 --- a/lib/netstd/Thrift/Transport/Client/THttpTransport.cs +++ b/lib/netstd/Thrift/Transport/Client/THttpTransport.cs @@ -25,8 +25,6 @@ using System.Security.Cryptography.X509Certificates; using System.Threading; using System.Threading.Tasks; -#pragma warning disable IDE0079 // unnecessary suppression -#pragma warning disable IDE0063 // simplify using namespace Thrift.Transport.Client { diff --git a/lib/netstd/Thrift/Transport/Client/TMemoryBufferTransport.cs b/lib/netstd/Thrift/Transport/Client/TMemoryBufferTransport.cs index a666c7c97..5773d30cb 100644 --- a/lib/netstd/Thrift/Transport/Client/TMemoryBufferTransport.cs +++ b/lib/netstd/Thrift/Transport/Client/TMemoryBufferTransport.cs @@ -21,8 +21,6 @@ using System.IO; using System.Threading; using System.Threading.Tasks; -#pragma warning disable IDE0079 // unused suppression -#pragma warning disable IDE0066 // requires C# 8 namespace Thrift.Transport.Client { diff --git a/lib/netstd/Thrift/Transport/Layered/TBufferedTransport.cs b/lib/netstd/Thrift/Transport/Layered/TBufferedTransport.cs index dee52ddb1..271a9946c 100644 --- a/lib/netstd/Thrift/Transport/Layered/TBufferedTransport.cs +++ b/lib/netstd/Thrift/Transport/Layered/TBufferedTransport.cs @@ -110,8 +110,7 @@ namespace Thrift.Transport // buffer a new chunk of bytes from the underlying transport ReadBuffer.Length = ReadBuffer.Capacity; - ArraySegment bufSegment; - ReadBuffer.TryGetBuffer(out bufSegment); + ReadBuffer.TryGetBuffer(out ArraySegment bufSegment); ReadBuffer.Length = await InnerTransport.ReadAsync(bufSegment.Array, 0, bufSegment.Count, cancellationToken); ReadBuffer.Position = 0; @@ -134,8 +133,7 @@ namespace Thrift.Transport var free = WriteBuffer.Capacity - WriteBuffer.Length; if (length > free) { - ArraySegment bufSegment; - WriteBuffer.TryGetBuffer(out bufSegment); + WriteBuffer.TryGetBuffer(out ArraySegment bufSegment); await InnerTransport.WriteAsync(bufSegment.Array, 0, bufSegment.Count, cancellationToken); WriteBuffer.SetLength(0); } @@ -163,8 +161,7 @@ namespace Thrift.Transport if (WriteBuffer.Length > 0) { - ArraySegment bufSegment; - WriteBuffer.TryGetBuffer(out bufSegment); + WriteBuffer.TryGetBuffer(out ArraySegment bufSegment); await InnerTransport.WriteAsync(bufSegment.Array, 0, bufSegment.Count, cancellationToken); WriteBuffer.SetLength(0); } diff --git a/lib/netstd/Thrift/Transport/Layered/TFramedTransport.cs b/lib/netstd/Thrift/Transport/Layered/TFramedTransport.cs index f56098601..722df7672 100644 --- a/lib/netstd/Thrift/Transport/Layered/TFramedTransport.cs +++ b/lib/netstd/Thrift/Transport/Layered/TFramedTransport.cs @@ -97,8 +97,7 @@ namespace Thrift.Transport ReadBuffer.SetLength(size); ReadBuffer.Seek(0, SeekOrigin.Begin); - ArraySegment bufSegment; - ReadBuffer.TryGetBuffer(out bufSegment); + ReadBuffer.TryGetBuffer(out ArraySegment bufSegment); await InnerTransport.ReadAllAsync(bufSegment.Array, 0, size, cancellationToken); } @@ -129,8 +128,7 @@ namespace Thrift.Transport throw new TTransportException(TTransportException.ExceptionType.NotOpen); } - ArraySegment bufSegment; - WriteBuffer.TryGetBuffer(out bufSegment); + WriteBuffer.TryGetBuffer(out ArraySegment bufSegment); int dataLen = bufSegment.Count - HeaderSize; if (dataLen < 0) diff --git a/lib/netstd/Thrift/Transport/Server/TServerSocketTransport.cs b/lib/netstd/Thrift/Transport/Server/TServerSocketTransport.cs index d7421c944..3a4fed468 100644 --- a/lib/netstd/Thrift/Transport/Server/TServerSocketTransport.cs +++ b/lib/netstd/Thrift/Transport/Server/TServerSocketTransport.cs @@ -113,8 +113,11 @@ namespace Thrift.Transport.Server try { TTransport tSocketTransport = null; + #if NET6_0_OR_GREATER + var tcpClient = await _server.AcceptTcpClientAsync(cancellationToken); + #else var tcpClient = await _server.AcceptTcpClientAsync(); - + #endif try { tSocketTransport = new TSocketTransport(tcpClient, Configuration) From d68f03c0edc539bc1757b2ac358dbd43c44bc651 Mon Sep 17 00:00:00 2001 From: Jens Geyer Date: Mon, 24 Jan 2022 22:26:21 +0100 Subject: [PATCH 04/14] Updated changes.md for 0.16.0 --- CHANGES.md | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index c1a903484..97769c5f6 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -17,8 +17,9 @@ ### C++ -- [THRIFT-5456](https://issues.apache.org/jira/browse/THRIFT-5456) - ServerSocket doesn't ignore SIGPIPE - [THRIFT-5187](https://issues.apache.org/jira/browse/THRIFT-5187) - Add support for Unix domain sockets on Windows 10 or later +- [THRIFT-5418](https://issues.apache.org/jira/browse/THRIFT-5418) - C++ to_string and ostream operator not always generated +- [THRIFT-5456](https://issues.apache.org/jira/browse/THRIFT-5456) - ServerSocket doesn't ignore SIGPIPE ### Common LISP @@ -31,8 +32,8 @@ ### Go - [THRIFT-5461](https://issues.apache.org/jira/browse/THRIFT-5461) - Invalid golang code generated for optional set with a default value -- [THRIFT-5490](https://issues.apache.org/jira/browse/THRIFT-5490) - Improve memory efficiency in go THeader implementation - [THRIFT-5469](https://issues.apache.org/jira/browse/THRIFT-5469) - Go lib skip map value may cause stack overflow +- [THRIFT-5490](https://issues.apache.org/jira/browse/THRIFT-5490) - Improve memory efficiency in go THeader implementation ### Haxe @@ -40,8 +41,8 @@ ### Java -- [THRIFT-5486](https://issues.apache.org/jira/browse/THRIFT-5486) - fix issues found by spotbugs - [THRIFT-5443](https://issues.apache.org/jira/browse/THRIFT-5443) - add support for partial deserialization of Thrift +- [THRIFT-5486](https://issues.apache.org/jira/browse/THRIFT-5486) - fix issues found by spotbugs ### JavaScript @@ -49,27 +50,28 @@ ### netstd -- [THRIFT-5500](https://issues.apache.org/jira/browse/THRIFT-5500) - Uncompilable code when .thrift struct 'System' exists -- [THRIFT-5479](https://issues.apache.org/jira/browse/THRIFT-5479) - Add net 6 support -- [THRIFT-5408](https://issues.apache.org/jira/browse/THRIFT-5408) - Support for deprecated methods (via annotation) -- [THRIFT-5481](https://issues.apache.org/jira/browse/THRIFT-5481) - consolidate netstd server implementation details into one common model -- [THRIFT-5480](https://issues.apache.org/jira/browse/THRIFT-5480) - TThreadPoolAsyncServer using TFramedTransport mistakenly drops client - [THRIFT-5401](https://issues.apache.org/jira/browse/THRIFT-5401) - MaxMessageSize reached exception thrown in TEndpointTransport +- [THRIFT-5408](https://issues.apache.org/jira/browse/THRIFT-5408) - Support for deprecated methods (via annotation) +- [THRIFT-5479](https://issues.apache.org/jira/browse/THRIFT-5479) - Add net 6 support +- [THRIFT-5480](https://issues.apache.org/jira/browse/THRIFT-5480) - TThreadPoolAsyncServer using TFramedTransport mistakenly drops client +- [THRIFT-5481](https://issues.apache.org/jira/browse/THRIFT-5481) - consolidate netstd server implementation details into one common model +- [THRIFT-5500](https://issues.apache.org/jira/browse/THRIFT-5500) - Uncompilable code when .thrift struct 'System' exists +- [THRIFT-5504](https://issues.apache.org/jira/browse/THRIFT-5504) - CA2254 Message template should be compile time constant ### Perl -- [THRIFT-5416](https://issues.apache.org/jira/browse/THRIFT-5416) - Allow UDP Socket Client In Perl - [THRIFT-5055](https://issues.apache.org/jira/browse/THRIFT-5055) - Fix build-cpan-dist.sh to create a CPAN distribution correctly +- [THRIFT-5416](https://issues.apache.org/jira/browse/THRIFT-5416) - Allow UDP Socket Client In Perl ### Python -- [THRIFT-5488](https://issues.apache.org/jira/browse/THRIFT-5488) - SystemError when using fast binary or compact protocol in python 3.10 - [THRIFT-5454](https://issues.apache.org/jira/browse/THRIFT-5454) - Python TProcessPoolServer does not spawn expected number of worker processes +- [THRIFT-5488](https://issues.apache.org/jira/browse/THRIFT-5488) - SystemError when using fast binary or compact protocol in python 3.10 ### Rust -- [THRIFT-5457](https://issues.apache.org/jira/browse/THRIFT-5457) - Travis fails consistently on a Rust dependency - [THRIFT-5452](https://issues.apache.org/jira/browse/THRIFT-5452) - Make server optional +- [THRIFT-5457](https://issues.apache.org/jira/browse/THRIFT-5457) - Travis fails consistently on a Rust dependency ### Test Suite From f99375ef87a0540e7af6cf167522ba0cbb1a0b21 Mon Sep 17 00:00:00 2001 From: Jens Geyer Date: Mon, 31 Jan 2022 18:52:30 +0100 Subject: [PATCH 05/14] THRIFT-5504 CA2254 Message template should be compile time constant Client netstd Patch: Jens Geyer --- compiler/cpp/src/thrift/generate/t_netstd_generator.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiler/cpp/src/thrift/generate/t_netstd_generator.cc b/compiler/cpp/src/thrift/generate/t_netstd_generator.cc index 9c87df49b..ff2227424 100644 --- a/compiler/cpp/src/thrift/generate/t_netstd_generator.cc +++ b/compiler/cpp/src/thrift/generate/t_netstd_generator.cc @@ -2428,7 +2428,7 @@ void t_netstd_generator::generate_process_function_async(ostream& out, t_service out << indent() << "var " << tmpvar << " = $\"Error occurred in {GetType().FullName}: {" << tmpex << ".Message}\";" << endl; out << indent() << "if(_logger != null)" << endl; indent_up(); - out << indent() << "_logger.LogError(" << tmpex << ", " << tmpvar << ");" << endl; + out << indent() << "_logger.LogError(\"{Exception}, {Message}\", " << tmpex << ", " << tmpvar << ");" << endl; indent_down(); out << indent() << "else" << endl; indent_up(); From a10d401996690d3e5387341c1248b7d1028d9ac7 Mon Sep 17 00:00:00 2001 From: Jens Geyer Date: Wed, 2 Feb 2022 22:57:46 +0100 Subject: [PATCH 06/14] FIX: missing EXTRA_DIST entries --- lib/go/test/Makefile.am | 2 ++ lib/go/test/fuzz/Makefile.am | 5 +++++ lib/netstd/Makefile.am | 3 +++ lib/php/Makefile.am | 2 ++ lib/rs/test_recursive/src/Makefile.am | 1 + lib/rs/test_recursive/src/maintenance/Makefile.am | 1 + lib/rs/test_recursive/src/transit/Makefile.am | 1 + lib/rs/test_recursive/src/transit/light/Makefile.am | 1 + lib/rs/test_recursive/src/transit/services/Makefile.am | 1 + test/Makefile.am | 1 + 10 files changed, 18 insertions(+) diff --git a/lib/go/test/Makefile.am b/lib/go/test/Makefile.am index cd0f33c84..4b3ecda93 100644 --- a/lib/go/test/Makefile.am +++ b/lib/go/test/Makefile.am @@ -127,6 +127,8 @@ EXTRA_DIST = \ ConflictNamespaceTestB.thrift \ ConflictNamespaceTestC.thrift \ ConflictNamespaceTestD.thrift \ + ConflictNamespaceTestE.thrift \ + ConflictNamespaceTestF.thrift \ ConflictNamespaceTestSuperThing.thrift \ ConstOptionalField.thrift \ ConstOptionalFieldImport.thrift \ diff --git a/lib/go/test/fuzz/Makefile.am b/lib/go/test/fuzz/Makefile.am index a6abfc57f..391c84a08 100644 --- a/lib/go/test/fuzz/Makefile.am +++ b/lib/go/test/fuzz/Makefile.am @@ -29,3 +29,8 @@ check: gopathfuzz clean-local: $(RM) -r gopathfuzz gen-go +EXTRA_DIST = \ + fuzz.go \ + fuzz_test.go \ + go.mod \ + go.sum diff --git a/lib/netstd/Makefile.am b/lib/netstd/Makefile.am index f1a87a242..cf4d134dd 100644 --- a/lib/netstd/Makefile.am +++ b/lib/netstd/Makefile.am @@ -42,6 +42,7 @@ clean-local: EXTRA_DIST = \ README.md \ Directory.Build.props \ + .editorconfig \ Benchmarks/Thrift.Benchmarks \ Tests/Thrift.IntegrationTests/Protocols \ Tests/Thrift.IntegrationTests/Thrift.IntegrationTests.csproj \ @@ -53,12 +54,14 @@ EXTRA_DIST = \ Tests/Thrift.Tests/Collections \ Tests/Thrift.Tests/DataModel \ Tests/Thrift.Tests/Protocols \ + Tests/Thrift.Tests/Transports \ Tests/Thrift.Tests/Thrift.Tests.csproj \ Thrift/Collections \ Thrift/Processor \ Thrift/Properties \ Thrift/Protocol \ Thrift/Server \ + Thrift/GlobalSuppressions.cs \ Thrift/TApplicationException.cs \ Thrift/TBaseClient.cs \ Thrift/TConfiguration.cs \ diff --git a/lib/php/Makefile.am b/lib/php/Makefile.am index 1857d034b..eecda33e3 100755 --- a/lib/php/Makefile.am +++ b/lib/php/Makefile.am @@ -140,6 +140,8 @@ EXTRA_DIST = \ src/ext/thrift_protocol/config.w32 \ src/ext/thrift_protocol/php_thrift_protocol.cpp \ src/ext/thrift_protocol/php_thrift_protocol.h \ + src/ext/thrift_protocol/php_thrift_protocol.stub.php + src/ext/thrift_protocol/php_thrift_protocol_arginfo.h \ src/Thrift.php \ src/TStringUtils.php \ coding_standards.md \ diff --git a/lib/rs/test_recursive/src/Makefile.am b/lib/rs/test_recursive/src/Makefile.am index c21a94cd2..4bfd557d0 100644 --- a/lib/rs/test_recursive/src/Makefile.am +++ b/lib/rs/test_recursive/src/Makefile.am @@ -30,4 +30,5 @@ clean-local: -$(RM) vehicles.rs EXTRA_DIST = \ + lib.rs \ Vehicles.thrift diff --git a/lib/rs/test_recursive/src/maintenance/Makefile.am b/lib/rs/test_recursive/src/maintenance/Makefile.am index c24813a12..e2526bdc9 100644 --- a/lib/rs/test_recursive/src/maintenance/Makefile.am +++ b/lib/rs/test_recursive/src/maintenance/Makefile.am @@ -30,4 +30,5 @@ clean-local: -$(RM) maintenance_facility.rs EXTRA_DIST = \ + mod.rs \ MaintenanceFacility.thrift diff --git a/lib/rs/test_recursive/src/transit/Makefile.am b/lib/rs/test_recursive/src/transit/Makefile.am index 731826546..908becb25 100644 --- a/lib/rs/test_recursive/src/transit/Makefile.am +++ b/lib/rs/test_recursive/src/transit/Makefile.am @@ -35,6 +35,7 @@ clean-local: -$(RM) transporters.rs EXTRA_DIST = \ + mod.rs \ Buses.thrift \ Trains.thrift \ Transporters.thrift diff --git a/lib/rs/test_recursive/src/transit/light/Makefile.am b/lib/rs/test_recursive/src/transit/light/Makefile.am index c09c39d99..88fd5310c 100644 --- a/lib/rs/test_recursive/src/transit/light/Makefile.am +++ b/lib/rs/test_recursive/src/transit/light/Makefile.am @@ -32,5 +32,6 @@ clean-local: -$(RM) streetcars.rs EXTRA_DIST = \ + mod.rs \ LightRail.thrift \ Streetcars.thrift diff --git a/lib/rs/test_recursive/src/transit/services/Makefile.am b/lib/rs/test_recursive/src/transit/services/Makefile.am index f70e9198d..12e9e2935 100644 --- a/lib/rs/test_recursive/src/transit/services/Makefile.am +++ b/lib/rs/test_recursive/src/transit/services/Makefile.am @@ -30,4 +30,5 @@ clean-local: -$(RM) city_services.rs EXTRA_DIST = \ + mod.rs \ CityServices.thrift diff --git a/test/Makefile.am b/test/Makefile.am index 15e2f1bcc..b289e5308 100755 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -134,6 +134,7 @@ EXTRA_DIST = \ rb \ rs \ threads \ + partial \ AnnotationTest.thrift \ BrokenConstants.thrift \ ConstantsDemo.thrift \ From 48d1a707d1690bf79f1eb280d88580652d81a3cc Mon Sep 17 00:00:00 2001 From: Jens Geyer Date: Wed, 2 Feb 2022 23:03:58 +0100 Subject: [PATCH 07/14] FIX: missing EXTRA_DIST entries --- lib/netstd/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/netstd/Makefile.am b/lib/netstd/Makefile.am index cf4d134dd..47b380309 100644 --- a/lib/netstd/Makefile.am +++ b/lib/netstd/Makefile.am @@ -42,7 +42,6 @@ clean-local: EXTRA_DIST = \ README.md \ Directory.Build.props \ - .editorconfig \ Benchmarks/Thrift.Benchmarks \ Tests/Thrift.IntegrationTests/Protocols \ Tests/Thrift.IntegrationTests/Thrift.IntegrationTests.csproj \ @@ -56,6 +55,7 @@ EXTRA_DIST = \ Tests/Thrift.Tests/Protocols \ Tests/Thrift.Tests/Transports \ Tests/Thrift.Tests/Thrift.Tests.csproj \ + Thrift/.editorconfig \ Thrift/Collections \ Thrift/Processor \ Thrift/Properties \ From f087ec48a2d043a93db36dfa44b69785b5dff1e2 Mon Sep 17 00:00:00 2001 From: Jens Geyer Date: Wed, 2 Feb 2022 23:14:52 +0100 Subject: [PATCH 08/14] FIX: missing EXTRA_DIST entries --- Makefile.am | 2 ++ lib/php/Makefile.am | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index a1322098b..0fe065f40 100755 --- a/Makefile.am +++ b/Makefile.am @@ -156,6 +156,8 @@ EXTRA_DIST = \ doap.rdf \ doc \ dub.json \ + go.mod \ + go.sum \ jitpack.yml \ LANGUAGES.md \ LICENSE \ diff --git a/lib/php/Makefile.am b/lib/php/Makefile.am index eecda33e3..4ec6be35b 100755 --- a/lib/php/Makefile.am +++ b/lib/php/Makefile.am @@ -140,7 +140,7 @@ EXTRA_DIST = \ src/ext/thrift_protocol/config.w32 \ src/ext/thrift_protocol/php_thrift_protocol.cpp \ src/ext/thrift_protocol/php_thrift_protocol.h \ - src/ext/thrift_protocol/php_thrift_protocol.stub.php + src/ext/thrift_protocol/php_thrift_protocol.stub.php \ src/ext/thrift_protocol/php_thrift_protocol_arginfo.h \ src/Thrift.php \ src/TStringUtils.php \ From b9fe9c2417f26fa6e1d9383b8fa9d50ff9a96d65 Mon Sep 17 00:00:00 2001 From: Jens Geyer Date: Thu, 3 Feb 2022 01:00:31 +0100 Subject: [PATCH 09/14] FIX: test left too early on false premise --- test/netstd/Client/Performance/PerformanceTests.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/test/netstd/Client/Performance/PerformanceTests.cs b/test/netstd/Client/Performance/PerformanceTests.cs index c1f00ddf8..6ac3aed86 100644 --- a/test/netstd/Client/Performance/PerformanceTests.cs +++ b/test/netstd/Client/Performance/PerformanceTests.cs @@ -132,10 +132,12 @@ namespace Client.Tests { var stop = new Stopwatch(); - if ((Testdata is null) || (Transport is null)) + if (Testdata is null) throw new Exception("unexpected internal state"); var proto = await factory(true); + if (Transport is null) + throw new Exception("unexpected internal state"); stop.Start(); await Testdata.WriteAsync(proto, Cancel.Token); await Transport.FlushAsync(Cancel.Token); @@ -146,6 +148,8 @@ namespace Client.Tests var restored = new CrazyNesting(); proto = await factory(false); + if (Transport is null) + throw new Exception("unexpected internal state"); stop.Start(); await restored.ReadAsync(proto, Cancel.Token); stop.Stop(); From 56a840aa176494c5875cba7faff9dfc16bf8f831 Mon Sep 17 00:00:00 2001 From: Yuxuan 'fishy' Wang Date: Thu, 3 Feb 2022 10:44:53 -0800 Subject: [PATCH 10/14] THRIFT-5509: Close connection in IsOpen Client: go When the connectivity check failed in IsOpen, close the connection explicitly to avoid connection leaks. This is Path 2 of THRIFT-5509. --- lib/go/thrift/socket_conn.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/go/thrift/socket_conn.go b/lib/go/thrift/socket_conn.go index 5619d9626..bbb5b7d15 100644 --- a/lib/go/thrift/socket_conn.go +++ b/lib/go/thrift/socket_conn.go @@ -20,6 +20,7 @@ package thrift import ( + "errors" "net" "sync/atomic" ) @@ -83,7 +84,17 @@ func (sc *socketConn) IsOpen() bool { if !sc.isValid() { return false } - return sc.checkConn() == nil + if err := sc.checkConn(); err != nil { + if !errors.Is(err, net.ErrClosed) { + // The connectivity check failed and the error is not + // that the connection is already closed, we need to + // close the connection explicitly here to avoid + // connection leaks. + sc.Close() + } + return false + } + return true } // Read implements io.Reader. From f18a8f34e21b09a389e93114ae75375b53724b39 Mon Sep 17 00:00:00 2001 From: Jens Geyer Date: Fri, 4 Feb 2022 22:38:03 +0100 Subject: [PATCH 11/14] Update changelog for 0.16.0 --- CHANGES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.md b/CHANGES.md index 97769c5f6..85a541a7b 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -34,6 +34,7 @@ - [THRIFT-5461](https://issues.apache.org/jira/browse/THRIFT-5461) - Invalid golang code generated for optional set with a default value - [THRIFT-5469](https://issues.apache.org/jira/browse/THRIFT-5469) - Go lib skip map value may cause stack overflow - [THRIFT-5490](https://issues.apache.org/jira/browse/THRIFT-5490) - Improve memory efficiency in go THeader implementation +- [THRIFT-5509](https://issues.apache.org/jira/browse/THRIFT-5509) - Potential connection leaks caused by the connectivity check ### Haxe From 303139410616ab3e580aa6aead1001118adee243 Mon Sep 17 00:00:00 2001 From: Yuxuan 'fishy' Wang Date: Tue, 8 Feb 2022 15:07:31 -0800 Subject: [PATCH 12/14] THRIFT-5509: Suppress noisy log from go's TSimpleServer Client: go This is a follow up of 6f33b0470. After we proactively closed the client connection, processor.Process could return NOT_OPEN as a result, and those errors being logged will cause the log to be very noisy. This will also be cherry-picked into 0.16.0 branch. --- lib/go/thrift/simple_server.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/go/thrift/simple_server.go b/lib/go/thrift/simple_server.go index 563cbfc69..02863ec43 100644 --- a/lib/go/thrift/simple_server.go +++ b/lib/go/thrift/simple_server.go @@ -238,7 +238,7 @@ func (p *TSimpleServer) Stop() error { return nil } -// If err is actually EOF, return nil, otherwise return err as-is. +// If err is actually EOF or NOT_OPEN, return nil, otherwise return err as-is. func treatEOFErrorsAsNil(err error) error { if err == nil { return nil @@ -247,7 +247,11 @@ func treatEOFErrorsAsNil(err error) error { return nil } var te TTransportException - if errors.As(err, &te) && te.TypeId() == END_OF_FILE { + // NOT_OPEN returned by processor.Process is usually caused by client + // abandoning the connection (e.g. client side time out, or just client + // closes connections from the pool because of shutting down). + // Those logs will be very noisy, so suppress those logs as well. + if errors.As(err, &te) && (te.TypeId() == END_OF_FILE || te.TypeId() == NOT_OPEN) { return nil } return err From a8e3b758af65feefcc55b5d46024a102a3ff494b Mon Sep 17 00:00:00 2001 From: Yuxuan 'fishy' Wang Date: Tue, 8 Feb 2022 09:33:47 -0800 Subject: [PATCH 13/14] THRIFT-5512: Update java dependencies Update java dependencies according to the suggestions from: https://mvnrepository.com/artifact/org.apache.thrift/libthrift/0.15.0 --- lib/java/gradle.properties | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/java/gradle.properties b/lib/java/gradle.properties index fdd7e1543..fbb194dc7 100644 --- a/lib/java/gradle.properties +++ b/lib/java/gradle.properties @@ -25,12 +25,12 @@ maven-repository-url=https://repository.apache.org/service/local/staging/deploy/ maven-repository-id=apache.releases.https # Dependency versions -httpclient.version=4.5.10 -httpcore.version=4.4.12 -slf4j.version=1.7.28 +httpclient.version=4.5.13 +httpcore.version=4.4.15 +slf4j.version=1.7.35 servlet.version=4.0.1 tomcat.embed.version=9.0.43 -junit.version=4.12 +junit.version=4.13.2 mockito.version=1.10.19 javax.annotation.version=1.3.2 -commons-lang3.version=3.12 \ No newline at end of file +commons-lang3.version=3.12 From 2a93df80f27739ccabb5b885cb12a8dc7595ecdf Mon Sep 17 00:00:00 2001 From: Jens Geyer Date: Wed, 9 Feb 2022 20:46:41 +0100 Subject: [PATCH 14/14] Update changelog for 0.16.0 --- CHANGES.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGES.md b/CHANGES.md index 85a541a7b..805c0d94a 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -44,6 +44,7 @@ - [THRIFT-5443](https://issues.apache.org/jira/browse/THRIFT-5443) - add support for partial deserialization of Thrift - [THRIFT-5486](https://issues.apache.org/jira/browse/THRIFT-5486) - fix issues found by spotbugs +- [THRIFT-5512](https://issues.apache.org/jira/browse/THRIFT-5512) - Update java dependencies ### JavaScript