Fix size formatting

The sizes were rounded up instead of down. This caused gigabyte sizes to
be shown in the terabyte range.
This commit is contained in:
Markus Mäkelä
2018-10-20 14:33:42 +03:00
parent aa8546ca80
commit c45059f83d
2 changed files with 5 additions and 4 deletions

View File

@ -59,7 +59,7 @@ namespace maxbase
std::string to_binary_size(int64_t size)
{
// Calculate log1024(size) and round it up
int idx = ceil(log(size) / log(1024));
int idx = floor(log(size) / log(1024));
double num = size / pow(1024, idx);
char buf[200]; // Enough for all possible values
snprintf(buf, sizeof(buf), "%.2lf%s", num, get_binary_size_suffix(idx));

View File

@ -19,6 +19,7 @@
#include <unordered_map>
#include <maxscale/alloc.h>
#include <maxbase/atomic.h>
#include <maxbase/format.hh>
#include <maxscale/config.h>
#include <maxscale/json_api.h>
#include <maxscale/log.h>
@ -396,9 +397,9 @@ bool qc_setup(const QC_CACHE_PROPERTIES* cache_properties,
if (cache_max_size)
{
MXS_NOTICE("Query classification results are cached and reused, "
"cache max size: %" PRIi64 "",
cache_max_size);
MXS_NOTICE("Query classification results are cached and reused. "
"Memory used per thread: %s",
mxb::to_binary_size(cache_max_size).c_str());
}
else
{