@Override public void init() throws Exception { if (username == null) { throw new IllegalArgumentException("Rackspace 'username' must not be null"); } if (apiKey == null) { throw new IllegalArgumentException("Rackspace 'apiKey' must not be null"); } if (region == null || (!region.equals("UK") && !region.equals("US"))) { throw new IllegalArgumentException("Invalid 'region', must be UK or US"); } URL authURL = new URL(region.equals("UK") ? UKService : USService); rackspaceClient = new RackspaceClient(authURL, username, apiKey); super.init(); }
public void findMembers(final List<Address> members, final boolean initial_discovery, Responses responses) { try { readAll(members, cluster_name, responses); if(responses.isEmpty()) { PhysicalAddress physical_addr=(PhysicalAddress)down(new Event(Event.GET_PHYSICAL_ADDRESS,local_addr)); PingData coord_data=new PingData(local_addr, true, NameCache.get(local_addr), physical_addr).coord(is_coord); write(Collections.singletonList(coord_data), cluster_name); return; handleDiscoveryResponse(data, data.sender); sendDiscoveryResponse(local_addr, phys_addr, NameCache.get(local_addr), null, false); && !initial_discovery && is_coord && (data == null || !data.isCoord()) && !isInfoWriterRunning()) { writeAll();
@Override public void stop() { super.stop(); if(is_coord) removeAll(cluster_name); }
protected void remove(String clustername, Address addr) { if(clustername == null || addr == null) return; File dir=new File(root_dir, clustername); if(!dir.exists()) return; String filename=addressToFilename(addr); File file=new File(dir, filename); deleteFile(file); }
public void init() throws Exception { super.init(); createRootDir(); if(register_shutdown_hook) { Runtime.getRuntime().addShutdownHook(new Thread(() -> remove(cluster_name, local_addr))); } }
protected void write(List<PingData> list, String clustername) { File dir=new File(root_dir, clustername); if(!dir.exists()) dir.mkdir(); String filename=addressToFilename(local_addr); File destination=new File(dir, filename); try { write(list, new FileOutputStream(destination)); } catch(Exception ioe) { log.error(Util.getMessage("AttemptToWriteDataFailedAt") + clustername + " : " + destination.getName(), ioe); deleteFile(destination); } }
public void findMembers(final List<Address> members, final boolean initial_discovery, Responses responses) { try { readAll(members, cluster_name, responses); if(responses.isEmpty()) { PhysicalAddress physical_addr=(PhysicalAddress)down(new Event(Event.GET_PHYSICAL_ADDRESS,local_addr)); PingData coord_data=new PingData(local_addr, true, NameCache.get(local_addr), physical_addr).coord(is_coord); write(Collections.singletonList(coord_data), cluster_name); return; } PhysicalAddress phys_addr=(PhysicalAddress)down_prot.down(new Event(Event.GET_PHYSICAL_ADDRESS, local_addr)); PingData data=responses.findResponseFrom(local_addr); // the logical addr *and* IP address:port have to match if(data != null && data.getPhysicalAddr().equals(phys_addr)) { if(data.isCoord() && initial_discovery) responses.clear(); else ; // use case #1 if we have predefined files: most members join but are not coord } else { sendDiscoveryResponse(local_addr, phys_addr, NameCache.get(local_addr), null, false); } } finally { responses.done(); } }
if(file.exists()) { try { if((list=read(file)) != null) break; responses.addResponse(data, true); if(local_addr != null && !local_addr.equals(data.getAddress())) addDiscoveryResponseToCaches(data.getAddress(), data.getLogicalName(), data.getPhysicalAddr());
public Object down(Event evt) { switch (evt.getType()) { case Event.CONNECT: case Event.CONNECT_USE_FLUSH: case Event.CONNECT_WITH_STATE_TRANSFER: case Event.CONNECT_WITH_STATE_TRANSFER_USE_FLUSH: discoveryPath = ROOT_PATH + evt.getArg(); localNodePath = discoveryPath + "/" + addressAsString(local_addr); _createRootDir(); break; } return super.down(evt); }
public Object down(Event evt) { switch(evt.getType()) { case Event.VIEW_CHANGE: View old_view=view; boolean previous_coord=is_coord; Object retval=super.down(evt); View new_view=evt.getArg(); handleView(new_view, old_view, previous_coord != is_coord); return retval; } return super.down(evt); }
protected static String addressToFilename(Address mbr) { String logical_name=NameCache.get(mbr); String name=(addressAsString(mbr) + (logical_name != null? "." + logical_name + SUFFIX : SUFFIX)); return regexp.matcher(name).replaceAll("-"); }
protected void write(List<PingData> list, String clustername) { File dir=new File(root_dir, clustername); if(!dir.exists()) dir.mkdir(); String filename=addressToFilename(local_addr); File destination=new File(dir, filename); try { write(list, new FileOutputStream(destination)); } catch(Exception ioe) { log.error(Util.getMessage("AttemptToWriteDataFailedAt") + clustername + " : " + destination.getName(), ioe); deleteFile(destination); } }
protected void remove(String clustername, Address addr) { if(clustername == null || addr == null) return; File dir=new File(root_dir, clustername); if(!dir.exists()) return; String filename=addressToFilename(addr); File file=new File(dir, filename); deleteFile(file); }
public void init() throws Exception { super.init(); createRootDir(); if(register_shutdown_hook) { Runtime.getRuntime().addShutdownHook(new Thread(() -> remove(cluster_name, local_addr))); } }
if(file.exists()) { try { if((list=read(file)) != null) break; responses.addResponse(data, true); if(local_addr != null && !local_addr.equals(data.getAddress())) addDiscoveryResponseToCaches(data.getAddress(), data.getLogicalName(), data.getPhysicalAddr());
public Object down(Event evt) { switch(evt.getType()) { case Event.VIEW_CHANGE: View old_view=view; boolean previous_coord=is_coord; Object retval=super.down(evt); View new_view=evt.getArg(); handleView(new_view, old_view, previous_coord != is_coord); return retval; } return super.down(evt); }
protected static String addressToFilename(Address mbr) { String logical_name=NameCache.get(mbr); String name=(addressAsString(mbr) + (logical_name != null? "." + logical_name + SUFFIX : SUFFIX)); return regexp.matcher(name).replaceAll("-"); }
@Override public void init() throws Exception { super.init(); verifyConfigurationParameters(); // If dataSource is already set, skip loading driver or JNDI lookup if (dataSource == null) { if (stringIsEmpty(datasource_jndi_name)) { loadDriver(); } else { dataSource = getDataSourceFromJNDI(datasource_jndi_name.trim()); } } attemptSchemaInitialization(); }
@Override public void stop() { super.stop(); if(is_coord) removeAll(cluster_name); }
@Override public void init() throws Exception { super.init(); if(host == null) host=Utils.DEFAULT_HOST;