예제 #1
0
  public void monitorFired(NoSqlEntityManager mgr, PlayOrmCronJob mon) {
    String mode = Play.configuration.getProperty("upgrade.mode");
    if ("NEW".equals(mode) || StringUtils.isEmpty(mode)) {
      runNewCode(mgr, mon);
      return;
    }

    TableMonitor tableMon = TableMonitor.copy(mon);
    if (log.isInfoEnabled()) log.info("monitor firing(old version)=" + tableMon);

    String tableName = tableMon.getTableName();
    // NOTE: d.time>0 is here because PlayOrm does not yet have order by asc(time) which would
    // choose the index
    // so instead PlayOrm randomly chooses an index
    String sql = "select d from " + tableName + " as d where d.time>0";
    NoSqlTypedSession s = mgr.getTypedSession();
    QueryResult result = s.createQueryCursor(sql, 1); // only need last
    // point so batch
    // size of 1

    Cursor<KeyValue<TypedRow>> cursor = result.getPrimaryViewCursor();
    TypedRow r = getLastVal(cursor);
    DateTime now = new DateTime();
    if (r == null) {
      fireEmailStreamIsDown("old", null, now, tableMon);
      return;
    }

    BigInteger timestamp = (BigInteger) r.getRowKey();

    runDataCheck("old", tableMon, now, timestamp.longValue());
  }
예제 #2
0
  protected AbstractCursor<Column> getCursorWithResults() {
    if (cursor != null && cursor.next()) {
      return cursor;
    } else if (currentIndex >= existingPartitions.size()) return null;

    int count = 0;
    do {
      Long currentPartId = existingPartitions.get(currentIndex);
      NoSqlTypedSession em = mgr.getTypedSession();
      NoSqlSession raw = em.getRawSession();

      byte[] rowKeyPostFix =
          meta.getIdColumnMeta().convertToStorage2(new BigInteger("" + currentPartId));
      byte[] rowKey = meta.getIdColumnMeta().formVirtRowKey(rowKeyPostFix);
      cursor = raw.columnSlice(meta, rowKey, startBytes, endBytes, 500, BigInteger.class);
      currentIndex++;
      if (cursor.next()) return cursor;
      count++;

    } while (!hasReachedEnd(end));

    // reached end and no data found
    return null;
  }