Пример #1
0
  // MEGHNA: method for stopping a collection on FATAL_ERROR
  // separate method from stop needed to prevent looping in
  // updateStatusCollection() method
  public Collection stopFatalError(Long collectionId, Long userId) throws Exception {
    Collection collection = collectionRepository.findById(collectionId);
    // collection = collectionRepository.stop(collection.getId());

    Collection updateCollection = stopAidrFetcher(collection, userId);

    CollectionLog collectionLog = new CollectionLog(collection);
    collectionLogRepository.save(collectionLog);

    return updateCollection;
  }
Пример #2
0
  @Override
  @Transactional(readOnly = false)
  public Collection stop(Long collectionId, Long userId) throws Exception {
    Collection collection = collectionRepository.findById(collectionId);

    // Follwoing 2 lines added by koushik for downloadCount bug
    Collection c = this.statusByCollection(collection, userId);
    collection.setCount(c.getCount());

    Collection updateCollection = stopAidrFetcher(collection, userId);

    CollectionLog collectionLog = new CollectionLog(collection);
    collectionLog.setUpdatedBy(userId);
    collectionLogRepository.save(collectionLog);

    return updateCollection;
  }
Пример #3
0
  private Collection updateStatusCollection(
      String jsonResponse, Collection collection, Long accountId) throws Exception {
    ObjectMapper objectMapper = JacksonWrapper.getObjectMapper();
    FetcheResponseDTO response = objectMapper.readValue(jsonResponse, FetcheResponseDTO.class);
    if (response != null) {
      // MEGHNA: moved setting collection count to top of the method
      // to avoid individual status blocks setting collection count below
      if (response.getCollectionCount() != null
          && !response.getCollectionCount().equals(collection.getCount())) {
        collection.setCount(response.getCollectionCount());
        String lastDocument = response.getLastDocument();
        collection.setLastExecutionTime(response.getLastExecutionTime());
        if (lastDocument != null) collection.setLastDocument(lastDocument);
        collectionRepository.update(collection);
      }
      collection.setSourceOutage(response.isSourceOutage());
      if (!CollectionStatus.getByStatus(response.getStatusCode()).equals(collection.getStatus())) {

        CollectionStatus prevStatus = collection.getStatus();
        collection.setStatus(CollectionStatus.getByStatus(response.getStatusCode()));

        switch (CollectionStatus.getByStatus(response.getStatusCode())) {
          case NOT_FOUND:
            // case STOPPED:
            collection.setStatus(CollectionStatus.NOT_RUNNING);

            // Add collectionCount in collectionLog if it was not recorded.
            if (collection.getStartDate() != null
                && ((collection.getEndDate() != null
                        && collection.getStartDate().after(collection.getEndDate()))
                    || collection.getEndDate() == null)) {
              if (collectionLogRepository.countLogsStartedInInterval(
                      collection.getId(), collection.getStartDate(), new Date())
                  == 0) {
                CollectionLog collectionLog = new CollectionLog(collection);
                collectionLog.setEndDate(new Date());
                collectionLog.setUpdatedBy(accountId);
                collectionLogRepository.save(collectionLog);
              }
            }
          case RUNNING_WARNING:
            if (prevStatus == CollectionStatus.INITIALIZING) {
              collection = collectionRepository.start(collection.getId());
              break;
            }
          case WARNING:
            collectionRepository.update(collection);
            break;
          case RUNNING:
            collection = collectionRepository.start(collection.getId());
            break;
          case FATAL_ERROR:
            // collection = collectionRepository.stop(collection.getId());
            logger.warn("Fatal error, stopping collection " + collection.getId());
            if (prevStatus != CollectionStatus.FATAL_ERROR
                || prevStatus != CollectionStatus.NOT_RUNNING
                || prevStatus != CollectionStatus.STOPPED)
              this.stopFatalError(collection.getId(), accountId);
            break;
          case EXCEPTION:
            logger.warn(
                "Rejected Thread Execution Exception, restarting collection " + collection.getId());
            if (prevStatus != CollectionStatus.EXCEPTION) {
              this.stopFatalError(collection.getId(), accountId);
              this.start(collection.getId());
            }
            break;
          default:
            break;
        }
      }
    }
    return collection;
  }