Package info.aduna.concurrent.locks

Examples of info.aduna.concurrent.locks.Lock


    logger.trace("Incoming query model:\n{}", query);

    // Clone the tuple expression to allow for more aggresive optimizations
    query = query.clone();

    Lock stLock = store.getStatementsReadLock();

    try {
      int snapshot = store.getCurrentSnapshot();
      ReadMode readMode = ReadMode.COMMITTED;

      if (!isAutoCommit()) {
        snapshot++;
        readMode = ReadMode.TRANSACTION;
      }

      TripleSource tripleSource = new MemTripleSource(includeInferred, snapshot, readMode);
      EvaluationStrategyImpl strategy = new EvaluationStrategyImpl(tripleSource, query);

      QueryOptimizerList optimizerList = new QueryOptimizerList();
      optimizerList.add(new BindingAssigner());
      optimizerList.add(new ConstantOptimizer(strategy));
      optimizerList.add(new CompareOptimizer());
      optimizerList.add(new ConjunctiveConstraintSplitter());
      optimizerList.add(new DisjunctiveConstraintOptimizer());
      optimizerList.add(new SameTermFilterOptimizer());
      optimizerList.add(new QueryModelPruner());
      optimizerList.add(new QueryJoinOptimizer(new MemEvaluationStatistics()));
      optimizerList.add(new FilterOptimizer());

      optimizerList.optimize(query, bindings);

      logger.trace("Optimized query model:\n{}", query);

      Cursor<BindingSet> iter;
      iter = strategy.evaluate(query, EmptyBindingSet.getInstance());
      iter = new LockingCursor<BindingSet>(stLock, iter);
      return iter;
    }
    catch (StoreException e) {
      stLock.release();
      throw e;
    }
    catch (RuntimeException e) {
      stLock.release();
      throw e;
    }
  }
View Full Code Here


    // ConcurrentModificationException's (issue SES-544).

    // Create a list of all resources that are used as contexts
    ArrayList<MemResource> contextIDs = new ArrayList<MemResource>(32);

    Lock stLock = store.getStatementsReadLock();

    try {
      final int snapshot = isAutoCommit() ? store.getCurrentSnapshot() : store.getCurrentSnapshot() + 1;
      final ReadMode readMode = isAutoCommit() ? ReadMode.COMMITTED : ReadMode.TRANSACTION;

      synchronized (vf.getURIFactory()) {
        for (MemResource memResource : vf.getMemURIs()) {
          if (isContextResource(memResource, snapshot, readMode)) {
            contextIDs.add(memResource);
          }
        }
      }
      synchronized (vf.getBNodeFactory()) {
        for (MemResource memResource : vf.getMemBNodes()) {
          if (isContextResource(memResource, snapshot, readMode)) {
            contextIDs.add(memResource);
          }
        }
      }
    }
    finally {
      stLock.release();
    }

    return new CollectionCursor<MemResource>(contextIDs);
  }
View Full Code Here

  public Cursor<? extends Statement> getStatements(Resource subj, URI pred, Value obj,
      boolean includeInferred, Resource... contexts)
    throws StoreException
  {
    Lock stLock = store.getStatementsReadLock();

    try {
      int snapshot = store.getCurrentSnapshot();
      ReadMode readMode = ReadMode.COMMITTED;

      if (!isAutoCommit()) {
        snapshot++;
        readMode = ReadMode.TRANSACTION;
      }

      return new LockingCursor<MemStatement>(stLock, store.createStatementIterator(subj, pred, obj,
          !includeInferred, snapshot, readMode, vf, contexts));
    }
    catch (RuntimeException e) {
      stLock.release();
      throw e;
    }
  }
View Full Code Here

  }

  public long size(Resource subj, URI pred, Value obj, boolean includeInferred, Resource... contexts)
    throws StoreException
  {
    Lock stLock = store.getStatementsReadLock();

    try {
      Cursor<? extends Statement> iter = getStatements(subj, pred, obj, includeInferred, contexts);

      try {
        long size = 0L;

        while (iter.next() != null) {
          size++;
        }

        return size;
      }
      finally {
        iter.close();
      }
    }
    finally {
      stLock.release();
    }
  }
