[ https://issues.apache.org/jira/browse/CASSANDRA-7622?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Nate McCall updated CASSANDRA-7622: ----------------------------------- Comment: was deleted (was: Github user zznate commented on a diff in the pull request: https://github.com/apache/cassandra/pull/205#discussion_r173964217 --- Diff: src/java/org/apache/cassandra/db/virtual/CompactionStats.java --- @@ -0,0 +1,75 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.cassandra.db.virtual; + +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +import org.apache.cassandra.cql3.CQL3Type; +import org.apache.cassandra.cql3.QueryOptions; +import org.apache.cassandra.cql3.restrictions.StatementRestrictions; +import org.apache.cassandra.db.InMemoryVirtualTable; +import org.apache.cassandra.db.compaction.CompactionManager; +import org.apache.cassandra.schema.TableMetadata; +import org.apache.cassandra.service.StorageService; + +public class CompactionStats extends InMemoryVirtualTable +{ + + public static Map<String, CQL3Type> columns() + { + Map<String, CQL3Type> definitions = new HashMap<>(); + definitions.put("host_id", CQL3Type.Native.UUID); + definitions.put("compaction_id", CQL3Type.Native.UUID); + definitions.put("task_type", CQL3Type.Native.TEXT); + definitions.put("keyspace_name", CQL3Type.Native.TEXT); + definitions.put("table_name", CQL3Type.Native.TEXT); + definitions.put("bytes_compacted", CQL3Type.Native.TEXT); + definitions.put("bytes_total", CQL3Type.Native.TEXT); + return definitions; + } + + public static Key primaryKey() + { + return createKey() + .addKey("host_id") + .addClustering("compaction_id"); + } + + public CompactionStats(TableMetadata metadata) + { + super(metadata); + } + + public void read(StatementRestrictions restrictions, QueryOptions options, ResultBuilder result) + { + UUID hostId = StorageService.instance.getLocalHostUUID(); + for (Map<String, String> c : CompactionManager.instance.getCompactions()) + { + result.row(hostId, UUID.fromString(c.get("compactionId"))) --- End diff -- My $0.02 is that if we are duping the same strings everywhere, we should do some statics we don't have a whole nudist colony of naked literals. ) > Implement virtual tables > ------------------------ > > Key: CASSANDRA-7622 > URL: https://issues.apache.org/jira/browse/CASSANDRA-7622 > Project: Cassandra > Issue Type: Improvement > Reporter: Tupshin Harper > Assignee: Chris Lohfink > Priority: Major > Fix For: 4.x > > > There are a variety of reasons to want virtual tables, which would be any > table that would be backed by an API, rather than data explicitly managed and > stored as sstables. > One possible use case would be to expose JMX data through CQL as a > resurrection of CASSANDRA-3527. > Another is a more general framework to implement the ability to expose yaml > configuration information. So it would be an alternate approach to > CASSANDRA-7370. > A possible implementation would be in terms of CASSANDRA-7443, but I am not > presupposing. -- This message was sent by Atlassian JIRA (v7.6.3#76005) --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org