protected void CompleteSaga <T>(Guid sagaId) where T : IContainSagaData
        {
            var saga = _sagaPersister.Get <T>(sagaId);

            Assert.NotNull(saga);
            _sagaPersister.Complete(saga);
        }
        protected async Task CompleteSaga <T>(Guid sagaId) where T : class, IContainSagaData
        {
            var saga = await LoadSaga <T>(sagaId).ConfigureAwait(false);

            Assert.NotNull(saga);
            await _sagaPersister.Complete(saga, null, null).ConfigureAwait(false);
        }
        protected override void OnStartInitialization()
        {
            try
            {
                foreach (var tpSagaEntity in ObjectFactory.GetInstance <IStorageRepository>().Get <ISagaEntity>())
                {
                    if (!(tpSagaEntity is SearcherPluginProfileInitializationSagaData ||
                          tpSagaEntity is SearcherPluginProfileUpdatedInitializationData))
                    {
                        continue;
                    }

                    if (tpSagaEntity.Id != Data.Id)
                    {
                        _sagaPersister.Complete(tpSagaEntity);
                    }
                }
            }
            catch (Exception e)
            {
                _log.ErrorFormat("Failed to complete Running Saga When start to rebuild indexed, error: ", e.Message);
            }

            Send(new GeneralQuery
            {
                Hql =
                    string.Format(
                        "select g from General g left join g.ParentProject p where g.EntityType IN ({0}) and (p is null or p.DeleteDate is null) order by g desc skip 0 take 1",
                        _entityTypeProvider.QueryableEntityTypesIdSqlString),
                IgnoreMessageSizeOverrunFailure = true,
                Params = new object[] { }
            });
            _log.Info("Started rebuilding indexes");
        }
        public void Handle(IndexExistingEntitiesLocalMessage message)
        {
            try
            {
                foreach (var tpSagaEntity in ObjectFactory.GetInstance <IStorageRepository>().Get <ISagaEntity>())
                {
                    if (!(tpSagaEntity is IndexExistingEntitiesSagaData))
                    {
                        continue;
                    }

                    if (tpSagaEntity.Id != Data.Id)
                    {
                        _sagaPersister.Complete(tpSagaEntity);
                    }
                }
            }
            catch (Exception e)
            {
                _logger.ErrorFormat("Failed to complete Running Saga When start to rebuild indexed, error: ", e.Message);
            }
            _documentIndexProvider.ShutdownDocumentIndexes(_pluginContext.AccountName,
                                                           new DocumentIndexShutdownSetup(forceShutdown: true, cleanStorage: true));

            Data.OuterSagaId            = message.OuterSagaId;
            Data.GeneralsRetrievedCount = 0;
            Data.CommentsRetrievedCount = 0;

            Send(new GeneralQuery {
                Hql = string.Format(GeneralsHql, Data.SkipGenerals, PageSize), IgnoreMessageSizeOverrunFailure = true, Params = _param
            });
        }
Exemple #5
0
 public bool TryCompleteInprogressSaga <TSaga>(Guid sagaId)
 {
     try
     {
         foreach (ISagaEntity candidate in _storageRepository.Get <ISagaEntity>())
         {
             if (!(candidate is TSaga))
             {
                 continue;
             }
             if (candidate.Id != sagaId)
             {
                 _sagaPersister.Complete(candidate);
                 return(true);
             }
         }
     }
     catch (Exception e)
     {
         _logger.ErrorFormat("Failed to complete Running Saga When start to rebuild indexed, error: ", e.Message);
     }
     return(false);
 }