All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.river.admin.FiddlerAdmin Maven / Gradle / Ivy

The newest version!
/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership. The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License. You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.apache.river.admin;

import net.jini.admin.JoinAdmin;

import java.rmi.RemoteException;

/**
 * An administrative interface for the Fiddler implementation of the
 * lookup discovery service.
 * The comments that follow describe Fiddler with respect to the following
 * methods:
 * 
  • setLeaseBound *
  • getLeaseBound *
  • setPersistenceSnapshotWeight *
  • getPersistenceSnapshotWeight *
  • setPersistenceSnapshotThreshold *
  • getPersistenceSnapshotThreshold *
* The intent of the information contained in this note is to clarify the * use of these methods and the effect that use will have on the configuration * of Fiddler. Note that the phrase lookup discovery service as used * throughout this note refers to the Fiddler implementation of that * service. While such a lookup discovery service is running, the following * sort of state changes can occur: *
  • Clients register and un-register (cancel their lease) with the * lookup discovery service *
  • Leases on the registrations created for a client by the lookup * discovery service are granted, renewed, cancelled and expired *
  • Managed sets of groups, locators and lookup services associated * with the client registrations are added, modified, and removed * from the lookup discovery service *
* In order to make the lookup discovery service's state persistent across * system crashes or network outages, each of the state changes described * above are written to a file referred to as the service's log file. * The service's log file records, over time, the incremental changes -- or * deltas -- made to the lookup discovery service's state. *

* To prevent the log file from growing indefinitely, the lookup * discovery service's complete state is intermittently written to another * file referred to as the service's snapshot file. When a * snapshot of the service's state is logged to the service's * snapshot file, the service's log file is cleared, and the incremental * logging of deltas begins anew. When the service is started for the * first time, the initial period prior to the creation of the first * snapshot is referred to as the system ramp-up period. This ramp-up * period is the only time where a log file exists without a corresponding * snapshot file. *

* When recovering the system's state after a crash or network outage * (or after the lookup discovery service or its ActivationGroup has been * un-registered and then re-registered through the Activation daemon), * a "base state" is first recovered by retrieving and applying the * contents of the snapshot file (if it exists). Then, if the log * file has length greater than zero, its contents are retrieved * and applied in order to incrementally recover the state * changes that occurred from the point of the base state. *

* The criteria used by the lookup discovery service to determine * exactly when to "take a snapshot" depends on the current size of * the log file relative to the size that the snapshot file will be. * Note that whereas, the size of the log file depends on the total number * of changes to the lookup discovery service's state, the size of the * snapshot file depends on the number of registrations that are * currently active; that is, the more registrations that have been * created and which have valid leases, the larger the snapshot. * For example, if only 10 registrations are active, the snapshot * file will be relatively small; but lease renewals may be regularly * requested on some of those registrations. The regular lease renewals * will result in a very large log file. *

* A balance must be maintained between how large the log file is * allowed to get and how often a snapshot is taken; taking snapshots * too often can slow down processing significantly. The lookup * discovery service is initially configured with a threshold value * and a weighting factor that are employed in a computation that * determines when to take a snapshot. The methods specified by this * interface provide ways to access and modify those values. Thus, based * on a particular lookup discovery service's makeup, these methods can * be used by that service's administrative client to "tune" performance * with respect to logging the service's persistent state. *

 * The following comparison is made to determine when to take a snapshot:
 * 
 *   if (logSize >= W*snapshotSize) && (snapshotSize >= T) {
 *       take a snapshot;
 *   }
 *       where W = persistenceSnapshotWeight
 *             T = persistenceSnapshotThreshold
 * 
* The first comparison is used to ensure that the log file does not * grow too large. The second comparison ensures that snapshots are * not taken too often. *

* Administrative clients of Fiddler should consider these * relationships when using the methods specified by this interface * to tune that service's persistence mechanism. * * @author Sun Microsystems, Inc. * */ public interface FiddlerAdmin extends JoinAdmin, DestroyAdmin { /** * Changes the least upper bound applied to all lease durations granted * by the lookup discovery service. *

* When a client registers with the lookup discovery service, it * requests a desired duration for the lease that the lookup discovery * service grants on the registration. As stated in the lookup discovery * service specification, the actual duration granted is guaranteed * to never be greater than the requested duration. But the Fiddler * implementation of the lookup discovery service applies an additional * restriction on the duration of the lease that is ultimately granted * to the client: when determining the actual duration to grant, * Fiddler applies a bound to the duration request. That is, whenever * a client requests a lease duration that is greater than the value of * this bound, the value of the actual duration assigned by * Fiddler will not only be less than the requested value, * it will also be less than or equal to the value of the bound. *

* The bound satisfies the definition of a least upper bound * on the set of all possible granted durations because the * durations granted by Fiddler can be arbitrarily close to the bound, * but will never be greater than the bound. *

* Thus, this method is a mechanism for an entity with the appropriate * privileges to administratively change the value of the least upper * bound that will be applied by the Fiddler implementation of the lookup * discovery service when determining the duration to assign to the lease * on a requested registration. * * @param newBound long value representing the new least * upper bound (in milliseconds) on the set of all possible * lease durations that may be granted * * @throws java.rmi.RemoteException typically, this exception occurs when * there is a communication failure between the client and the * lookup discovery service. When this exception does occur, the * bound value may or may not have been changed successfully. */ void setLeaseBound(long newBound) throws RemoteException; /** * Retrieves the least upper bound applied to all lease durations granted * by the lookup discovery service. * * @return long value representing the current least * upper bound (in milliseconds) on the set of all possible * lease durations that may be granted * * @throws java.rmi.RemoteException typically, this exception occurs when * there is a communication failure between the client and the * lookup discovery service. */ long getLeaseBound() throws RemoteException; /** * Change the weight factor applied by the lookup discovery service * to the snapshot size during the test to determine whether or not * to take a "snapshot" of the system state. * * @param weight weight factor for snapshot size * * @throws java.rmi.RemoteException typically, this exception occurs when * there is a communication failure between the client and the * lookup discovery service. When this exception does occur, the * weight factor may or may not have been changed successfully. */ void setPersistenceSnapshotWeight(float weight) throws RemoteException; /** * Retrieve the weight factor applied by the lookup discovery service * to the snapshot size during the test to determine whether or not to * take a "snapshot" of the system state. * * @return float value corresponding to the weight factor for snapshot * size * * @throws java.rmi.RemoteException typically, this exception occurs when * there is a communication failure between the client and the * lookup discovery service. */ float getPersistenceSnapshotWeight() throws RemoteException; /** * Change the value of the size threshold of the snapshot; which is * employed by the lookup discovery service in the test to determine * whether or not to take a "snapshot" of the system state. * * @param threshold size threshold for taking a snapshot * * @throws java.rmi.RemoteException typically, this exception occurs when * there is a communication failure between the client and the * lookup discovery service. When this exception does occur, the * threshold may or may not have been changed successfully. */ void setPersistenceSnapshotThreshold(int threshold) throws RemoteException; /** * Retrieve the value of the size threshold of the snapshot; which is * employed by the lookup discovery service in the test to determine * whether or not to take a "snapshot" of the system state. * * @return int value corresponding to the size threshold of the snapshot * * @throws java.rmi.RemoteException typically, this exception occurs when * there is a communication failure between the client and the * lookup discovery service. */ int getPersistenceSnapshotThreshold() throws RemoteException; }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy