Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package com.splout.db.hazelcast;
  
  /*
   * #%L
   * Splout SQL Server
   * %%
   * Copyright (C) 2012 Datasalt Systems S.L.
   * %%
   * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as published by
  * the Free Software Foundation, either version 3 of the License, or
  * (at your option) any later version.
  * 
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
  * 
  * You should have received a copy of the GNU Affero General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  * #L%
  */
 
 import java.io.File;
 import java.util.Map;
 
 
This class shows all the relevant info of a DNode. This info is serialized and shared with the whole cluster so that QNodes can have a global view of the Tablespaces that can be served, for instance. In this class each DNode shows its current Address and the Tablespace (String)-Version (Long)-Partitions (Integer) that can be served by it. In this way if a cluster is shutdown and started again, the global Tablespace info will be reconstructed by adding up each DNode's info.
 
 @SuppressWarnings("serial")
 public class DNodeInfo implements Serializable {
 
 	private final static Log log = LogFactory.getLog(DNodeInfo.class);
 	
 	public String toString() {
 		return  + ", serving info -> " + ;
 	}
 	
 	private String address;
 
 	public DNodeInfo() {
 	}
 	
 	public DNodeInfo(String addressString httpExchangerAddressMap<StringMap<LongMap<IntegerPartitionMetadata>>> servingInfo) {
 		this. = address;
 		this. = httpExchangerAddress;
 		this. = servingInfo;
 	}

Construct this DNode's info from the configuration data.
 
 	public DNodeInfo(SploutConfiguration config) {
 		this. = config.getString(.) + ":" + config.getInt(.);
 		this. = "http://" + config.getString(.) + ":" + config.getInt(.); 
 		File dataFolder = new File(config.getString(.));
 		// inspect the file system
 		File[] tablespaces = dataFolder.listFiles();
 		if(tablespaces == null) {
 			// fresh DNode with no deployed tablespaces in local disk
 			return;
 		}
 		try {
 			for(File tablespace : tablespaces) {
 				String tablespaceName = tablespace.getName();
 				File[] versions = tablespace.listFiles();
 				if(versions == null) {
 					// tablespace with no versions - this is kind of weird, we can fail or log a warning...
 					.warn("Useless tablespace folder with no versions: " + tablespace);
 					continue;
 				}
 				for(File version : versions) {
 					Long versionName = new Long(version.getName());
 					File[] partitions = version.listFiles();
 					if(partitions == null) {
 						// version with no partitions - this is kind of weird, we can fail or log a warning...
 						.warn("Useless version folder with no partitions: " + version);
 						continue;
 					}
					for(File partition : partitions) {
						if(!partition.isDirectory()) {
							if(!partition.getName().endsWith("meta")) {
								.warn("A partition file that is not a folder nor a .meta file: " + partition);
							}
							continue;
						}
						if(partition.list() == null || partition.list().length < 1) {
							.warn("An empty partition folder: " + partition);
							continue;
						}
						Integer partitionName = new Integer(partition.getName());
						File metadataFile = DNodeHandler.getLocalMetadataFile(configtablespaceNamepartitionNameversionName);
						ThriftReader reader = new ThriftReader(metadataFile);
						reader.close();
						if(.get(tablespaceName) == null) {
							.put(tablespaceNamenew HashMap<LongMap<Integer,PartitionMetadata>>());
						}
						if(.get(tablespaceName).get(versionName) == null) {
							.get(tablespaceName).put(versionNamenew HashMap<IntegerPartitionMetadata>());
						}
						.get(tablespaceName).get(versionName).put(partitionNamemetadata);
					}
				}
			}
catch(IOException e) {
			.error("Corrupted metadata file"e);
			throw new RuntimeException("Corrupted metadata file"e);
		}
	}
	// -------------- Getters & setters -------------- //
	public String getAddress() {
		return ;
	}
	public void setAddress(String address) {
		this. = address;
	}
  }
	public void setHttpExchangerAddress(String httpExchangerAddress) {
  	this. = httpExchangerAddress;
  }
		return ;
	}
	public void setServingInfo(Map<StringMap<LongMap<IntegerPartitionMetadata>>> servingInfo) {
		this. = servingInfo;
	}
New to GrepCode? Check out our FAQ X