コード例 #1
0
  public static String versionsToString(long[] versions, ClusterSnapshot clusterSnapshot) {
    if (versions == null || versions.length == 0) {
      return "[]";
    } else if (clusterSnapshot != null && versions.length != clusterSnapshot.size()) {
      return "[N/A]";
    }

    if (clusterSnapshot == null) {
      if (versions.length == 1) {
        return "[" + versions[0] + "]";
      } else {
        StringBuilder stringBuilder = new StringBuilder("[");
        stringBuilder.append(versions[0]);
        for (int i = 1; i < versions.length; ++i) {
          stringBuilder.append(",").append(versions[i]);
        }
        return stringBuilder.append("]").toString();
      }
    }
    if (versions.length == 1) {
      return "[" + clusterSnapshot.get(0) + "=" + versions[0] + "]";
    } else {
      StringBuilder stringBuilder = new StringBuilder("[");
      stringBuilder.append(clusterSnapshot.get(0)).append("=").append(versions[0]);

      for (int i = 1; i < versions.length; ++i) {
        stringBuilder.append(",").append(clusterSnapshot.get(i)).append("=").append(versions[i]);
      }
      return stringBuilder.append("]").toString();
    }
  }
コード例 #2
0
  /** calculates the object request list to request to each member */
  public final synchronized void calculateAccesses() {
    if (hasAccessesCalculated) {
      return;
    }
    hasAccessesCalculated = true;

    if (log.isTraceEnabled()) {
      log.trace("Calculating accessed keys for data placement optimization");
    }

    RemoteTopKeyRequest request = new RemoteTopKeyRequest(streamLibContainer.getCapacity() * 2);

    request.merge(streamLibContainer.getTopKFrom(REMOTE_PUT, maxNumberOfKeysToRequest), 2);
    request.merge(streamLibContainer.getTopKFrom(REMOTE_GET, maxNumberOfKeysToRequest), 1);

    sortObjectsByPrimaryOwner(request.toRequestMap(maxNumberOfKeysToRequest), true);

    request.clear();

    LocalTopKeyRequest localTopKeyRequest = new LocalTopKeyRequest();

    localTopKeyRequest.merge(streamLibContainer.getTopKFrom(LOCAL_PUT), 2);
    localTopKeyRequest.merge(streamLibContainer.getTopKFrom(LOCAL_GET), 1);

    sortObjectsByPrimaryOwner(localTopKeyRequest.toRequestMap(), false);

    request.clear();

    if (log.isTraceEnabled()) {
      StringBuilder stringBuilder = new StringBuilder("Accesses:\n");
      for (int i = 0; i < accessesByPrimaryOwner.length; ++i) {
        stringBuilder
            .append(clusterSnapshot.get(i))
            .append(" ==> ")
            .append(accessesByPrimaryOwner[i])
            .append("\n");
      }
      log.debug(stringBuilder);
    }

    streamLibContainer.resetStat(REMOTE_GET);
    streamLibContainer.resetStat(LOCAL_GET);
    streamLibContainer.resetStat(REMOTE_PUT);
    streamLibContainer.resetStat(LOCAL_PUT);
  }