List of usage examples for java.util.concurrent ExecutionException ExecutionException
public ExecutionException(String message, Throwable cause)
From source file:cat.calidos.morfeu.model.injection.DocumentModule.java
@Produces public static Document produceDocument(@Named("NormalisedDocument") Document doc, Provider<ModelSubcomponent.Builder> modelComponentProvider, Provider<ContentParserSubcomponent.Builder> contentParserComponentProvider) throws ExecutionException { // FIXME: what exception should we throw here? Model model;//from w w w .j a v a 2 s . c om try { model = modelComponentProvider.get().builder().model().get(); doc.setModel(model); ContentParserSubcomponent contentParser = contentParserComponentProvider.get().builder(); doc.setValidator(contentParser.validator().get()); doc.validate(); // if this does not throw an exception, it means content is valid doc.setContent(contentParser.content().get()); } catch (Exception e) { throw new ExecutionException("Problem with model of document '" + doc.getName() + "' with model: '" + doc.getModelURI() + "'", e); } return doc; }
From source file:de.fiz.ddb.aas.utils.LDAPEngineUtilityOrganisation.java
protected Organisation convertLdapOrganizationToOrganisation( NamingEnumeration<SearchResult> pOrganizationResult, NamingEnumeration<SearchResult> pPrivilegesResult) throws ExecutionException, NameNotFoundException { Organisation vOrganisation = null;/*w w w . jav a2s.com*/ try { if ((pOrganizationResult != null) && pOrganizationResult.hasMore()) { SearchResult sr = pOrganizationResult.next(); vOrganisation = convertSearchResultToOrganization(sr); // -- Organization privileges: vOrganisation = this.convertLdapGroupsToOrganizationPrivileges(vOrganisation, pPrivilegesResult); } } catch (NameNotFoundException ex) { LOG.log(Level.SEVERE, null, ex); throw ex; } catch (NamingException ne) { LOG.log(Level.SEVERE, null, ne); throw new ExecutionException(ne.getMessage(), ne.getCause()); } finally { // -- releases this context's resources immediately, instead of waiting for the garbage collector if (pOrganizationResult != null) { try { pOrganizationResult.close(); } catch (NamingException ex) { } } } return vOrganisation; }
From source file:de.fiz.ddb.aas.auxiliaryoperations.ThreadOrganisationSetApprove.java
@PreAuthorize(privileges = { PrivilegeEnum.ADMIN }, scope = Scope.ORGANIZATION, cacheUpdate = true) public Organisation call() throws AASUnauthorizedException, ExecutionException, IllegalAccessException { if (ConstEnumOrgStatus.approved.equals(this._organisation.getStatus())) { throw new ExecutionException("Die Institution ist bereits in der Status 'approved'.", null); }/* ww w. j av a 2 s. c o m*/ Future<Organisation> submitOrgOnWorkDir = null; Future<Organisation> submitOrgOnLicencedDir = null; Future<Organisation> submitOrgParentOnLicencedDir = null; Future<Organisation> submitOrgParentOnWorkDir = null; Organisation vOrgParentOnLicenceDir = null; Organisation vOrgParentOnWorkDir = null; try { // -- set a new status: this._organisation.setStatus(ConstEnumOrgStatus.approved); // -- save status: ThreadOrganisationUpdate threadOrganisationUpdate = new ThreadOrganisationUpdate(_ready, _organisation, false, _performer); threadOrganisationUpdate.setChangeOfStatus(true); submitOrgOnWorkDir = LDAPConnector.getSingletonInstance().getExecutorServiceOne() .submit(threadOrganisationUpdate); // -- Ist diese Organisation unter Licensed schon vorhanden? // -- Read organization on the license directory: ThreadOrganisationRead threadOrgOnLicencedDirRead = new ThreadOrganisationRead( new OIDs(this._organisation.getOIDs().getOrgName(), false), this.getPerformer()); // -- the request goes to the branch with licensed organizations: threadOrgOnLicencedDirRead.setLicensedOrgs(true); submitOrgOnLicencedDir = LDAPConnector.getSingletonInstance().getExecutorServiceOne() .submit(threadOrgOnLicencedDirRead); // -- Operations in the licensed area... Boolean vIsOrgParentLicense = null; if (this._organisation.getOrgParent() != null) { // -- Parent on the license directory: ThreadOrganisationRead threadOrgParentOnLicencedDirRead = new ThreadOrganisationRead( new OIDs(this._organisation.getOrgParent(), false), this.getPerformer()); // -- the request goes to the branch with licensed organizations: threadOrgParentOnLicencedDirRead.setLicensedOrgs(true); submitOrgParentOnLicencedDir = LDAPConnector.getSingletonInstance().getExecutorServiceOne() .submit(threadOrgParentOnLicencedDirRead); // -- Parent on the work directory: ThreadOrganisationRead threadOrgParentOnWorkDirRead = new ThreadOrganisationRead( new OIDs(this._organisation.getOrgParent(), false), this.getPerformer()); // -- the request goes to the branch with licensed organizations: submitOrgParentOnWorkDir = LDAPConnector.getSingletonInstance().getExecutorServiceOne() .submit(threadOrgParentOnWorkDirRead); // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // -- Parent on the license directory: try { //vIsOrgParentLicense = (threadOrgParentOnLicencedDirRead.call() != null); vIsOrgParentLicense = ((vOrgParentOnLicenceDir = submitOrgParentOnLicencedDir.get(3, TimeUnit.SECONDS)) != null); } /* catch (NameNotFoundException ex) { // hier gibt es keinen Grund zur Panik! ;-) vIsOrgParentLicense = Boolean.FALSE; } */ catch (ExecutionException ex) { if ((ex.getCause() != null) && (ex.getCause().getClass().isAssignableFrom(NameNotFoundException.class))) { // hier gibt es keinen Grund zur Panik! ;-) vIsOrgParentLicense = Boolean.FALSE; } else { throw ex; } } catch (InterruptedException ex) { throw new ExecutionException(ex); } catch (TimeoutException ex) { throw new ExecutionException(ex); } } try { // -- Update abwarten this._organisation = submitOrgOnWorkDir.get(3, TimeUnit.SECONDS); // -- die Organisation wenn mglich in der lizenzierte Verzeichnis schreiben: if ((vIsOrgParentLicense == null) || (vIsOrgParentLicense.booleanValue())) { // -- ! This institution is classified to the licensed organizations: Organisation vOrgOnLicensedDir = null; try { vOrgOnLicensedDir = submitOrgOnLicencedDir.get(3, TimeUnit.SECONDS); if (!vOrgOnLicensedDir.getOrgRDN().equalsIgnoreCase(this._organisation.getOrgRDN())) { /* * The shift operation works beautifully but may cause to error, because there are * potential changes from the sub-organizations in the Work Directory will not be included. * ...therefore the Orgnanisation is first deleted and then will be re-copied ThreadOrganisationMove threadOrganisationMove = new ThreadOrganisationMove(vOrgOnLicensedDir.getOIDs().getOrgName(), this._organisation .getOrgParent(), true, _performer); vOrgOnLicensedDir = threadOrganisationMove.call(); */ this.deletingFromLicensedOrgsDir(vOrgOnLicensedDir); // -- !!! very important for further processing: vOrgOnLicensedDir = null; } } /* catch (NameNotFoundException ex) { // es gibt keinen Grund zur Panik! ;-) } */ catch (ExecutionException ex) { if ((ex.getCause() != null) && (ex.getCause().getClass().isAssignableFrom(NameNotFoundException.class))) { // hier gibt es keinen Grund zur Panik... } else { // hier aber schon... throw ex; } } catch (InterruptedException ex) { throw new ExecutionException(ex); } catch (TimeoutException ex) { throw new ExecutionException(ex); } if (vOrgOnLicensedDir != null) { if (!ConstEnumOrgStatus.revised.equals(this._oldStatus)) { // -- This should be never happen: LOG.log(Level.WARNING, "The old status is not ''revised'' but this organization is between the Licensed: this should never be happen! Old status: ''{0}''", this._oldStatus.name()); } // -- !!! The organization could not be moved: if (vOrgOnLicensedDir.getOrgRDN().equals(this._organisation.getOrgRDN())) { // -- Update licensed organization: try { threadOrganisationUpdate = new ThreadOrganisationUpdate(_ready, _organisation, false, _performer); threadOrganisationUpdate.setUpdatingOfLicensedOrgs(true); threadOrganisationUpdate.call(); } catch (NameNotFoundException ex) { throw new ExecutionException(ex); } catch (AttributeModificationException ex) { throw new ExecutionException(ex); } } else { LOG.log(Level.WARNING, "The licensed (RDN='" + vOrgOnLicensedDir.getOrgRDN() + "') organization can not be updated because it has been postponed to new RDN='" + this._organisation.getOrgRDN() + "'"); } } else { // -- Der Knoten sollte kopiert werden aber nur unter einem Bedingung... if (submitOrgParentOnWorkDir != null) { // -- Parent on the work directory: try { vOrgParentOnWorkDir = submitOrgParentOnWorkDir.get(3, TimeUnit.SECONDS); } catch (ExecutionException ex) { if ((ex.getCause() != null) && (ex.getCause().getClass() .isAssignableFrom(NameNotFoundException.class))) { // hier gibt es keinen Grund zur Panik! ;-) } else { throw ex; } } catch (InterruptedException ex) { throw new ExecutionException(ex); } catch (TimeoutException ex) { throw new ExecutionException(ex); } } // ...dass die RDN des Parnts- Knoten stimmt, das heit, dass die nicht verschoben wurde: if (((vOrgParentOnWorkDir != null) && (vOrgParentOnLicenceDir != null) && (vOrgParentOnWorkDir.getOrgRDN().equals(vOrgParentOnLicenceDir.getOrgRDN()))) || ((vOrgParentOnWorkDir == null) && (vOrgParentOnLicenceDir == null))) { this.copyingToLicensedOrgs(_organisation); } } } } catch (InterruptedException ex) { throw new ExecutionException(ex); } catch (TimeoutException ex) { throw new ExecutionException(ex); } } finally { if ((submitOrgOnWorkDir != null) && (!submitOrgOnWorkDir.isDone()) && (!submitOrgOnWorkDir.isCancelled())) { submitOrgOnWorkDir.cancel(true); } if ((submitOrgOnLicencedDir != null) && (!submitOrgOnLicencedDir.isDone()) && (!submitOrgOnLicencedDir.isCancelled())) { submitOrgOnLicencedDir.cancel(true); } if ((submitOrgParentOnWorkDir != null) && (!submitOrgParentOnWorkDir.isDone()) && (!submitOrgParentOnWorkDir.isCancelled())) { submitOrgParentOnWorkDir.cancel(true); } if ((submitOrgParentOnLicencedDir != null) && (!submitOrgParentOnLicencedDir.isDone()) && (!submitOrgParentOnLicencedDir.isCancelled())) { submitOrgParentOnLicencedDir.cancel(true); } } return this._organisation; }
From source file:de.fiz.ddb.aas.utils.LDAPEngineUtilityOrganisation.java
protected Organisation convertSearchResultToOrganization(final SearchResult sr) throws ExecutionException, NameNotFoundException { if (sr == null) { throw new ExecutionException("SearchResult sr == NULL", new NullPointerException()); }//w w w. jav a2s. co m Organisation vOrganisation = null; try { Attributes attributes = sr.getAttributes(); Attribute attr; String vStr; String vOrgName = ((attr = attributes.get(Constants.ldap_ddbOrg_Id)) != null ? String.valueOf(attr.get()) : null); String vName = sr.getName(); String vNameInNamespace = sr.getNameInNamespace(); // --- EntryDN String vEntryDN = ((attr = attributes.get(Constants.ldap_ddb_EntryDN)) != null ? String.valueOf(attr.get()) : ""); int idx; // -- Parent node detections: String vParent = null; //vParent = sr.getName(); //LOG.log(Level.INFO, "getNameInNamespace() = '" + sr.getNameInNamespace() + "'"); //LOG.log(Level.INFO, "getName() = '" + sr.getName() + "'"); // -- getNameInNamespace() = 'o=99900711,o=00008125,o=00050350,ou=Organizations,dc=de' // -- getName() = 'o=99900711,o=00008125,o=00050350' //sr.getName(): 'o=00000116', //sr.getNameInNamespace(): 'o=00000116,o=00050350,ou=Organizations,dc=de', //vOrgEntryDN: 'o=00000116,o=00050350,ou=Organizations,dc=de' vParent = sr.getNameInNamespace(); if ((idx = vParent.indexOf(",ou=")) >= 0) { vParent = vParent.substring(0, idx); } vParent = vParent.replaceAll(Constants.ldap_ddbOrg_Id + "=", ""); // -- 99900711,00008125,00050350' String[] vParents = vParent.split(","); if (vParents.length >= 2) { vParent = vParents[1]; } else { vParent = null; } LOG.log(Level.INFO, "convertLdapOrganizationToOrganisation: o: '" + vOrgName + "', vParent: '" + vParent + "', sr.getName(): '" + vName + "', sr.getNameInNamespace(): '" + vNameInNamespace + "', vOrgEntryDN: '" + vEntryDN + "', sr.isRelative(): '" + sr.isRelative() + "'"); /* * if ( (vOrgName != null)&&(!vOrgName.isEmpty()) ) { vOrganisation = new Organisation(vOrgName, * vDescription, vParent); */ if ((vEntryDN != null) && (!vEntryDN.isEmpty())) { vOrganisation = new Organisation(vEntryDN, (attr = sr.getAttributes().get(Constants.ldap_ddbOrg_PID)) != null ? String.valueOf(attr.get()) : null); // Public-ID: (s.o.) // vOrganisation.setOrgPID( (attr = attributes.get(ddbOrg_PID)) != null ? String.valueOf(attr.get()) : // ""); // Parent (s.o.) vOrganisation.setOrgParent(vParent); // Kurzbeschreibung der Einrichtung vOrganisation.setDescription((attr = attributes.get(Constants.ldap_ddbOrg_Description)) != null ? String.valueOf(attr.get()) : null); // -- Rechtsform try { vOrganisation.setBusinessCategory( (attr = attributes.get(Constants.ldap_ddbOrg_BusinessCategory)) != null ? ConstEnumOrgSector.valueOf(String.valueOf(attr.get())) : null); } catch (IllegalArgumentException ex) { LOG.log(Level.WARNING, "Organisation-Sector-Error: {0}", ex.getMessage()); vOrganisation.setStatus(null); } // -- Sub-Sectors: if ((attr = attributes.get(Constants.ldap_ddbOrg_SubBusinessCategory)) != null) { ConstEnumOrgSubSector vSubSector; NamingEnumeration<?> allSubSectors = attr.getAll(); while (allSubSectors.hasMore()) { try { vSubSector = ConstEnumOrgSubSector.valueOf((String) allSubSectors.next()); vOrganisation.addSubSectors(vSubSector); } catch (IllegalArgumentException ex) { LOG.log(Level.WARNING, "Organisation-SubSector-Error: {0}", ex.getMessage()); } } } // -- Funding Agency vOrganisation.setFundingAgency((attr = attributes.get(Constants.ldap_ddbOrg_FundingAgency)) != null ? String.valueOf(attr.get()) : null); // Name der Einrichtung vOrganisation.setDisplayName((attr = attributes.get(Constants.ldap_ddbOrg_DisplayName)) != null ? String.valueOf(attr.get()) : ""); // E-Mail vOrganisation.setEmail( (attr = attributes.get(Constants.ldap_ddbOrg_Email)) != null ? String.valueOf(attr.get()) : null); // Telefonnummer vOrganisation.setTel((attr = attributes.get(Constants.ldap_ddbOrg_TelephoneNumber)) != null ? String.valueOf(attr.get()) : null); // -- FAX vOrganisation.setFax((attr = attributes.get(Constants.ldap_ddbOrg_FaxNumber)) != null ? String.valueOf(attr.get()) : null); // -- PLZ vOrganisation.getAddress() .setPostalCode((attr = attributes.get(Constants.ldap_ddbOrg_PostalCode)) != null ? String.valueOf(attr.get()) : ""); // -- City/Ortsname [l, localityName] if ((attr = attributes.get(Constants.ldap_ddbOrg_LocalityName)) != null) { vOrganisation.getAddress().setLocalityName(String.valueOf(attr.get())); } else if ((attr = attributes.get("l")) != null) { vOrganisation.getAddress().setLocalityName(String.valueOf(attr.get())); } // -- HouseIdentifier vOrganisation.getAddress() .setHouseIdentifier((attr = attributes.get(Constants.ldap_ddbOrg_HouseIdentifier)) != null ? String.valueOf(attr.get()) : ""); // -- Strasse vOrganisation.getAddress() .setStreet((attr = attributes.get(Constants.ldap_ddbOrg_Street)) != null ? String.valueOf(attr.get()) : ""); // -- Bundesland [stateOrProvinceName, st] if ((attr = attributes.get(Constants.ldap_ddbOrg_StateOrProvinceName)) != null) { vOrganisation.getAddress().setStateOrProvinceName(String.valueOf(attr.get())); } else if ((attr = attributes.get("st")) != null) { vOrganisation.getAddress().setStateOrProvinceName(String.valueOf(attr.get())); } // -- Land [countryName, c] if ((attr = attributes.get(Constants.ldap_ddbOrg_CountryName)) != null) { vOrganisation.getAddress().setCountryName(String.valueOf(attr.get())); } // -- AddressSuplement vOrganisation.getAddress() .setAddressSuplement((attr = attributes.get(Constants.ldap_ddbOrg_AddressSuplement)) != null ? String.valueOf(attr.get()) : ""); // -- Geokoordinaten try { vOrganisation.getAddress() .setLatitude((attr = attributes.get(Constants.ldap_ddbOrg_GeoLatitude)) != null ? Double.valueOf(String.valueOf(attr.get())) : 0.0); } catch (NumberFormatException ex) { LOG.log(Level.WARNING, "GeoLatitude-Error: {0}", ex.getMessage()); } try { vOrganisation.getAddress() .setLongitude((attr = attributes.get(Constants.ldap_ddbOrg_GeoLongitude)) != null ? Double.valueOf(String.valueOf(attr.get())) : 0.0); } catch (NumberFormatException ex) { LOG.log(Level.WARNING, "GeoLongitude-Error: {0}", ex.getMessage()); } vOrganisation.getAddress().setLocationDisplayName( (attr = attributes.get(Constants.ldap_ddbOrg_LocationDisplayName)) != null ? String.valueOf(attr.get()) : null); vOrganisation.setAbbreviation((attr = attributes.get(Constants.ldap_ddbOrg_Abbreviation)) != null ? String.valueOf(attr.get()) : null); vOrganisation.setLegalStatus((attr = attributes.get(Constants.ldap_ddbOrg_LegalStatus)) != null ? String.valueOf(attr.get()) : null); if ((attr = attributes.get(Constants.ldap_ddbOrg_URL)) != null) { NamingEnumeration<?> allURLs = attr.getAll(); while (allURLs.hasMore()) { vOrganisation.addURLs((String) allURLs.next()); } } vOrganisation.setLogo( (attr = attributes.get(Constants.ldap_ddbOrg_Logo)) != null ? String.valueOf(attr.get()) : null); // -- org-Status: //vOrganisation.setStatus((attr = attributes.get(Constants.ldap_ddbOrg_Status)) != null ? String // .valueOf(attr.get()) : ""); try { vOrganisation.setStatus((attr = attributes.get(Constants.ldap_ddbOrg_Status)) != null ? ConstEnumOrgStatus.valueOf(String.valueOf(attr.get())) : ConstEnumOrgStatus.pending); } catch (IllegalArgumentException ex) { LOG.log(Level.WARNING, "Organisation-Status-Error: {0}", ex.getMessage()); vOrganisation.setStatus(null); } vOrganisation.setCreatedBy((attr = attributes.get(Constants.ldap_ddb_CreatorsName)) != null ? String.valueOf(attr.get()) : ""); try { // createTimestamp-Error: For input string: "20120620142810Z" // 1340205676692 - 20120620152116Z - 2012-06-20-15-21-16Z // vOrganisation.setCreated( (attr = attributes.get(ddbOrg_CreateTimestamp)) != null ? // Long.valueOf(String.valueOf(attr.get())) : Long.valueOf(-1)); if ((attr = attributes.get(Constants.ldap_ddb_CreateTimestamp)) != null) { vStr = String.valueOf(attr.get()); vOrganisation.setCreated(convertLdapDateToLong(vStr)); } } catch (NumberFormatException ex) { LOG.log(Level.WARNING, "createTimestamp-Error: {0}", ex.getMessage()); } vOrganisation.setModifiedBy((attr = attributes.get(Constants.ldap_ddb_ModifiersName)) != null ? String.valueOf(attr.get()) : ""); try { // modifyTimestamp-Error: For input string: "20120620142810Z" // vOrganisation.setModified( (attr = attributes.get(ddbOrg_ModifyTimestamp)) != null ? // Long.valueOf(String.valueOf(attr.get())) : Long.valueOf(-1)); if ((attr = attributes.get(Constants.ldap_ddb_ModifyTimestamp)) != null) { vStr = String.valueOf(attr.get()); vOrganisation.setModified(convertLdapDateToLong(vStr)); } } catch (NumberFormatException ex) { LOG.log(Level.WARNING, "modifyTimestamp-Error: {0}", ex.getMessage()); } if ((attr = attributes.get(Constants.ldap_ddbOrg_Properties)) != null && attributes.get(Constants.ldap_ddbOrg_Properties).get() != null) { vOrganisation.setProperties(serializer.deserialize((String) attr.get())); } } else { throw new NameNotFoundException(); } } catch (IllegalAccessException ex) { LOG.log(Level.SEVERE, null, ex); throw new ExecutionException(ex.getMessage(), ex.getCause()); } catch (NameNotFoundException ex) { LOG.log(Level.SEVERE, null, ex); throw ex; } catch (NamingException ne) { LOG.log(Level.SEVERE, null, ne); throw new ExecutionException(ne.getMessage(), ne.getCause()); } return vOrganisation; }
From source file:com.ignorelist.kassandra.steam.scraper.FileCache.java
@Override public InputStream get(String key, Callable<? extends InputStream> valueLoader) throws ExecutionException { InputStream inputStream = getIfPresent(key); if (null != inputStream) { return inputStream; }/*www . j ava 2 s. c o m*/ final Lock writeLock = stripedLock.get(key).writeLock(); writeLock.lock(); try { inputStream = getIfPresentNonBlocking(key); if (null != inputStream) { return inputStream; } try { inputStream = valueLoader.call(); try { putNonBlocking(key, inputStream); return getIfPresentNonBlocking(key); } catch (IOException ex) { Logger.getLogger(FileCache.class.getName()).log(Level.SEVERE, "failed to write cache file", ex); throw new ExecutionException("failed to load " + key, ex); } } catch (Exception e) { Logger.getLogger(FileCache.class.getName()).log(Level.SEVERE, null, e); throw new ExecutionException(e); } } finally { writeLock.unlock(); } }
From source file:org.openspaces.grid.gsm.containers.ContainersSlaUtils.java
static FutureGridServiceContainer startGridServiceContainerAsync(final InternalAdmin admin, final InternalGridServiceAgent gsa, final GridServiceContainerConfig config, final Log logger, final long duration, final TimeUnit timeUnit) { final AtomicReference<Object> ref = new AtomicReference<Object>(null); final long startTimestamp = System.currentTimeMillis(); final long end = startTimestamp + timeUnit.toMillis(duration); admin.scheduleAdminOperation(new Runnable() { public void run() { try { final OperatingSystemStatistics operatingSystemStatistics = gsa.getMachine() .getOperatingSystem().getStatistics(); // get total free system memory + cached (without sigar returns -1) long freeBytes = operatingSystemStatistics.getActualFreePhysicalMemorySizeInBytes(); if (freeBytes <= 0) { // fallback - no sigar. Provides a pessimistic number since does not take into // account OS cache that can be allocated. freeBytes = operatingSystemStatistics.getFreePhysicalMemorySizeInBytes(); if (freeBytes <= 0) { // machine is probably going down. ref.set(new AdminException("Cannot determine machine " + machineToString(gsa.getMachine()) + " free memory.")); }//from w w w . j av a 2 s . co m } final long freeInMB = MemoryUnit.MEGABYTES.convert(freeBytes, MemoryUnit.BYTES); if (freeInMB < config.getMaximumJavaHeapSizeInMB()) { ref.set(new AdminException("Machine " + machineToString(gsa.getMachine()) + " free memory " + freeInMB + "MB is not enough to start a container with " + config.getMaximumJavaHeapSizeInMB() + "MB. Free machine memory or increase machine provisioning reservedMemoryPerMachine property.")); } else { ref.set(gsa.internalStartGridService(config)); } } catch (AdminException e) { ref.set(e); } catch (Throwable e) { logger.error("Unexpected Exception " + e.getMessage(), e); ref.set(e); } } }); FutureGridServiceContainer future = new FutureGridServiceContainer() { public boolean isTimedOut() { return System.currentTimeMillis() > end; } public ExecutionException getException() { Object result = ref.get(); if (result != null && result instanceof Throwable) { Throwable throwable = (Throwable) result; return new ExecutionException(throwable.getMessage(), throwable); } return null; } public GridServiceContainer get() throws ExecutionException, IllegalStateException, TimeoutException { Object result = ref.get(); if (getException() != null) { throw getException(); } GridServiceContainer container = null; if (result != null) { int agentId = (Integer) result; container = getGridServiceContainerInternal(agentId); //container could still be null if not discovered } if (container == null) { if (isTimedOut()) { throw new TimeoutException("Starting a new container took more than " + timeUnit.toSeconds(duration) + " seconds to complete."); } throw new IllegalStateException("Async operation is not done yet."); } return container; } public boolean isDone() { Object result = ref.get(); if (System.currentTimeMillis() > end) { return true; } if (result == null) { return false; } if (result instanceof Throwable) { return true; } GridServiceContainer container = getGridServiceContainerInternal((Integer) result); if (container != null) { return true; } return false; } public GridServiceContainer getGridServiceContainerInternal(int agentId) { for (GridServiceContainer container : admin.getGridServiceContainers()) { String agentUid = ((InternalGridServiceContainer) container).getAgentUid(); if (agentUid != null && agentUid.equals(gsa.getUid())) { if (agentId == container.getAgentId()) { return container; } } } return null; } public GridServiceAgent getGridServiceAgent() { return gsa; } public GridServiceContainerConfig getGridServiceContainerConfig() { return config; } public Date getTimestamp() { return new Date(startTimestamp); } @Override public int getAgentId() throws ExecutionException, TimeoutException { ExecutionException exception = getException(); if (exception != null) { throw exception; } if (isTimedOut() && ref.get() == null) { throw new TimeoutException( "Starting a new container on machine " + gsa.getMachine().getHostAddress() + " took more than " + timeUnit.toSeconds(duration) + " seconds to complete."); } if (ref.get() == null) { throw new IllegalStateException("Async operation is not done yet."); } return (Integer) ref.get(); } public boolean isStarted() { return ref.get() != null; } }; return future; }
From source file:org.grouplens.lenskit.util.parallel.TaskGraphManager.java
public synchronized void waitForFinished() throws ExecutionException, InterruptedException { while (!isFinished() && !threads.isEmpty()) { try {/*w w w . jav a2 s . c o m*/ wait(); } catch (InterruptedException ex) { for (Thread th : threads) { try { th.join(); } catch (InterruptedException ex2) { logger.debug("interrupted waiting for interrupted thread to finish", ex2); } } if (!errors.isEmpty()) { throw new ExecutionException("thread in group " + name + " failed", errors.get(0).getRight()); } else { throw ex; } } } if (!errors.isEmpty()) { throw new ExecutionException("thread in group " + name + " failed", errors.get(0).getRight()); } if (!isFinished()) { // all threads terminated, but we aren't marked as finished logger.warn("threads terminated, but not finished - job problem?"); } }
From source file:org.openspaces.grid.gsm.rebalancing.RebalancingUtils.java
static Collection<FutureStatelessProcessingUnitInstance> incrementNumberOfStatelessInstancesAsync( final ProcessingUnit pu, final GridServiceContainer[] containers, final Log logger, final long duration, final TimeUnit timeUnit) { if (pu.getMaxInstancesPerVM() != 1) { throw new IllegalArgumentException("Only one instance per VM is allowed"); }/* www. j a v a2 s. c o m*/ List<GridServiceContainer> unusedContainers = getUnusedContainers(pu, containers); final Admin admin = pu.getAdmin(); final Map<GridServiceContainer, FutureStatelessProcessingUnitInstance> futureInstances = new HashMap<GridServiceContainer, FutureStatelessProcessingUnitInstance>(); final AtomicInteger targetNumberOfInstances = new AtomicInteger(pu.getNumberOfInstances()); final long start = System.currentTimeMillis(); final long end = start + timeUnit.toMillis(duration); for (GridServiceContainer container : unusedContainers) { final GridServiceContainer targetContainer = container; futureInstances.put(container, new FutureStatelessProcessingUnitInstance() { AtomicReference<Throwable> throwable = new AtomicReference<Throwable>(); ProcessingUnitInstance newInstance; public boolean isTimedOut() { return System.currentTimeMillis() > end; } public boolean isDone() { end(); return isTimedOut() || throwable.get() != null || newInstance != null; } public ProcessingUnitInstance get() throws ExecutionException, IllegalStateException, TimeoutException { end(); if (getException() != null) { throw getException(); } if (newInstance == null) { if (isTimedOut()) { throw new TimeoutException("Relocation timeout"); } throw new IllegalStateException("Async operation is not done yet."); } return newInstance; } public Date getTimestamp() { return new Date(start); } public ExecutionException getException() { end(); Throwable t = throwable.get(); if (t != null) { return new ExecutionException(t.getMessage(), t); } return null; } public GridServiceContainer getTargetContainer() { return targetContainer; } public ProcessingUnit getProcessingUnit() { return pu; } public String getFailureMessage() throws IllegalStateException { if (isTimedOut()) { return "deployment timeout of processing unit " + pu.getName() + " on " + gscToString(targetContainer); } if (getException() != null) { return getException().getMessage(); } throw new IllegalStateException("Relocation has not encountered any failure."); } private void end() { if (!targetContainer.isDiscovered()) { throwable.set(new RemovedContainerProcessingUnitDeploymentException(pu, targetContainer)); } else if (throwable.get() != null || newInstance != null) { //do nothing. idempotent method } else { incrementInstance(); ProcessingUnitInstance[] instances = targetContainer .getProcessingUnitInstances(pu.getName()); if (instances.length > 0) { newInstance = instances[0]; } } } private void incrementInstance() { final String uuid = "[incrementUid:" + UUID.randomUUID().toString() + "] "; int numberOfInstances = pu.getNumberOfInstances(); int maxNumberOfInstances = getContainersOnMachines(pu).length; if (numberOfInstances < maxNumberOfInstances) { if (targetNumberOfInstances.get() == numberOfInstances + 1) { if (logger.isInfoEnabled()) { logger.info("Waiting for pu.numberOfInstances to increment from " + numberOfInstances + " to " + targetNumberOfInstances.get() + ". " + "Number of relevant containers " + maxNumberOfInstances); } } else if (admin.getGridServiceManagers().getSize() > 1 && !((InternalProcessingUnit) pu).isBackupGsmInSync()) { if (logger.isInfoEnabled()) { logger.info("Waiting for backup gsm to sync with active gsm"); } } else { targetNumberOfInstances.set(numberOfInstances + 1); if (logger.isInfoEnabled()) { logger.info(uuid + " Planning to increment pu.numberOfInstances from " + numberOfInstances + " to " + targetNumberOfInstances.get() + ". " + "Number of relevant containers " + maxNumberOfInstances); } ((InternalAdmin) admin).scheduleAdminOperation(new Runnable() { public void run() { try { // this is an async operation // pu.getNumberOfInstances() still shows the old value. pu.incrementInstance(); if (logger.isInfoEnabled()) { logger.info(uuid + " pu.incrementInstance() called"); } } catch (AdminException e) { throwable.set(e); } catch (Throwable e) { logger.error(uuid + " Unexpected Exception: " + e.getMessage(), e); throwable.set(e); } } }); } } } }); } return futureInstances.values(); }
From source file:co.cask.hydrator.plugin.batch.source.ExcelInputReader.java
@Override public void transform(KeyValue<LongWritable, Object> input, Emitter<StructuredRecord> emitter) throws Exception { getOutputSchema();/*ww w . jav a 2s. c om*/ StructuredRecord.Builder builder = StructuredRecord.builder(outputSchema); String inputValue = input.getValue().toString(); String[] excelRecords = inputValue.split("\t"); String fileName = excelRecords[1]; String sheetName = excelRecords[2]; String ifEndRow = excelRecords[3]; int prevRowNum = Integer.parseInt(excelRecords[0]); if (filePrevRowNumMap.containsKey(fileName)) { if (prevRowNum - filePrevRowNumMap.get(fileName) > 1 && excelInputreaderConfig.terminateIfEmptyRow.equalsIgnoreCase("true")) { throw new ExecutionException( "Encountered empty row while reading Excel file :" + fileName + " . Terminating processing", new Throwable()); } } filePrevRowNumMap.put(fileName, prevRowNum); Map<String, String> excelColumnValueMap = new HashMap<>(); for (String columns : excelRecords) { String[] columnValueArray = columns.split("\r"); if (columnValueArray.length > 1) { String columnName = columnValueArray[0]; String columnValue = columnValueArray[1]; if (columnMapping.containsKey(columnName)) { excelColumnValueMap.put(columnMapping.get(columnName), columnValue); } else { excelColumnValueMap.put(columnName, columnValue); } } } try { for (Schema.Field field : outputSchema.getFields()) { String fieldName = field.getName(); if (excelColumnValueMap.containsKey(fieldName)) { builder.convertAndSet(fieldName, excelColumnValueMap.get(fieldName)); } else { builder.set(fieldName, NULL); } } builder.set(FILE, new Path(fileName).getName()); builder.set(SHEET, sheetName); if (ifEndRow.equalsIgnoreCase(END)) { trackProcessedFiles(fileName); } emitter.emit(builder.build()); } catch (Exception e) { switch (excelInputreaderConfig.ifErrorRecord) { case EXIT_ON_ERROR: throw new IllegalStateException("Terminating processing on error : " + e.getMessage()); case WRITE_ERROR_DATASET: StructuredRecord.Builder errorRecordBuilder = StructuredRecord.builder(errorRecordSchema); errorRecordBuilder.set(KEY, fileName + "_" + sheetName + "_" + excelRecords[0]); errorRecordBuilder.set(FILE, fileName); errorRecordBuilder.set(SHEET, sheetName); errorRecordBuilder.set(RECORD, inputValue); writeErrorRecordToDataset(errorRecordBuilder.build()); break; default: //ignore on error break; } } }
From source file:org.openspaces.grid.gsm.machines.plugins.NonBlockingElasticMachineProvisioningAdapter.java
@Override public FutureGridServiceAgent[] startMachinesAsync(final CapacityRequirements capacityRequirements, final ExactZonesConfig zones, final FailedGridServiceAgent[] failedAgents, final long duration, final TimeUnit unit) { if (!isStartMachineSupported()) { throw new UnsupportedOperationException(); }// w w w . jav a2 s . co m final GSAReservationId reservationId = GSAReservationId.randomGSAReservationId(); final CapacityRequirements singleMachineCapacity = machineProvisioning.getCapacityOfSingleMachine(); int numberOfMachines = calcNumberOfMachines(capacityRequirements, machineProvisioning); if (numberOfMachines < failedAgents.length) { throw new IllegalArgumentException("capacity requirements should be at least " + failedAgents.length + " machines for failure recovery. " + "Instead found " + numberOfMachines + " machines, capacity = " + capacityRequirements); } FutureGridServiceAgent[] futureAgents = new FutureGridServiceAgent[numberOfMachines]; for (int i = 0; i < futureAgents.length; i++) { final AtomicReference<Object> ref = new AtomicReference<Object>(null); final int throttlingDelay = i * THROTTLING_DELAY_SECONDS; final long start = System.currentTimeMillis(); final long end = start + throttlingDelay * 1000 + unit.toMillis(duration); final FailedGridServiceAgent failedAgent = failedAgents.length > i ? failedAgents[i] : null; submit(new Runnable() { public void run() { try { logger.info("Starting a new machine"); StartedGridServiceAgent agent = machineProvisioning.startMachine(zones, reservationId, failedAgent, duration, unit); ref.set(agent); logger.info("New machine started"); } catch (ElasticMachineProvisioningException e) { ref.set(e); } catch (ElasticGridServiceAgentProvisioningException e) { ref.set(e); } catch (InterruptedException e) { ref.set(e); } catch (TimeoutException e) { ref.set(e); } catch (NoClassDefFoundError e) { ref.set((new NoClassDefFoundElasticMachineProvisioningException(e))); } catch (Throwable e) { logger.error("Unexpected exception:" + e.getMessage(), e); ref.set(e); } } }, throttlingDelay, TimeUnit.SECONDS); futureAgents[i] = new FutureGridServiceAgent() { public boolean isDone() { return System.currentTimeMillis() > end || ref.get() != null; } public ExecutionException getException() { Object result = ref.get(); if (result != null && result instanceof Throwable) { Throwable throwable = (Throwable) result; return new ExecutionException(throwable.getMessage(), throwable); } return null; } public boolean isTimedOut() { Object result = ref.get(); return System.currentTimeMillis() > end || (result != null && result instanceof TimeoutException); } public Date getTimestamp() { return new Date(start); } public StartedGridServiceAgent get() throws ExecutionException, IllegalStateException, TimeoutException { Object result = ref.get(); if (result == null) { if (System.currentTimeMillis() > end) { throw new TimeoutException("Starting a new machine took more than " + unit.toSeconds(duration) + " seconds to complete."); } throw new IllegalStateException("Async operation is not done yet."); } if (getException() != null) { throw getException(); } return (StartedGridServiceAgent) result; } public NonBlockingElasticMachineProvisioning getMachineProvisioning() { return NonBlockingElasticMachineProvisioningAdapter.this; } public CapacityRequirements getFutureCapacity() { return singleMachineCapacity; } public GSAReservationId getReservationId() { return reservationId; } public FailedGridServiceAgent getFailedGridServiceAgent() { return failedAgent; } }; } return futureAgents; }