You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2009/06/22 23:17:59 UTC
svn commit: r787405 - in
/incubator/cassandra/trunk/src/java/org/apache/cassandra: config/ db/
net/http/ service/ tools/
Author: jbellis
Date: Mon Jun 22 21:17:58 2009
New Revision: 787405
URL: http://svn.apache.org/viewvc?rev=787405&view=rev
Log:
cleanup of table.open.
patch by jbellis; reviewed by goffinet for CASSANDRA-79
Modified:
incubator/cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/CommitLogHeader.java
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/DataFileVerbHandler.java
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/HintedHandOffManager.java
incubator/cassandra/trunk/src/java/org/apache/cassandra/db/Table.java
incubator/cassandra/trunk/src/java/org/apache/cassandra/net/http/HttpRequestHandler.java
incubator/cassandra/trunk/src/java/org/apache/cassandra/service/CassandraServer.java
incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java
incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageServiceMBean.java
incubator/cassandra/trunk/src/java/org/apache/cassandra/tools/NodeProbe.java
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java?rev=787405&r1=787404&r2=787405&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java Mon Jun 22 21:17:58 2009
@@ -439,15 +439,6 @@
{
throw new RuntimeException(e);
}
-
- try
- {
- storeMetadata();
- }
- catch (IOException e)
- {
- throw new RuntimeException(e);
- }
}
@@ -456,9 +447,9 @@
* the table name and the column families that make up the table.
* Each column family also has an associated ID which is an int.
*/
- private static void storeMetadata() throws IOException
+ public static void storeMetadata() throws IOException
{
- AtomicInteger idGenerator = new AtomicInteger(0);
+ int cfId = 0;
Set<String> tables = tableToCFMetaDataMap_.keySet();
for ( String table : tables )
@@ -472,23 +463,32 @@
for (String columnFamily : columnFamilies.keySet())
{
- tmetadata.add(columnFamily, idGenerator.getAndIncrement(), DatabaseDescriptor.getColumnType(table, columnFamily));
+ tmetadata.add(columnFamily, cfId++, DatabaseDescriptor.getColumnType(table, columnFamily));
}
/*
* Here we add all the system related column families.
*/
/* Add the TableMetadata column family to this map. */
- tmetadata.add(Table.TableMetadata.cfName_, idGenerator.getAndIncrement());
+ tmetadata.add(Table.TableMetadata.cfName_, cfId++);
/* Add the LocationInfo column family to this map. */
- tmetadata.add(SystemTable.cfName_, idGenerator.getAndIncrement());
+ tmetadata.add(SystemTable.cfName_, cfId++);
/* Add the recycle column family to this map. */
- tmetadata.add(Table.recycleBin_, idGenerator.getAndIncrement());
+ tmetadata.add(Table.recycleBin_, cfId++);
/* Add the Hints column family to this map. */
- tmetadata.add(Table.hints_, idGenerator.getAndIncrement(), ColumnFamily.getColumnType("Super"));
+ tmetadata.add(Table.hints_, cfId++, ColumnFamily.getColumnType("Super"));
tmetadata.apply();
- idGenerator.set(0);
}
+
+ /*
+ * Here we add all the system related column families.
+ */
+ /* Add the LocationInfo column family to this map. */
+ tmetadata.add(SystemTable.cfName_, cfId++);
+ /* Add the recycle column family to this map. */
+ tmetadata.add(Table.recycleBin_, cfId++);
+ /* Add the Hints column family to this map. */
+ tmetadata.add(Table.hints_, cfId++, ColumnFamily.getColumnType("Super"));
}
}
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/db/CommitLogHeader.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/CommitLogHeader.java?rev=787405&r1=787404&r2=787405&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/db/CommitLogHeader.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/db/CommitLogHeader.java Mon Jun 22 21:17:58 2009
@@ -146,8 +146,7 @@
{
sb.append((dirty.get(i) ? 0 : 1));
sb.append(":");
- Table table = Table.open( DatabaseDescriptor.getTables().get(0));
- sb.append(table.getColumnFamilyName(i));
+ sb.append(Table.TableMetadata.getColumnFamilyName(i));
sb.append(" ");
}
sb.append(" | " );
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/db/DataFileVerbHandler.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/DataFileVerbHandler.java?rev=787405&r1=787404&r2=787405&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/db/DataFileVerbHandler.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/db/DataFileVerbHandler.java Mon Jun 22 21:17:58 2009
@@ -1,21 +1,21 @@
-/*
-* 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.
-*/
+/*
+* 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;
import java.io.ByteArrayOutputStream;
@@ -42,11 +42,11 @@
String table = new String(bytes);
logger_.info("**** Received a request from " + message.getFrom());
- List<String> allFiles = Table.open(table).getAllSSTablesOnDisk();
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- DataOutputStream dos = new DataOutputStream(bos);
try
{
+ List<String> allFiles = Table.open(table).getAllSSTablesOnDisk();
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ DataOutputStream dos = new DataOutputStream(bos);
dos.writeInt(allFiles.size());
for ( String file : allFiles )
{
@@ -55,9 +55,9 @@
Message response = message.getReply( StorageService.getLocalStorageEndPoint(), bos.toByteArray());
MessagingService.getMessagingInstance().sendOneWay(response, message.getFrom());
}
- catch ( IOException ex )
+ catch (IOException ex)
{
- logger_.warn(LogUtil.throwableToString(ex));
+ logger_.error("Error listing data files", ex);
}
}
}
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/db/HintedHandOffManager.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/HintedHandOffManager.java?rev=787405&r1=787404&r2=787405&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/db/HintedHandOffManager.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/db/HintedHandOffManager.java Mon Jun 22 21:17:58 2009
@@ -157,9 +157,9 @@
// 7. I guess we r done
for ( String tableName:DatabaseDescriptor.getTables() )
{
- Table table = Table.open(tableName);
try
{
+ Table table = Table.open(tableName);
ColumnFamily hintColumnFamily = ColumnFamilyStore.removeDeleted(table.get(key_, Table.hints_), Integer.MAX_VALUE);
if (hintColumnFamily == null)
{
@@ -194,7 +194,7 @@
}
catch (Exception ex)
{
- logger_.error(ex.getMessage());
+ logger_.error("error delivering hints", ex);
}
finally
{
@@ -212,9 +212,9 @@
// 3. Delete that recepient from the key if write was successful
for ( String tableName:DatabaseDescriptor.getTables() )
{
- Table table = Table.open(tableName);
try
{
+ Table table = Table.open(tableName);
ColumnFamily hintedColumnFamily = table.get(key_, Table.hints_);
if (hintedColumnFamily == null)
{
@@ -244,7 +244,7 @@
}
catch (Exception ex)
{
- logger_.error(ex.getMessage());
+ logger_.error("Error delivering hints", ex);
}
finally
{
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/db/Table.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/db/Table.java?rev=787405&r1=787404&r2=787405&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/db/Table.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/db/Table.java Mon Jun 22 21:17:58 2009
@@ -79,6 +79,18 @@
private static IFileWriter writer_;
private static IFileReader reader_;
private static HashMap<String,TableMetadata> tableMetadataMap_ = new HashMap<String,TableMetadata>();
+ private static Map<Integer, String> idCfMap_ = new HashMap<Integer, String>();
+ static
+ {
+ try
+ {
+ DatabaseDescriptor.storeMetadata();
+ }
+ catch (IOException e)
+ {
+ throw new RuntimeException(e);
+ }
+ }
private static TableMetadata getTableMetadata(String table)
{
@@ -140,7 +152,6 @@
/* The mapping between column family and the column type. */
private Map<String, String> cfTypeMap_ = new HashMap<String, String>();
private Map<String, Integer> cfIdMap_ = new HashMap<String, Integer>();
- private Map<Integer, String> idCfMap_ = new HashMap<Integer, String>();
private static String getFileName(String table)
{
@@ -154,6 +165,8 @@
public void add(String cf, int id, String type)
{
+ logger_.debug("adding " + cf + " as " + id);
+ assert !idCfMap_.containsKey(id);
cfIdMap_.put(cf, id);
idCfMap_.put(id, cf);
cfTypeMap_.put(cf, type);
@@ -169,7 +182,7 @@
return cfIdMap_.get(columnFamily);
}
- String getColumnFamilyName(int id)
+ public static String getColumnFamilyName(int id)
{
return idCfMap_.get(id);
}
@@ -346,7 +359,7 @@
}
}
- private Map<String, String> getNewNames(StreamContextManager.StreamContext[] streamContexts)
+ private Map<String, String> getNewNames(StreamContextManager.StreamContext[] streamContexts) throws IOException
{
/*
* Mapping for each file with unique CF-i ---> new file name. For eg.
@@ -405,7 +418,7 @@
// cache application CFs since Range queries ask for them a _lot_
private SortedSet<String> applicationColumnFamilies_;
- public static Table open(String table)
+ public static Table open(String table) throws IOException
{
Table tableInstance = instances_.get(table);
/*
@@ -574,22 +587,14 @@
return list;
}
- private Table(String table)
+ private Table(String table) throws IOException
{
table_ = table;
dbAnalyticsSource_ = new DBAnalyticsSource();
- try
- {
- tableMetadata_ = Table.TableMetadata.instance(table);
- Set<String> columnFamilies = tableMetadata_.getColumnFamilies();
- for ( String columnFamily : columnFamilies )
- {
- columnFamilyStores_.put(columnFamily, ColumnFamilyStore.getColumnFamilyStore(table, columnFamily));
- }
- }
- catch ( IOException ex )
+ tableMetadata_ = Table.TableMetadata.instance(table);
+ for (String columnFamily : tableMetadata_.getColumnFamilies())
{
- logger_.info(LogUtil.throwableToString(ex));
+ columnFamilyStores_.put(columnFamily, ColumnFamilyStore.getColumnFamilyStore(table, columnFamily));
}
}
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/net/http/HttpRequestHandler.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/net/http/HttpRequestHandler.java?rev=787405&r1=787404&r2=787405&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/net/http/HttpRequestHandler.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/net/http/HttpRequestHandler.java Mon Jun 22 21:17:58 2009
@@ -88,15 +88,22 @@
{
logger_.debug("Handling " + request_.getMethod());
HttpWriteResponse httpServerResponse = new HttpWriteResponse(request_);
- if(request_.getMethod().toUpperCase().equals("GET"))
+ try
{
+ if(request_.getMethod().toUpperCase().equals("GET"))
+ {
// handle the get request type
- doGet(request_, httpServerResponse);
+ doGet(request_, httpServerResponse);
+ }
+ else if(request_.getMethod().toUpperCase().equals("POST"))
+ {
+ // handle the POST request type
+ doPost(request_, httpServerResponse);
+ }
}
- else if(request_.getMethod().toUpperCase().equals("POST"))
+ catch (IOException e)
{
- // handle the POST request type
- doPost(request_, httpServerResponse);
+ throw new RuntimeException(e);
}
// write the response we have constructed into the socket
@@ -106,7 +113,7 @@
request_.getHttpConnection().write(buffer);
}
- private void doGet(org.apache.cassandra.net.http.HttpRequest httpRequest, HttpWriteResponse httpResponse)
+ private void doGet(org.apache.cassandra.net.http.HttpRequest httpRequest, HttpWriteResponse httpResponse) throws IOException
{
boolean fServeSummary = true;
HTMLFormatter formatter = new HTMLFormatter();
@@ -175,7 +182,7 @@
* As a result of the POST query, we currently only send back some
* javascript that updates the data in some place on the browser.
*/
- private void doPost(org.apache.cassandra.net.http.HttpRequest httpRequest, HttpWriteResponse httpResponse)
+ private void doPost(org.apache.cassandra.net.http.HttpRequest httpRequest, HttpWriteResponse httpResponse) throws IOException
{
String query = httpRequest.getQuery();
@@ -215,7 +222,7 @@
httpResponse.println(formatter.toString());
}
- private String handleNodeDetails()
+ private String handleNodeDetails() throws IOException
{
HTMLFormatter formatter = new HTMLFormatter();
@@ -248,7 +255,7 @@
return formatter.toString();
}
- private void displayDBStatistics(HTMLFormatter formatter, java.text.DecimalFormat df)
+ private void displayDBStatistics(HTMLFormatter formatter, java.text.DecimalFormat df) throws IOException
{
List<String> tables = DatabaseDescriptor.getTables();
@@ -269,7 +276,7 @@
}
}
- private String handlePageDisplay(String queryFormData, String insertFormData, String scriptFormData)
+ private String handlePageDisplay(String queryFormData, String insertFormData, String scriptFormData) throws IOException
{
StringBuilder sb = new StringBuilder();
sb.append("\n<div id=\"header\"> \n");
@@ -404,7 +411,7 @@
/*
* Returns the HTML code for a form to query data from the db cluster.
*/
- private String serveQueryForm(String queryResult)
+ private String serveQueryForm(String queryResult) throws IOException
{
HTMLFormatter formatter = new HTMLFormatter();
formatter.appendLine("<BR><fieldset><legend>Query the cluster</legend>");
@@ -453,7 +460,7 @@
/*
* Returns the HTML code for a form to insert data into the db cluster.
*/
- private String serveInsertForm(String insertResult)
+ private String serveInsertForm(String insertResult) throws IOException
{
HTMLFormatter formatter = new HTMLFormatter();
formatter.appendLine("<BR><fieldset>\n<legend>Insert data into the cluster</legend>\n");
@@ -481,7 +488,7 @@
/*
* Handle the query of some data from the client.
*/
- private String handleQuery(org.apache.cassandra.net.http.HttpRequest httpRequest)
+ private String handleQuery(org.apache.cassandra.net.http.HttpRequest httpRequest) throws IOException
{
boolean fQuerySuccess = false;
String sRetVal = "";
@@ -535,7 +542,7 @@
/*
* Handle the query of some data from the client.
*/
- private String handleInsert(org.apache.cassandra.net.http.HttpRequest httpRequest)
+ private String handleInsert(org.apache.cassandra.net.http.HttpRequest httpRequest) throws IOException
{
boolean fInsertSuccess = false;
String sRetVal = "";
@@ -577,7 +584,7 @@
/*
* Handle the script to be run on the server.
*/
- private String handleScript(org.apache.cassandra.net.http.HttpRequest httpRequest)
+ private String handleScript(org.apache.cassandra.net.http.HttpRequest httpRequest) throws IOException
{
boolean fQuerySuccess = false;
String sRetVal = "";
@@ -678,7 +685,7 @@
return "Loading...";
}
- private String handleCompactMe()
+ private String handleCompactMe() throws IOException
{
Table table = Table.open(DatabaseDescriptor.getTables().get(0));
table.forceCompaction();
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/service/CassandraServer.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/service/CassandraServer.java?rev=787405&r1=787404&r2=787405&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/service/CassandraServer.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/service/CassandraServer.java Mon Jun 22 21:17:58 2009
@@ -84,10 +84,9 @@
{
throw new TableNotDefinedException("Table " + tablename + " does not exist in this schema.");
}
- Table table = Table.open(tablename);
for (String cfName : columnFamilyNames)
{
- if (!table.getColumnFamilies().contains(cfName))
+ if (DatabaseDescriptor.getColumnType(tablename, cfName) == null)
{
throw new ColumnFamilyNotDefinedException("Column Family " + cfName + " is invalid.");
}
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java?rev=787405&r1=787404&r2=787405&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java Mon Jun 22 21:17:58 2009
@@ -681,7 +681,7 @@
doBootstrap(nodes);
}
- public void forceTableCleanup()
+ public void forceTableCleanup() throws IOException
{
List<String> tables = DatabaseDescriptor.getTables();
for ( String tName : tables )
@@ -694,7 +694,7 @@
/**
* Trigger the immediate compaction of all tables.
*/
- public void forceTableCompaction()
+ public void forceTableCompaction() throws IOException
{
List<String> tables = DatabaseDescriptor.getTables();
for ( String tName : tables )
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageServiceMBean.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageServiceMBean.java?rev=787405&r1=787404&r2=787405&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageServiceMBean.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/service/StorageServiceMBean.java Mon Jun 22 21:17:58 2009
@@ -37,7 +37,7 @@
public Map<Range, List<EndPoint>> getRangeToEndPointMap();
public String getLoadInfo();
public int getCurrentGenerationNumber();
- public void forceTableCompaction();
+ public void forceTableCompaction() throws IOException;
/**
* This method will cause the local node initiate
@@ -54,7 +54,7 @@
/**
*
*/
- public void forceTableCleanup();
+ public void forceTableCleanup() throws IOException;
/**
* Stream the files in the bootstrap directory over to the
Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/tools/NodeProbe.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/tools/NodeProbe.java?rev=787405&r1=787404&r2=787405&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/tools/NodeProbe.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/tools/NodeProbe.java Mon Jun 22 21:17:58 2009
@@ -228,7 +228,7 @@
/**
* Trigger a cleanup of keys on all tables.
*/
- public void forceTableCleanup()
+ public void forceTableCleanup() throws IOException
{
ssProxy.forceTableCleanup();
}
@@ -236,7 +236,7 @@
/**
* Trigger compaction of all tables.
*/
- public void forceTableCompaction()
+ public void forceTableCompaction() throws IOException
{
ssProxy.forceTableCompaction();
}
@@ -372,7 +372,7 @@
/**
* @param args
*/
- public static void main(String[] args)
+ public static void main(String[] args) throws IOException
{
NodeProbe probe = null;
try