From 1626ec198644a7dd99a5f62103b4ae4aacad2209 Mon Sep 17 00:00:00 2001 From: Pekka Enberg Date: Thu, 23 Jul 2015 12:29:04 +0300 Subject: [PATCH 1/3] log: Show log level when logging to stdout Fixes #38. Signed-off-by: Pekka Enberg --- log.cc | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/log.cc b/log.cc index cd788d03f7..b5f126fcfc 100644 --- a/log.cc +++ b/log.cc @@ -85,7 +85,14 @@ logger::really_do_log(log_level level, const char* fmt, stringer** s, size_t n) out << "\n"; auto msg = out.str(); if (_stdout.load(std::memory_order_relaxed)) { - std::cout << msg; + static array_map level_map = { + { int(log_level::debug), "DEBUG" }, + { int(log_level::info), "INFO" }, + { int(log_level::trace), "TRACE" }, + { int(log_level::warn), "WARN" }, + { int(log_level::error), "ERROR" }, + }; + std::cout << level_map[int(level)] << " " << msg; } if (_syslog.load(std::memory_order_relaxed)) { static array_map level_map = { From 3a695610614a216194dc91c9dca7a2fbd902e082 Mon Sep 17 00:00:00 2001 From: Avi Kivity Date: Tue, 28 Jul 2015 19:15:36 +0300 Subject: [PATCH 2/3] gdb: add 'scylla memory' command Useful for analyzing memory leaks: (gdb) scylla memory objsz spansz usedobj memory wst% 1 4096 0 0 0.0 1 4096 0 0 0.0 1 4096 0 0 0.0 1 4096 0 0 0.0 2 4096 0 0 0.0 2 4096 0 0 0.0 3 4096 0 0 0.0 3 4096 0 0 0.0 4 4096 0 0 0.0 5 4096 0 0 0.0 6 4096 0 0 0.0 7 4096 0 0 0.0 8 4096 422 8192 58.8 10 4096 0 0 0.0 12 4096 0 0 0.0 14 4096 0 8192 99.8 16 4096 409 8192 20.1 20 4096 0 0 0.0 24 4096 0 0 0.0 28 4096 653 24576 25.4 32 4096 1069 36864 7.2 40 4096 0 0 0.0 48 4096 0 0 0.0 56 4096 1228 73728 6.5 64 4096 616 40960 3.8 80 4096 0 0 0.0 96 4096 0 0 0.0 112 4096 919 110592 5.4 128 4096 141 24576 26.6 160 8192 0 0 0.0 192 8192 0 0 0.0 224 8192 128 49152 40.1 256 8192 72 40960 55.0 320 16384 0 0 0.0 384 16384 0 0 0.0 448 16384 60 49152 43.8 512 16384 29 49152 69.8 640 32768 0 0 0.0 768 32768 0 0 0.0 896 32768 47 98304 55.6 1024 32768 5 98304 94.8 1280 65536 0 0 0.0 1536 65536 0 0 0.0 1792 65536 31 196608 70.2 2048 65536 8 196608 91.7 2560 131072 0 0 0.0 3072 131072 0 0 0.0 3584 131072 34 393216 67.4 4096 131072 0 393216 100.0 5120 262144 0 0 0.0 6144 262144 0 0 0.0 7168 262144 33 786432 68.4 8192 262144 4 786432 95.8 10240 524288 0 0 0.0 12288 524288 0 0 0.0 14336 524288 33 1572864 68.4 16384 524288 0 1572864 100.0 --- scylla-gdb.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/scylla-gdb.py b/scylla-gdb.py index 6f290ae4d3..dc00a34f93 100644 --- a/scylla-gdb.py +++ b/scylla-gdb.py @@ -97,7 +97,31 @@ class scylla_column_families(gdb.Command): name = str(schema['_raw']['_ks_name']) + '/' + str(schema['_raw']['_cf_name']) gdb.write('{:5} {} {:45} (column_family*){}\n'.format(shard, key, name, value.address)) +class scylla_memory(gdb.Command): + def __init__(self): + gdb.Command.__init__(self, 'scylla memory', gdb.COMMAND_USER, gdb.COMPLETE_COMMAND) + def invoke(self, arg, from_tty): + cpu_mem = gdb.parse_and_eval('memory::cpu_mem') + small_pools = cpu_mem['small_pools'] + nr = small_pools['nr_small_pools'] + page_size = int(gdb.parse_and_eval('memory::page_size')) + gdb.write('{objsize:>5} {span_size:>6} {use_count:>10} {memory:>12} {wasted_percent:>5}\n' + .format(objsize='objsz', span_size='spansz', use_count='usedobj', memory='memory', wasted_percent='wst%')) + for i in range(int(nr)): + sp = small_pools['_u']['a'][i] + object_size = int(sp['_object_size']) + span_size = int(sp['_span_size']) * page_size + free_count = int(sp['_free_count']) + spans_in_use = int(sp['_spans_in_use']) + memory = spans_in_use * span_size + use_count = spans_in_use * int(span_size / object_size) - free_count + wasted = free_count * object_size + wasted_percent = wasted * 100.0 / memory if memory else 0 + gdb.write('{objsize:5} {span_size:6} {use_count:10} {memory:12} {wasted_percent:5.1f}\n' + .format(objsize=object_size, span_size=span_size, use_count=use_count, memory=memory, wasted_percent=wasted_percent)) + scylla() scylla_databases() scylla_keyspaces() scylla_column_families() +scylla_memory() \ No newline at end of file From c68c37ae2fe334d2879e40525198a48c325afa22 Mon Sep 17 00:00:00 2001 From: Tomasz Grabiec Date: Thu, 30 Jul 2015 10:37:41 +0200 Subject: [PATCH 3/3] Revert "schema: support dropped columns" This reverts commit 9887bc5f5fa96ae248653a992c0380588952b1af. Breaks "CREATE TABLE" statement. --- db/legacy_schema_tables.cc | 25 ++++++++++--------------- schema.hh | 5 ----- schema_builder.hh | 8 -------- 3 files changed, 10 insertions(+), 28 deletions(-) diff --git a/db/legacy_schema_tables.cc b/db/legacy_schema_tables.cc index d7bf661f3d..176cc1a713 100644 --- a/db/legacy_schema_tables.cc +++ b/db/legacy_schema_tables.cc @@ -1069,19 +1069,14 @@ future<> save_system_keyspace_schema() { m.set_clustered_cell(ckey, "memtable_flush_period_in_ms", table->memtable_flush_period(), timestamp); m.set_clustered_cell(ckey, "read_repair_chance", table->read_repair_chance(), timestamp); m.set_clustered_cell(ckey, "speculative_retry", table->speculative_retry().to_sstring(), timestamp); + +#if 0 + for (Map.Entry entry : table.getDroppedColumns().entrySet()) + adder.addMapEntry("dropped_columns", entry.getKey().toString(), entry.getValue()); +#endif + m.set_clustered_cell(ckey, "is_dense", table->is_dense(), timestamp); - auto dc = *(s->get_column_definition("dropped_columns")); - - std::vector> cells; - for (auto& p: table->dropped_columns()) { - cells.push_back({utf8_type->decompose(p.first), atomic_cell::make_live(timestamp, long_type->decompose(p.second))}); - } - - map_type_impl::mutation dc_mut{{}, std::move(cells) }; - auto col = static_pointer_cast(dc.type); - m.set_clustered_cell(ckey, dc, col->serialize_mutation_form(dc_mut)); - if (with_columns_and_triggers) { for (auto&& column : table->all_columns_in_select_order()) { add_column_to_schema_mutation(table, column, timestamp, pkey, mutations); @@ -1362,10 +1357,10 @@ future<> save_system_keyspace_schema() { builder.set_bloom_filter_fp_chance(builder.get_bloom_filter_fp_chance()); } - if (table_row.has("dropped_columns")) { - builder.set_dropped_columns(table_row.get_nonnull>("dropped_columns")); - } - +#if 0 + if (result.has("dropped_columns")) + cfm.droppedColumns(convertDroppedColumns(result.getMap("dropped_columns", UTF8Type.instance, LongType.instance))); +#endif for (auto&& cdef : column_defs) { builder.with_column(cdef); } diff --git a/schema.hh b/schema.hh index b59d6374b8..58b9f20c4b 100644 --- a/schema.hh +++ b/schema.hh @@ -255,7 +255,6 @@ private: // we will use by default - when we have the choice. sstables::compaction_strategy_type _compaction_strategy = sstables::compaction_strategy_type::size_tiered; std::map _compaction_strategy_options; - std::map _dropped_columns = {}; }; raw_schema _raw; thrift_schema _thrift; @@ -383,10 +382,6 @@ public: return _raw._compaction_strategy_options; } - const std::map& dropped_columns() const { - return _raw._dropped_columns; - } - const ::speculative_retry& speculative_retry() const { return _raw._speculative_retry; } diff --git a/schema_builder.hh b/schema_builder.hh index 48da4ca8ce..05b4ada3c9 100644 --- a/schema_builder.hh +++ b/schema_builder.hh @@ -124,14 +124,6 @@ public: return _raw._speculative_retry; } - void set_dropped_columns(std::map c) { - _raw._dropped_columns = std::move(c); - } - - const std::map& get_dropped_columns() { - return _raw._dropped_columns; - } - void set_bloom_filter_fp_chance(double fp) { _raw._bloom_filter_fp_chance = fp; }