Joost Hopmans e683db244e Merge pull request #639 in KC/kopanocore from ~BSIMONSEN/kopanocore:kc5-sqllimit to master %!s(int64=7) %!d(string=hai) anos
..
include 0f1c330ea3 libserver: use initialization and in-class defaults %!s(int64=8) %!d(string=hai) anos
ECABObjectTable.cpp 6f49c71215 libserver: gracefully handle allocation failures %!s(int64=7) %!d(string=hai) anos
ECABObjectTable.h 2d60ab3890 treewide: place all symbols into a namespace %!s(int64=8) %!d(string=hai) anos
ECAttachmentStorage.cpp 272325e3c4 libserver: add further LIMIT clauses to SELECT statements %!s(int64=7) %!d(string=hai) anos
ECAttachmentStorage.h 0f1c330ea3 libserver: use initialization and in-class defaults %!s(int64=8) %!d(string=hai) anos
ECCacheManager.cpp 272325e3c4 libserver: add further LIMIT clauses to SELECT statements %!s(int64=7) %!d(string=hai) anos
ECCacheManager.h 52d0f950fc libserver: use move semantics for ECsIndexProp %!s(int64=7) %!d(string=hai) anos
ECConvenientDepthABObjectTable.cpp 6f49c71215 libserver: gracefully handle allocation failures %!s(int64=7) %!d(string=hai) anos
ECConvenientDepthABObjectTable.h 20e9ee58b0 libserver: repair type punning %!s(int64=8) %!d(string=hai) anos
ECConvenientDepthObjectTable.cpp 6f49c71215 libserver: gracefully handle allocation failures %!s(int64=7) %!d(string=hai) anos
ECConvenientDepthObjectTable.h 20e9ee58b0 libserver: repair type punning %!s(int64=8) %!d(string=hai) anos
ECConversion.cpp a55d10f351 provider: consistent use of s_alloc/s_free (3/6) %!s(int64=7) %!d(string=hai) anos
ECConversion.h 2d60ab3890 treewide: place all symbols into a namespace %!s(int64=8) %!d(string=hai) anos
ECDBDef.h f5807d31ad libserver: let PRI keys not be NULL %!s(int64=8) %!d(string=hai) anos
ECDatabase.h 08d8fc957d libserver: set default class member values %!s(int64=7) %!d(string=hai) anos
ECDatabaseFactory.cpp be6f6599ce libserver: replace ECDatabaseMySQL name by ECDatabase %!s(int64=7) %!d(string=hai) anos
ECDatabaseFactory.h 2d60ab3890 treewide: place all symbols into a namespace %!s(int64=8) %!d(string=hai) anos
ECDatabaseMySQL.cpp dbda3275c1 Merge pull request #630 in KC/kopanocore from ~BSIMONSEN/kopanocore:use-autocommit-0-where-possible to master %!s(int64=7) %!d(string=hai) anos
ECDatabaseUpdate.cpp b1afdf7ee7 libserver: simplify small functions to be even smaller %!s(int64=7) %!d(string=hai) anos
ECDatabaseUpdate.h 2d60ab3890 treewide: place all symbols into a namespace %!s(int64=8) %!d(string=hai) anos
ECDatabaseUtils.cpp f160ba86a2 treewide: simplify small functions to be even smaller %!s(int64=7) %!d(string=hai) anos
ECDatabaseUtils.h f88f537775 treewide: drop redundant access control specifiers %!s(int64=8) %!d(string=hai) anos
ECGenProps.cpp 272325e3c4 libserver: add further LIMIT clauses to SELECT statements %!s(int64=7) %!d(string=hai) anos
ECGenProps.h 355bdaf00a libserver: drop useless access specifier in class ECGenProps %!s(int64=7) %!d(string=hai) anos
ECGenericObjectTable.cpp 4f6090e0b6 Merge branch 'release' %!s(int64=7) %!d(string=hai) anos
ECGenericObjectTable.h f88f537775 treewide: drop redundant access control specifiers %!s(int64=8) %!d(string=hai) anos
ECICS.cpp 272325e3c4 libserver: add further LIMIT clauses to SELECT statements %!s(int64=7) %!d(string=hai) anos
ECICS.h 6e15c6f498 libserver: remove unused function CleanupChangesTable %!s(int64=8) %!d(string=hai) anos
ECICSHelpers.cpp 6f49c71215 libserver: gracefully handle allocation failures %!s(int64=7) %!d(string=hai) anos
ECICSHelpers.h f88f537775 treewide: drop redundant access control specifiers %!s(int64=8) %!d(string=hai) anos
ECIndexer.cpp d4e9ba8d0f provider: consistent use of s_alloc/s_free (4/6) %!s(int64=7) %!d(string=hai) anos
ECIndexer.h 2d60ab3890 treewide: place all symbols into a namespace %!s(int64=8) %!d(string=hai) anos
ECKrbAuth.cpp 2d60ab3890 treewide: place all symbols into a namespace %!s(int64=8) %!d(string=hai) anos
ECKrbAuth.h 2d60ab3890 treewide: place all symbols into a namespace %!s(int64=8) %!d(string=hai) anos
ECLockManager.cpp 85f8454abc libserver: use shared_mutex class in ECLockManager %!s(int64=7) %!d(string=hai) anos
ECLockManager.h 85f8454abc libserver: use shared_mutex class in ECLockManager %!s(int64=7) %!d(string=hai) anos
ECMAPI.h 2a5437fbcc Initial commit %!s(int64=8) %!d(string=hai) anos
ECMailBoxTable.cpp 6f49c71215 libserver: gracefully handle allocation failures %!s(int64=7) %!d(string=hai) anos
ECMailBoxTable.h 2d60ab3890 treewide: place all symbols into a namespace %!s(int64=8) %!d(string=hai) anos
ECMultiStoreTable.cpp 6f49c71215 libserver: gracefully handle allocation failures %!s(int64=7) %!d(string=hai) anos
ECMultiStoreTable.h 2d60ab3890 treewide: place all symbols into a namespace %!s(int64=8) %!d(string=hai) anos
ECNotification.cpp 2f624c0389 provider: consistent use of s_alloc/s_free (5/6) %!s(int64=7) %!d(string=hai) anos
ECNotification.h 2d60ab3890 treewide: place all symbols into a namespace %!s(int64=8) %!d(string=hai) anos
ECNotificationManager.cpp f160ba86a2 treewide: simplify small functions to be even smaller %!s(int64=7) %!d(string=hai) anos
ECNotificationManager.h 0f1c330ea3 libserver: use initialization and in-class defaults %!s(int64=8) %!d(string=hai) anos
ECPamAuth.cpp 3166997125 treewide: replace type repetitions by "auto" in casting statements %!s(int64=7) %!d(string=hai) anos
ECPamAuth.h 2d60ab3890 treewide: place all symbols into a namespace %!s(int64=8) %!d(string=hai) anos
ECPluginFactory.cpp 0f1c330ea3 libserver: use initialization and in-class defaults %!s(int64=8) %!d(string=hai) anos
ECPluginFactory.h 0f1c330ea3 libserver: use initialization and in-class defaults %!s(int64=8) %!d(string=hai) anos
ECPluginSharedData.cpp 0f1c330ea3 libserver: use initialization and in-class defaults %!s(int64=8) %!d(string=hai) anos
ECS3Attachment.cpp 64c316f15e treewide: promote some reinterpret_cast to static_cast %!s(int64=7) %!d(string=hai) anos
ECS3Attachment.h 0f1c330ea3 libserver: use initialization and in-class defaults %!s(int64=8) %!d(string=hai) anos
ECSearchFolders.cpp 272325e3c4 libserver: add further LIMIT clauses to SELECT statements %!s(int64=7) %!d(string=hai) anos
ECSearchFolders.h 0f1c330ea3 libserver: use initialization and in-class defaults %!s(int64=8) %!d(string=hai) anos
ECSearchObjectTable.cpp 6f49c71215 libserver: gracefully handle allocation failures %!s(int64=7) %!d(string=hai) anos
ECSearchObjectTable.h 20e9ee58b0 libserver: repair type punning %!s(int64=8) %!d(string=hai) anos
ECSecurity.cpp f160ba86a2 treewide: simplify small functions to be even smaller %!s(int64=7) %!d(string=hai) anos
ECSecurity.h 2d60ab3890 treewide: place all symbols into a namespace %!s(int64=8) %!d(string=hai) anos
ECServerEntrypoint.cpp 056ecbba15 provider: stash SOAPINFO casting into separate function %!s(int64=7) %!d(string=hai) anos
ECServerEntrypoint.h 056ecbba15 provider: stash SOAPINFO casting into separate function %!s(int64=7) %!d(string=hai) anos
ECSession.cpp f62d03393f libserver: replace "select" by "poll" %!s(int64=7) %!d(string=hai) anos
ECSession.h 0f1c330ea3 libserver: use initialization and in-class defaults %!s(int64=8) %!d(string=hai) anos
ECSessionGroup.cpp 91e75f76e3 provider: consistent use of s_alloc/s_free (6/6) %!s(int64=7) %!d(string=hai) anos
ECSessionGroup.h b22f293ecd build: resolve some clang warnings %!s(int64=8) %!d(string=hai) anos
ECSessionManager.cpp 3166997125 treewide: replace type repetitions by "auto" in casting statements %!s(int64=7) %!d(string=hai) anos
ECSessionManager.h 427df3e8f7 libserver: use shared_mutex class in ECSessionManager %!s(int64=7) %!d(string=hai) anos
ECStatsCollector.cpp 2d60ab3890 treewide: place all symbols into a namespace %!s(int64=8) %!d(string=hai) anos
ECStatsCollector.h 2d60ab3890 treewide: place all symbols into a namespace %!s(int64=8) %!d(string=hai) anos
ECStatsTables.cpp 6f49c71215 libserver: gracefully handle allocation failures %!s(int64=7) %!d(string=hai) anos
ECStatsTables.h 20e9ee58b0 libserver: repair type punning %!s(int64=8) %!d(string=hai) anos
ECStoreObjectTable.cpp b50bc6f8f5 libserver: reduce nesting level in source %!s(int64=7) %!d(string=hai) anos
ECStoreObjectTable.h 0f1c330ea3 libserver: use initialization and in-class defaults %!s(int64=8) %!d(string=hai) anos
ECStringCompat.cpp e13c166ef4 treewide: deindent case label statements (6/7) %!s(int64=8) %!d(string=hai) anos
ECStringCompat.h 2d60ab3890 treewide: place all symbols into a namespace %!s(int64=8) %!d(string=hai) anos
ECSubRestriction.cpp 1308066560 libserver: release SQL result from ~DB_RESULT %!s(int64=7) %!d(string=hai) anos
ECSubRestriction.h 2d60ab3890 treewide: place all symbols into a namespace %!s(int64=8) %!d(string=hai) anos
ECTPropsPurge.cpp f160ba86a2 treewide: simplify small functions to be even smaller %!s(int64=7) %!d(string=hai) anos
ECTPropsPurge.h 0f1c330ea3 libserver: use initialization and in-class defaults %!s(int64=8) %!d(string=hai) anos
ECTableManager.cpp 6f49c71215 libserver: gracefully handle allocation failures %!s(int64=7) %!d(string=hai) anos
ECTableManager.h 0f1c330ea3 libserver: use initialization and in-class defaults %!s(int64=8) %!d(string=hai) anos
ECTestProtocol.cpp 2d60ab3890 treewide: place all symbols into a namespace %!s(int64=8) %!d(string=hai) anos
ECTestProtocol.h 2d60ab3890 treewide: place all symbols into a namespace %!s(int64=8) %!d(string=hai) anos
ECUserManagement.cpp b50bc6f8f5 libserver: reduce nesting level in source %!s(int64=7) %!d(string=hai) anos
ECUserManagement.h 1b08d97d15 build: work around gcc 4.7 dtor behavior %!s(int64=8) %!d(string=hai) anos
ECUserStoreTable.cpp 6f49c71215 libserver: gracefully handle allocation failures %!s(int64=7) %!d(string=hai) anos
ECUserStoreTable.h 2d60ab3890 treewide: place all symbols into a namespace %!s(int64=8) %!d(string=hai) anos
README.md 0d3875268e doc: update code structure documentation %!s(int64=8) %!d(string=hai) anos
StorageUtil.cpp 272325e3c4 libserver: add further LIMIT clauses to SELECT statements %!s(int64=7) %!d(string=hai) anos
StorageUtil.h 2d60ab3890 treewide: place all symbols into a namespace %!s(int64=8) %!d(string=hai) anos
StreamUtil.cpp e9b4fdd12e Merge KC-PR-631 %!s(int64=7) %!d(string=hai) anos
StreamUtil.h a50ba602ac misc: add static/const qualifiers for functions and data %!s(int64=7) %!d(string=hai) anos
cmd.cpp 272325e3c4 libserver: add further LIMIT clauses to SELECT statements %!s(int64=7) %!d(string=hai) anos
cmd.hpp 2d60ab3890 treewide: place all symbols into a namespace %!s(int64=8) %!d(string=hai) anos
cmdutil.cpp 272325e3c4 libserver: add further LIMIT clauses to SELECT statements %!s(int64=7) %!d(string=hai) anos
cmdutil.hpp 26dffb479b build: ensure exception includes are present %!s(int64=7) %!d(string=hai) anos
logontime.cpp 272325e3c4 libserver: add further LIMIT clauses to SELECT statements %!s(int64=7) %!d(string=hai) anos
logontime.hpp 2d60ab3890 treewide: place all symbols into a namespace %!s(int64=8) %!d(string=hai) anos

README.md

Libserver

ECCacheManager

The ECCacheManager caches some specific MySQL table items in a hash map. For example for the hierarchtable it is stored as . When the cache limit is hit, we randomly remove 5% of the items.

The sort() operation on unordered hashmaps is very expensive so you might notice cache spikes everytime the cache is cleaned. A possible solution is randomly removing the cache entries.

         +-------------------------------------------------------------+
         |                                                             |
         |                                                             |
cache --+|                  xxxxxxxx xxxxxxxx xxxxxxxxxx xxxxxxxxxxxxxx|
limit    |               xxx       x x      x x        x x             |
         |            xxxx          x        x          x              |
         |         xxxx                                                |
         |        xx                                                   |
         |     xxx                                                     |
         |  xxxx                                                       |
         |xxx                                                          |
         xx------------------------------------------------------------+