Example usage for java.util.concurrent.locks Lock unlock

List of usage examples for java.util.concurrent.locks Lock unlock

Introduction

In this page you can find the example usage for java.util.concurrent.locks Lock unlock.

Prototype

void unlock();

Source Link

Document

Releases the lock.

Usage

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));
}