TokuDB - restructure code into namespaces and c++ize

Registered by George Ormond Lorch III

TokuDB code is fragmented and an odd mix of C and C++. There is one compilation source file that includes other .cc files rather than a reasonable 'include' structure and distinct .cc files for areas of functionality. In general does not conform to the Google C++ style guidelines. The code needs broken up, cleaned up and modernized to facilitate ease of adding new features and maintenance.

Blueprint information

Status:
Complete
Approver:
George Ormond Lorch III
Priority:
Medium
Drafter:
George Ormond Lorch III
Direction:
Approved
Assignee:
George Ormond Lorch III
Definition:
Approved
Series goal:
Accepted for 5.6
Implementation:
Implemented
Milestone target:
milestone icon 5.6.27-76.0
Started by
George Ormond Lorch III
Completed by
George Ormond Lorch III

Related branches

Sprints

Whiteboard

(?)

Work Items

Work items:
Split hatoku_defines.h into individual header files that cover specific areas, debug, memory, thread/sync, time, and txn : DONE
Started namespacing tokudb and functionality areas such as tokudb::memory, tokudb::thread, and tokudb::time : DONE
Started C++-izing some primitives and added some higher level type sync tools such as event and semaphore to be used soon : DONE
Change some .h function declarations from 'static inline' to 'inline' : DONE
Implement TOKUDB_DEBUG macro that enables various debug build functions such as debug mutexes : DONE
Changed assert to assert_always and replaced throughout : DONE
Added assert_debug that will only assert in debug mode as opposed to assert_always that will assert in all build types : DONE
Redefined assert as assert_always to mimic original behavior from MySQL macros that call assert : DONE
Add branch prediction macros to hatoku_defines.h : DONE
Begin correcting the TokuDB #include organization to eventually get all source files in CMakeLists.txt rather then #include "something.cc" : DONE
Correct source formatting : INPROGRESS

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.