Package org.iq80.leveldb

Examples of org.iq80.leveldb.DBIterator


  }

  @Override
  protected void clearLockSafe() throws CacheLoaderException {
    long count = 0;
    DBIterator it = db.iterator(new ReadOptions().fillCache(false));
    boolean destroyDatabase = false;

    if (config.getClearThreshold() <= 0) {
      try {
        for (it.seekToFirst(); it.hasNext();) {
          Map.Entry<byte[], byte[]> entry = it.next();
          db.delete(entry.getKey());
          count++;

          if (count > config.clearThreshold) {
            destroyDatabase = true;
            break;
          }
        }
      } finally {
        try {
               it.close();
            } catch (IOException e) {
               log.warnUnableToCloseDbIterator(e);
            }
      }
    } else {
View Full Code Here


  @Override
  protected Set<InternalCacheEntry> loadAllLockSafe()
      throws CacheLoaderException {
    Set<InternalCacheEntry> entries = new HashSet<InternalCacheEntry>();

    DBIterator it = db.iterator(new ReadOptions().fillCache(false));
    try {
      for (it.seekToFirst(); it.hasNext();) {
        Map.Entry<byte[], byte[]> entry = it.next();
        entries.add(unmarshall(entry));
      }
    } catch (Exception e) {
      throw new CacheLoaderException(e);
    } finally {
      try {
            it.close();
         } catch (IOException e) {
            log.warnUnableToCloseDbIterator(e);
         }
    }
View Full Code Here

    if (maxEntries <= 0)
      return Collections.emptySet();

    Set<InternalCacheEntry> entries = new HashSet<InternalCacheEntry>();

    DBIterator it = db.iterator(new ReadOptions().fillCache(false));
    try {
      it.seekToFirst();
      for (int i = 0; it.hasNext() && i < maxEntries; i++) {
        Map.Entry<byte[], byte[]> entry = it.next();
        entries.add(unmarshall(entry));
      }
    } catch (Exception e) {
      throw new CacheLoaderException(e);
    } finally {
      try {
            it.close();
         } catch (IOException e) {
            log.warnUnableToCloseDbIterator(e);
         }
    }
View Full Code Here

  @Override
  protected Set<Object> loadAllKeysLockSafe(Set<Object> keysToExclude)
      throws CacheLoaderException {
    Set<Object> keys = new HashSet<Object>();

    DBIterator it = db.iterator(new ReadOptions().fillCache(false));
    try {
      for (it.seekToFirst(); it.hasNext();) {
        Map.Entry<byte[], byte[]> entry = it.next();
        Object key = unmarshall(entry.getKey());
        if (keysToExclude == null || keysToExclude.isEmpty()
            || !keysToExclude.contains(key))
          keys.add(key);
      }

      return keys;
    } catch (Exception e) {
      throw new CacheLoaderException(e);
    } finally {
      try {
            it.close();
         } catch (IOException e) {
            log.warnUnableToCloseDbIterator(e);
         }
    }
  }
View Full Code Here

  }

  @Override
  protected void toStreamLockSafe(ObjectOutput oos)
      throws CacheLoaderException {
    DBIterator it = db.iterator(new ReadOptions().fillCache(false));
    try {

      for (it.seekToFirst(); it.hasNext();) {
        Map.Entry<byte[], byte[]> entry = it.next();
        InternalCacheEntry ice = unmarshall(entry);
        getMarshaller().objectToObjectStream(ice, oos);
      }
      getMarshaller().objectToObjectStream(null, oos);
    } catch (Exception e) {
      throw new CacheLoaderException(e);
    } finally {
      try {
            it.close();
         } catch (IOException e) {
            log.warnUnableToCloseDbIterator(e);
         }
    }
  }
View Full Code Here

        }
      }

      List<Long> times = new ArrayList<Long>();
      List<Object> keys = new ArrayList<Object>();
      DBIterator it = expiredDb.iterator(new ReadOptions()
          .fillCache(false));
      try {
        for (it.seekToFirst(); it.hasNext();) {
          Map.Entry<byte[], byte[]> entry = it.next();

          Long time = (Long) unmarshall(entry.getKey());
          if (time > System.currentTimeMillis())
            break;
          times.add(time);
          Object key = unmarshall(entry.getValue());
          if (key instanceof List)
            keys.addAll((List<?>) key);
          else
            keys.add(key);
        }

        for (Long time : times) {
          expiredDb.delete(marshall(time));
        }

        if (!keys.isEmpty())
          log.debugf("purge (up to) %d entries", keys.size());
        int count = 0;
        long currentTimeMillis = System.currentTimeMillis();
        for (Object key : keys) {
          byte[] keyBytes = marshall(key);
         
          byte[] b = db.get(keyBytes);
          if (b == null)
            continue;
          InternalCacheValue ice = (InternalCacheValue) getMarshaller()
              .objectFromByteBuffer(b);
          if (ice.isExpired(currentTimeMillis)) {
            // somewhat inefficient to FIND then REMOVE...
            db.delete(keyBytes);
            count++;
          }
        }
        if (count != 0)
          log.debugf("purged %d entries", count);
      } catch (Exception e) {
        throw new CacheLoaderException(e);
      } finally {
         try {
            it.close();
         } catch (IOException e) {
            log.warnUnableToCloseDbIterator(e);
         }
      }
    } catch (Exception e) {
View Full Code Here

        // interval task could potentially be running while we are shutting down so check for that
        if (!isRunAllowed()) {
            return null;
        }

        DBIterator it = levelDBFile.getDb().iterator();

        String keyBuffer = null;
        try {
            String prefix = repositoryName + '\0';
            for (it.seek(keyBuilder(repositoryName, "")); it.hasNext(); it.next()) {
                if (!isRunAllowed()) {
                    break;
                }
                keyBuffer = asString(it.peekNext().getKey());

                if (!keyBuffer.startsWith(prefix)) {
                    break;
                }
View Full Code Here

        if (!isRunAllowed()) {
            return null;
        }

        DBIterator it = levelDBFile.getDb().iterator();

        String keyBuffer = null;
        try {
            String prefix = getRepositoryNameCompleted() + '\0';

            for (it.seek(keyBuilder(getRepositoryNameCompleted(), "")); it.hasNext(); it.next()) {
                keyBuffer = asString(it.peekNext().getKey());

                if (!keyBuffer.startsWith(prefix)) {
                    break;
                }
                String exchangeId = keyBuffer.substring(prefix.length());
View Full Code Here

        LOG.debug("Recovering exchangeId [{}] -> {}", exchangeId, answer);
        return answer;
    }

    private int size(final String repositoryName) {
        DBIterator it = levelDBFile.getDb().iterator();

        String prefix = repositoryName + '\0';
        int count = 0;
        try {
            for (it.seek(keyBuilder(repositoryName, "")); it.hasNext(); it.next()) {
                if (!asString(it.peekNext().getKey()).startsWith(prefix)) {
                    break;
                }
                count++;
            }
        } finally {
View Full Code Here

//      logger.debug(stats);

            if (logger.isTraceEnabled()){

                logger.trace("Dump for: {}", fileLocation.toString());
                DBIterator iter =  db.iterator();

                while(iter.hasNext()){
                    byte[] key   = iter.peekNext().getKey();
                    byte[] value = iter.peekNext().getValue();

                    logger.trace("key={}, value={}", Hex.toHexString(key), Hex.toHexString(value));
                    iter.next();
                }
            }
    } catch (IOException ioe) {
      logger.error(ioe.getMessage(), ioe);
      throw new RuntimeException("Can't initialize database");
View Full Code Here

TOP

Related Classes of org.iq80.leveldb.DBIterator

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.