# DefaultHighRepJobPolicy
Date: 2011-08-17

## com.google.appengine.api.datastore.dev
Class DefaultHighRepJobPolicy

    java.lang.Object
      com.google.appengine.api.datastore.dev.DefaultHighRepJobPolicy

All Implemented Interfaces:
  HighRepJobPolicy

    public class DefaultHighRepJobPolicy

extends java.lang.Object
implements HighRepJobPolicy

An implementation of `HighRepJobPolicy` in which a user-defined percentage of jobs do not apply. The percentage applies to both new (initial write) and existing (roll forward) jobs. The user can also provide a random seed, which can be used to make the behavior of this class deterministic in tests.

Field Summary
`static java.lang.String` `RANDOM_SEED_PROPERTY` A long that will be used as the seed for the `Random` that determines whether or not a job application attempt fails.
`static java.lang.String` `UNAPPLIED_JOB_PERCENTAGE_PROPERTY` A float >= 0 and <= 100 representing the percentage of job application attempts that will fail.

Constructor Summary
`DefaultHighRepJobPolicy(long unappliedJobSeed, float unappliedJobPercentage)` Constructs a `DefaultHighRepJobPolicy`.

Method Summary
`boolean` `shouldApplyNewJob(com.google.appengine.api.datastore.Key entityGroup)`
`boolean` `shouldRollForwardExistingJob(com.google.appengine.api.datastore.Key entityGroup)`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### RANDOM_SEED_PROPERTY

    public static final java.lang.String RANDOM_SEED_PROPERTY

  A long that will be used as the seed for the `Random` that determines whether or not a job application attempt fails. Must be parsable via `Long.parseLong(String)`. If not provided we use the current time (in millis) as the seed.

  See Also:
    Constant Field Values

### UNAPPLIED_JOB_PERCENTAGE_PROPERTY

    public static final java.lang.String UNAPPLIED_JOB_PERCENTAGE_PROPERTY

  A float >= 0 and <= 100 representing the percentage of job application attempts that will fail. Must be parsable via `Float.parseFloat(String)`. Any portion of the value beyond two decimal places will be truncated. If not provided we set the percentage to 0, which yields the master/slave consistency model.

  See Also:
    Constant Field Values

Constructor Detail

### DefaultHighRepJobPolicy

    public DefaultHighRepJobPolicy(long unappliedJobSeed,
                                   float unappliedJobPercentage)

  Constructs a `DefaultHighRepJobPolicy`.

  Parameters:
    `unappliedJobSeed` - The seed to use for random number generation.
    `unappliedJobPercentage` - The percentage of jobs that should fail to apply. This percentage applies to both new jobs and attempts to roll forward existing unapplied jobs.

Method Detail

### shouldApplyNewJob

    public boolean shouldApplyNewJob(com.google.appengine.api.datastore.Key entityGroup)

  Specified by:
    `shouldApplyNewJob` in interface `HighRepJobPolicy`
  Parameters:
    `entityGroup` - A unique identifier for the entity group.
  Returns:
    `true` if the new job should apply according to the policy, `false` otherwise.

### shouldRollForwardExistingJob

    public boolean shouldRollForwardExistingJob(com.google.appengine.api.datastore.Key entityGroup)

  Specified by:
    `shouldRollForwardExistingJob` in interface `HighRepJobPolicy`
  Parameters:
    `entityGroup` - A unique identifier for the entity group.
  Returns:
    `true` if the existing job should roll forward according to the policy, `false` otherwise.