Ejemplo n.º 1
0
 public static void loadKeyListeners(final ObjectContainer container, ClientContext context) {
   ObjectSet<HasKeyListener> results = Db4oBugs.query(container, HasKeyListener.class);
   for (HasKeyListener l : results) {
     container.activate(l, 1);
     try {
       if (l.isCancelled(container)) continue;
       KeyListener listener = l.makeKeyListener(container, context, true);
       if (listener != null) {
         if (listener.isSSK())
           context.getSskFetchScheduler(listener.isRealTime()).addPersistentPendingKeys(listener);
         else
           context.getChkFetchScheduler(listener.isRealTime()).addPersistentPendingKeys(listener);
         if (logMINOR)
           Logger.minor(
               ClientRequestScheduler.class,
               "Loaded request key listener: " + listener + " for " + l);
       }
     } catch (KeyListenerConstructionException e) {
       System.err.println("FAILED TO LOAD REQUEST BLOOM FILTERS:");
       e.printStackTrace();
       Logger.error(
           ClientRequestSchedulerCore.class, "FAILED TO LOAD REQUEST BLOOM FILTERS: " + e, e);
     } catch (Throwable t) {
       // Probably an error on last startup???
       Logger.error(ClientRequestSchedulerCore.class, "FAILED TO LOAD REQUEST: " + t, t);
       System.err.println("FAILED TO LOAD REQUEST: " + t);
       t.printStackTrace();
     }
     container.deactivate(l, 1);
   }
 }
Ejemplo n.º 2
0
  private void innerRegister(
      final HasKeyListener hasListener,
      final SendableGet[] getters,
      final BlockSet blocks,
      boolean noCheckStore,
      ObjectContainer container)
      throws KeyListenerConstructionException {
    final KeyListener listener;
    if (hasListener != null) {
      if (hasListener.isCancelled(container)) {
        if (logMINOR)
          Logger.minor(this, "Key listener is cancelled, not registering: " + hasListener);
        return;
      }
      container.store(hasListener);
      listener = hasListener.makeKeyListener(container, clientContext, false);
      schedCore.addPendingKeys(listener);
    } else listener = null;

    // Avoid NPEs due to deactivation.
    if (getters != null) {
      for (SendableGet getter : getters) {
        container.activate(getter, 1);
        container.store(getter);
      }
    }

    if (isInsertScheduler) throw new IllegalStateException("finishRegister on an insert scheduler");
    if (!noCheckStore) {
      // Check the datastore before proceding.
      for (SendableGet getter : getters) {
        container.activate(getter, 1);
        datastoreChecker.queuePersistentRequest(getter, blocks, container, clientContext);
        container.deactivate(getter, 1);
      }

    } else {
      // We have already checked the datastore, this is a retry, the listener hasn't been
      // unregistered.
      this.finishRegister(getters, true, container, true, null);
    }
  }
 public static void loadKeyListeners(final ObjectContainer container, ClientContext context) {
   ObjectSet<HasKeyListener> results = Db4oBugs.query(container, HasKeyListener.class);
   while (true) {
     HasKeyListener l;
     try {
       if (!results.hasNext()) break;
       l = results.next();
     } catch (IllegalArgumentException e) {
       throw new Db4oException("Something is broken: " + e, e);
       // Allow caller to terminate database.
       // IllegalArgumentException isn't caught, but here it is exclusively caused by corrupt
       // database and/or database bugs. :(
     }
     container.activate(l, 1);
     try {
       if (l.isCancelled(container)) continue;
       KeyListener listener = l.makeKeyListener(container, context, true);
       if (listener != null) {
         if (listener.isSSK())
           context.getSskFetchScheduler(listener.isRealTime()).addPersistentPendingKeys(listener);
         else
           context.getChkFetchScheduler(listener.isRealTime()).addPersistentPendingKeys(listener);
         if (logMINOR)
           Logger.minor(
               ClientRequestScheduler.class,
               "Loaded request key listener: " + listener + " for " + l);
       }
     } catch (KeyListenerConstructionException e) {
       System.err.println("FAILED TO LOAD REQUEST BLOOM FILTERS:");
       e.printStackTrace();
       Logger.error(
           ClientRequestSchedulerCore.class, "FAILED TO LOAD REQUEST BLOOM FILTERS: " + e, e);
     } catch (Throwable t) {
       // Probably an error on last startup???
       Logger.error(ClientRequestSchedulerCore.class, "FAILED TO LOAD REQUEST: " + t, t);
       System.err.println("FAILED TO LOAD REQUEST: " + t);
       t.printStackTrace();
     }
     container.deactivate(l, 1);
   }
 }