thrift-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ben Craig <>
Subject How to post a multi-issue patch?
Date Fri, 09 Nov 2012 20:58:30 GMT
I have a patch that I am ready to post to JIRA.  It resolves a few 
problems that have already been reported, and it makes some additional 
improvements not currently on JIRA.  However, these improvements and bug 
fixes touch a lot of files, with parts of multiple bug fixes in the same 
file.  Separating them out isn't easy. 

What is the preferred way to report these "issues" and post this patch?

These are all in the C++ Library.  Here is a summary of what I changed. 
All of these fixes make a ~5000 line patch (though a lot of that is 
deleted lines).
*   General cleanup of the msvc project
*   Using HAVE_CONFIG_H instead of force including files
*   Getting rid of some unnecessary files (stdafx.*, TargetVersion.h)
*   Significant rework of windows portability.  No longer using config.h 
and force_inc.h to make Windows look like *nix.  Instead, making lots of 
Thrift specific #defines that are vaguely *nixy, and having those forward 
to *nix or Windows stuff appropriately.  For example, THRIFT_CTIME_R calls 
ctime_r on *nix, and a wrapper thrift_ctime_r on Windows.  The old 
approach doesn't work when multiple libraries attempt the same trick.  For 
example, if openssl #defined errno to ::WSAGetLastError() as well, then 
that would cause problems.
*   Adding preprocessor flag that can optionally squelch console output. 
Default behavior is unchanged.  Console output is great for home deployed 
server apps, but it looks unprofessional for consumer apps.
*   Adding THRIFT_UNUSED_VARIABLE helper macro, to aid in squelching 
*   Adding redirector header for <functional> and <tr1/functional>.  Since 
namespaces aren't consistent (std vs std::tr1), I have added symbols to 
the apache::thrift::stdcxx namespace.  This is important for Clang / iOS 
*   usleep and sleep on Windows were both sleeping in milliseconds.  sleep 
now correctly sleeps for seconds, and usleep attempts to sleep for 
microseconds (after converting very coarsely to milliseconds).
*   Adding support for using C++11 std::thread (and mutex, and monitor). 
Thrift already supported boost::thread and posix threads.  Clients that 
use std::thread no longer need built boost libraries.  The boost headers 
are sufficient for them.  Switching from boost::thread to std::thread 
resulted in a ~50k reduction in exe size in my tests.  By default, msvc10 
and below will use boost::thread, msvc11 and up will use std::thread.
*   Fixing more 64-bit socket truncation issues in non-blocking server and 
ssl support.  openssl itself has socket truncation issues, so I could not 
fix them all.
*   Fixed THRIFT-1692 "SO_REUSEADDR allows for socket hijacking on Windows 
".  Now using SO_EXCLUSIVEADDRUSE on windows, and SO_REUSEADDR on *nix.
*   Making TFileTransport use thrift style threads instead of redoing all 
the pthread+boost stuff itself.
*   Includes, and builds upon THRIFT-1740 (Make C++ library build on OS X 
and iOS)
*   Moved several functions out of thrift/windows/config.h, and into other 
thrift/windows headers.
*   Using built-in stdint.h if available (by checking HAVE_STDINT_H) and 
using boost typedefs otherwise.
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message