class ZKDelegationTokenSecretManager extends AbstractDelegationTokenSecretManager<TokenIdent> {

  @Override
  public synchronized TokenIdent cancelToken(Token<TokenIdent> token,
      String canceller) throws IOException {
    ByteArrayInputStream buf = new ByteArrayInputStream(token.getIdentifier());
    DataInputStream in = new DataInputStream(buf);
    TokenIdent id = createIdentifier();
    id.readFields(in);
    try {
      if (!currentTokens.containsKey(id)) {
        // See if token can be retrieved and placed in currentTokens
        getTokenInfo(id);
      }
      return super.cancelToken(token, canceller);
    } catch (Exception e) {
      LOG.error("Exception while checking if token exist !!", e);
      return id;
    }
  }

  public  ZKDelegationTokenSecretManager(Configuration conf);

}