List of usage examples for java.util.concurrent.locks Lock unlock
void unlock();
From source file:org.geotools.gce.imagemosaic.catalog.GTDataStoreGranuleCatalog.java
@Override public int removeGranules(Query query) { Utilities.ensureNonNull("query", query); query = mergeHints(query);/*from w w w . java 2 s.co m*/ final Lock lock = rwLock.writeLock(); try { lock.lock(); // check if the index has been cleared checkStore(); String typeName = query.getTypeName(); SimpleFeatureStore fs = null; try { // create a writer that appends this features fs = (SimpleFeatureStore) tileIndexStore.getFeatureSource(typeName); final int retVal = fs.getCount(query); fs.removeFeatures(query.getFilter()); // update bounds bounds.put(typeName, tileIndexStore.getFeatureSource(typeName).getBounds()); return retVal; } catch (Throwable e) { if (LOGGER.isLoggable(Level.SEVERE)) LOGGER.log(Level.SEVERE, e.getLocalizedMessage(), e); return -1; } // do your thing } finally { lock.unlock(); } }
From source file:jp.aegif.nemaki.cmis.service.impl.NavigationServiceImpl.java
@Override public List<ObjectParentData> getObjectParents(CallContext callContext, String repositoryId, String objectId, String filter, Boolean includeAllowableActions, IncludeRelationships includeRelationships, String renditionFilter, Boolean includeRelativePathSegment, ExtensionsData extension) { exceptionService.invalidArgumentRequired("objectId", objectId); Lock childLock = threadLockService.getReadLock(repositoryId, objectId); try {//from www . jav a2 s . c o m childLock.lock(); // ////////////////// // General Exception // ////////////////// Content content = contentService.getContent(repositoryId, objectId); exceptionService.objectNotFound(DomainType.OBJECT, content, objectId); exceptionService.permissionDenied(callContext, repositoryId, PermissionMapping.CAN_GET_PARENTS_FOLDER, content); //Get parent Folder parent = contentService.getParent(repositoryId, objectId); Lock parentLock = threadLockService.getReadLock(repositoryId, parent.getId()); try { parentLock.lock(); // ////////////////// // Specific Exception // ////////////////// exceptionService.objectNotFoundParentFolder(repositoryId, objectId, parent); exceptionService.invalidArgumentRootFolder(repositoryId, content); // ////////////////// // Body of the method // ////////////////// ObjectParentDataImpl result = new ObjectParentDataImpl(); ObjectData o = compileService.compileObjectData(callContext, repositoryId, parent, filter, includeAllowableActions, includeRelationships, null, true); result.setObject(o); boolean irps = (includeRelativePathSegment == null ? false : includeRelativePathSegment.booleanValue()); if (irps) { result.setRelativePathSegment(content.getName()); } return Collections.singletonList((ObjectParentData) result); } finally { parentLock.unlock(); } } finally { childLock.unlock(); } }
From source file:org.cyberjos.jcconf2014.node.HazelcastHelper.java
/** * Sets the given node to be the master node. * * @param cloudNode the node to become master * @return {@code true} if the given node becomes the master node * successfully// ww w. j av a 2 s . co m * @throws NullPointerException if the given node is {@code null} */ public synchronized boolean setMaster(final CloudNode cloudNode) { Objects.requireNonNull(cloudNode, "The given cloud node must not be null."); final Lock lock = Holder.INSTANCE.getInstance().getLock("my-distributed-lock"); lock.lock(); try { final NodeRecord masterRecord = HazelcastHelper.<NodeRecord>getAtomicReference(MASTER_NODE).get(); if (masterRecord != null) { final long count = Holder.INSTANCE.getInstance().getCluster().getMembers().stream() .filter(member -> StringUtils.equals(masterRecord.getMemberId(), member.getUuid())).count(); if (count != 0) { logger.warn("The master node has already existed: {}", masterRecord); return false; } this.unregisterNode(masterRecord.getNodeName()); } final NodeRecord newMasterRecord = HazelcastHelper.<String, NodeRecord>getMap(ACTIVE_NODES) .get(cloudNode.getName()); HazelcastHelper.getAtomicReference(MASTER_NODE).set(newMasterRecord); logger.info("This node has already become the new master node: {}", newMasterRecord); if (WORKING_MODE) { final Thread thread = new Thread(this.createProducer(cloudNode)); thread.start(); } } finally { lock.unlock(); } return true; }
From source file:com.enonic.cms.core.portal.image.ImageServiceImpl.java
public ImageResponse process(ImageRequest imageRequest) { Preconditions.checkNotNull(imageRequest, "imageRequest cannot be null"); final ImageRequestTrace imageRequestTrace = livePortalTraceService.getCurrentTrace().getImageRequestTrace(); String blobKey = getBlobKey(imageRequest); if (blobKey == null) { return ImageResponse.notFound(); }//from ww w . j av a 2 s . c o m imageRequest.setBlobKey(blobKey); final Lock locker = concurrencyLock.getLock(imageRequest.getCacheKey()); try { ImageRequestTracer.startConcurrencyBlockTimer(imageRequestTrace); locker.lock(); ImageRequestTracer.stopConcurrencyBlockTimer(imageRequestTrace); ImageResponse res = imageCache.get(imageRequest); if (res != null) { ImageRequestTracer.traceImageResponse(imageRequestTrace, res); ImageRequestTracer.traceUsedCachedResult(imageRequestTrace, true); return res; } try { res = doProcess(imageRequest); ImageRequestTracer.traceImageResponse(imageRequestTrace, res); ImageRequestTracer.traceUsedCachedResult(imageRequestTrace, false); return res; } catch (AttachmentNotFoundException e) { LOG.error( "Cannot read image with key {} from configured BLOB directory ( {} ). Check your CMS configuration.", blobKey, directory.getAbsolutePath()); return ImageResponse.notFound(); } catch (Exception e) { throw new ImageProcessorException("Failed to process image [contentKey=" + imageRequest.getContentKey() + "] : " + e.getMessage(), e); } } finally { locker.unlock(); } }
From source file:jp.aegif.nemaki.cmis.service.impl.ObjectServiceImpl.java
@Override public ObjectData getObjectByPath(CallContext callContext, String repositoryId, String path, String filter, Boolean includeAllowableActions, IncludeRelationships includeRelationships, String renditionFilter, Boolean includePolicyIds, Boolean includeAcl, ExtensionsData extension) { // ////////////////// // General Exception // ////////////////// exceptionService.invalidArgumentRequired("objectId", path); // FIXME path is not preserved in db. Content content = contentService.getContentByPath(repositoryId, path); // TODO create objectNotFoundByPath method exceptionService.objectNotFoundByPath(DomainType.OBJECT, content, path); Lock lock = threadLockService.getReadLock(repositoryId, content.getId()); try {/* w w w . jav a 2 s . c o m*/ lock.lock(); exceptionService.permissionDenied(callContext, repositoryId, PermissionMapping.CAN_GET_PROPERTIES_OBJECT, content); // ////////////////// // Body of the method // ////////////////// return compileService.compileObjectData(callContext, repositoryId, content, filter, includeAllowableActions, includeRelationships, renditionFilter, includeAcl); } finally { lock.unlock(); } }
From source file:org.pepstock.jem.node.StartUpSystem.java
/** * Load the persisted queues by calling them for the first time. * // ww w . j av a2s .c o m * @throws ConfigurationException */ private static void loadQueues() throws ConfigurationException { // loads all keys for INPUT, RUNNING, OUTPUT, ROUTING and // CommonResources. this // call of method // will schedule the call on persistent manager IMap<String, Job> inputQueue = Main.getHazelcast().getMap(Queues.INPUT_QUEUE); inputQueue.size(); IMap<String, Job> outputQueue = Main.getHazelcast().getMap(Queues.OUTPUT_QUEUE); outputQueue.size(); // this code removes all jobs in running queue if the node is // coordinator // this is necessary if the cluster crashed due to a failure if (Main.IS_COORDINATOR.get()) { IMap<String, Job> runningQueue = Main.getHazelcast().getMap(Queues.RUNNING_QUEUE); Lock lock = Main.getHazelcast().getLock(Queues.RUNNING_QUEUE_LOCK); boolean isLock = false; try { isLock = lock.tryLock(10, TimeUnit.SECONDS); if (!runningQueue.isEmpty()) { for (Job job : runningQueue.values()) { org.pepstock.jem.Result result = new org.pepstock.jem.Result(); result.setReturnCode(org.pepstock.jem.Result.FATAL); result.setExceptionMessage("Node is crashed during job was executing"); job.setResult(result); job.setEndedTime(new Date()); job.setRunningStatus(Job.NONE); LogAppl.getInstance().emit(NodeMessage.JEMC190W, job.getName(), job.getId()); runningQueue.remove(job.getId()); outputQueue.putIfAbsent(job.getId(), job); } } } catch (Exception e) { throw new ConfigurationException(e); } finally { if (isLock) { lock.unlock(); } } // Clean up of nodes map store NodeInfoUtility.checkAndCleanMapStore(); } IMap<String, Job> routingQueue = Main.getHazelcast().getMap(Queues.ROUTING_QUEUE); routingQueue.size(); RecoveryManager.getInstance(); IMap<String, Resource> resourceMap = Main.getHazelcast().getMap(Queues.COMMON_RESOURCES_MAP); resourceMap.size(); IMap<String, Role> rolesMap = Main.getHazelcast().getMap(Queues.ROLES_MAP); rolesMap.size(); IMap<String, SwarmConfiguration> routingConfigMap = Main.getHazelcast().getMap(Queues.ROUTING_CONFIG_MAP); routingConfigMap.size(); // if map is emtpy, a DEFAULT routing config will be added if (routingConfigMap.isEmpty()) { routingConfigMap.put(SwarmConfiguration.DEFAULT_NAME, new SwarmConfiguration()); } IMap<String, Map<String, UserPreference>> userPreferencesMap = Main.getHazelcast() .getMap(Queues.USER_PREFERENCES_MAP); userPreferencesMap.size(); }
From source file:net.myrrix.online.ServerRecommender.java
@Override public int getNumUserClusters() throws NotReadyException { Generation generation = getCurrentGeneration(); Collection<IDCluster> clusters = generation.getUserClusters(); if (clusters == null || clusters.isEmpty()) { throw new UnsupportedOperationException(); }//from ww w. ja v a2s.co m Lock lock = generation.getUserClustersLock().readLock(); lock.lock(); try { return clusters.size(); } finally { lock.unlock(); } }
From source file:net.myrrix.online.ServerRecommender.java
@Override public int getNumItemClusters() throws NotReadyException { Generation generation = getCurrentGeneration(); Collection<IDCluster> clusters = generation.getItemClusters(); if (clusters == null || clusters.isEmpty()) { throw new UnsupportedOperationException(); }// w w w. java2 s . com Lock lock = generation.getItemClustersLock().readLock(); lock.lock(); try { return clusters.size(); } finally { lock.unlock(); } }
From source file:org.marketcetera.marketdata.core.manager.impl.MarketDataManagerImpl.java
@Override public void setStatus(MarketDataProvider inProvider, ProviderStatus inStatus) { Messages.PROVIDER_REPORTS_STATUS.info(this, inProvider.getProviderName(), inStatus); Lock statusUpdateLock = requestLockObject.writeLock(); try {//from w w w. j a v a 2 s .c om ObjectName providerObjectName = getObjectNameFor(inProvider); statusUpdateLock.lockInterruptibly(); if (inStatus == ProviderStatus.AVAILABLE) { // TODO check for duplicate provider name and warn addProvider(inProvider); if (!mbeanServer.isRegistered(providerObjectName)) { mbeanServer.registerMBean((MarketDataProviderMBean) inProvider, providerObjectName); } } else { removeProvider(inProvider); } } catch (InterruptedException e) { throw new MarketDataRequestFailed(e); } catch (JMException e) { Messages.JMX_REGISTRATION_ERROR.warn(this, e, inProvider.getProviderName()); } finally { statusUpdateLock.unlock(); } }
From source file:com.cloudera.oryx.als.serving.ServerRecommender.java
@Override public List<IDValue> mostPopularItems(int howMany, Rescorer rescorer) throws NotReadyException { Preconditions.checkArgument(howMany > 0, "howMany must be positive"); Generation generation = getCurrentGeneration(); LongObjectMap<LongSet> knownItemIDs = generation.getKnownItemIDs(); if (knownItemIDs == null) { throw new UnsupportedOperationException(); }// www.j a v a2 s .c o m LongFloatMap itemCounts = new LongFloatMap(); Lock knownItemReadLock = generation.getKnownItemLock().readLock(); knownItemReadLock.lock(); try { Lock xReadLock = generation.getXLock().readLock(); xReadLock.lock(); try { for (LongObjectMap.MapEntry<LongSet> entry : generation.getKnownItemIDs().entrySet()) { LongSet itemIDs = entry.getValue(); synchronized (itemIDs) { LongPrimitiveIterator it = itemIDs.iterator(); while (it.hasNext()) { long itemID = it.nextLong(); itemCounts.increment(itemID, 1.0f); } } } } finally { xReadLock.unlock(); } } finally { knownItemReadLock.unlock(); } return translateToStringIDs(TopN.selectTopN( new MostPopularItemsIterator(itemCounts.entrySet().iterator(), rescorer, generation.getIDMapping()), howMany)); }