View Full Code Here

  }

  public long size(Resource subj, URI pred, Value obj, boolean includeInferred, Resource... contexts)
    throws StoreException
  {
    Lock readLock = nativeStore.getReadLock();

    try {
      ValueStore valueStore = nativeStore.getValueStore();

      int subjID = NativeValue.UNKNOWN_ID;
      if (subj != null) {
        subjID = valueStore.getID(subj);
        if (subjID == NativeValue.UNKNOWN_ID) {
          return 0;
        }
      }
      int predID = NativeValue.UNKNOWN_ID;
      if (pred != null) {
        predID = valueStore.getID(pred);
        if (predID == NativeValue.UNKNOWN_ID) {
          return 0;
        }
      }
      int objID = NativeValue.UNKNOWN_ID;
      if (obj != null) {
        objID = valueStore.getID(obj);
        if (objID == NativeValue.UNKNOWN_ID) {
          return 0;
        }
      }
      List<Integer> contextIDs;
      if (contexts != null && contexts.length == 0) {
        contextIDs = Arrays.asList(NativeValue.UNKNOWN_ID);
      }
      else {
        contextIDs = nativeStore.getContextIDs(OpenRDFUtil.notNull(contexts));
      }

      long size = 0L;

      for (int contextID : contextIDs) {
        // Iterate over all explicit statements
        RecordIterator iter = nativeStore.getTripleStore().getTriples(subjID, predID, objID, contextID,
            !includeInferred, !isAutoCommit());

        try {
          while (iter.next() != null) {
            size++;
          }
        }
        finally {
          iter.close();
        }
      }

      return size;
    }
    catch (IOException e) {
      throw new StoreException(e);
    }
    finally {
      readLock.release();
    }
  }
View Full Code Here

  }

  public Cursor<? extends Namespace> getNamespaces()
    throws StoreException
  {
    Lock readLock = nativeStore.getReadLock();
    try {
      return new LockingCursor<NamespaceImpl>(readLock, new CollectionCursor<NamespaceImpl>(
          nativeStore.getNamespaceStore()));
    }
    catch (RuntimeException e) {
      readLock.release();
      throw e;
    }
  }
View Full Code Here

  }

  public String getNamespace(String prefix)
    throws StoreException
  {
    Lock readLock = nativeStore.getReadLock();
    try {
      return nativeStore.getNamespaceStore().getNamespace(prefix);
    }
    finally {
      readLock.release();
    }
  }
View Full Code Here

  @Override
  public void commit()
    throws StoreException
  {
    Lock storeReadLock = nativeStore.getReadLock();

    try {
      nativeStore.getValueStore().sync();
      nativeStore.getTripleStore().commit();
      nativeStore.getNamespaceStore().sync();

      txnLock.release();
    }
    catch (IOException e) {
      throw new StoreException(e);
    }
    catch (RuntimeException e) {
      logger.error("Encountered an unexpected problem while trying to commit", e);
      throw e;
    }
    finally {
      storeReadLock.release();
    }

    nativeStore.notifySailChanged(sailChangedEvent);

    // create a fresh event object.
View Full Code Here

  @Override
  public void rollback()
    throws StoreException
  {
    Lock storeReadLock = nativeStore.getReadLock();

    try {
      nativeStore.getValueStore().sync();
      nativeStore.getTripleStore().rollback();
      super.rollback();
    }
    catch (IOException e) {
      throw new StoreException(e);
    }
    catch (RuntimeException e) {
      logger.error("Encountered an unexpected problem while trying to roll back", e);
      throw e;
    }
    finally {
      txnLock.release();
      storeReadLock.release();
    }
  }
View Full Code Here

   */
  public void clear()
    throws IOException
  {
    try {
      Lock writeLock = lockManager.getWriteLock();
      try {
        dataStore.clear();

        synchronized (valueCache) {
          valueCache.clear();
        }

        synchronized (valueIDCache) {
          valueIDCache.clear();
        }

        synchronized (namespaceCache) {
          namespaceCache.clear();
        }

        synchronized (namespaceIDCache) {
          namespaceIDCache.clear();
        }

        setNewRevision();
      }
      finally {
        writeLock.release();
      }
    }
    catch (InterruptedException e) {
      IOException ioe = new IOException("Failed to acquire write lock");
      ioe.initCause(e);
View Full Code Here

TOP

Related Classes of info.aduna.concurrent.locks.Lock

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.