class LockCleaner extends ServerLockCleaner {

  public static List<ThemisLock> constructLocks(byte[] tableName, List<KeyValue> lockKvs,
      ThemisCoprocessorClient cpClient, int clientLockTTL) throws IOException {
    List<ThemisLock> locks = new ArrayList<ThemisLock>();
    if (lockKvs != null) {
      for (KeyValue kv : lockKvs) {
        ColumnCoordinate lockColumn = new ColumnCoordinate(tableName, kv.getRow(),
            kv.getFamily(), kv.getQualifier());
        if (!ColumnUtil.isLockColumn(lockColumn)) {
          throw new ThemisFatalException("get no-lock column when constructLocks, kv=" + kv);
        }
        ThemisLock lock = ThemisLock.parseFromByte(kv.getValue());
        ColumnCoordinate dataColumn = new ColumnCoordinate(tableName, lockColumn.getRow(),
            ColumnUtil.getDataColumn(lockColumn));
        lock.setColumn(dataColumn);
        checkLockExpired(lock, cpClient, clientLockTTL);
        locks.add(lock);
      }
    }
    return locks;
  }

  public  LockCleaner(Configuration conf, HConnection conn, WorkerRegister register,
      ThemisCoprocessorClient cpClient);

}