private DatabaseScavengeResult(string scavengeId, ScavengeResult result)
 {
     if (scavengeId == null)
     {
         throw new ArgumentNullException(nameof(scavengeId));
     }
     ScavengeId = scavengeId;
     Result     = result;
 }
Esempio n. 2
0
        public void ScavengeCompleted(ScavengeResult result, string error, TimeSpan elapsed)
        {
            var scavengeCompletedEvent = new Event(Guid.NewGuid(), SystemEventTypes.ScavengeCompleted, true, new Dictionary <string, object> {
                { "scavengeId", _scavengeId },
                { "nodeEndpoint", _nodeId },
                { "result", result },
                { "error", error },
                { "timeTaken", elapsed },
                { "spaceSaved", _spaceSaved }
            }.ToJsonBytes(), null);

            WriteScavengeDetailEvent(_streamName, scavengeCompletedEvent, _retryAttempts);
        }
        public Task Scavenge(bool alwaysKeepScavenged, bool mergeChunks, int startFromChunk = 0, CancellationToken ct = default(CancellationToken))
        {
            Ensure.Nonnegative(startFromChunk, nameof(startFromChunk));

            // Note we aren't passing the CancellationToken to the task on purpose so awaiters
            // don't have to handle Exceptions and can wait for the actual completion of the task.
            return(Task.Factory.StartNew(() =>
            {
                var sw = Stopwatch.StartNew();

                ScavengeResult result = ScavengeResult.Success;
                string error = null;
                try
                {
                    _scavengerLog.ScavengeStarted();

                    ScavengeInternal(alwaysKeepScavenged, mergeChunks, startFromChunk, ct);

                    _tableIndex.Scavenge(_scavengerLog, ct);
                }
                catch (OperationCanceledException)
                {
                    Log.Info("SCAVENGING: Scavenge cancelled.");
                    result = ScavengeResult.Stopped;
                }
                catch (Exception exc)
                {
                    result = ScavengeResult.Failed;
                    Log.ErrorException(exc, "SCAVENGING: error while scavenging DB.");
                    error = string.Format("Error while scavenging DB: {0}.", exc.Message);
                }
                finally
                {
                    try
                    {
                        _scavengerLog.ScavengeCompleted(result, error, sw.Elapsed);
                    }
                    catch (Exception ex)
                    {
                        Log.ErrorException(ex, "Error whilst recording scavenge completed. Scavenge result: {result}, Elapsed: {elapsed}, Original error: {e}", result, sw.Elapsed, error);
                    }
                }
            }, TaskCreationOptions.LongRunning));
        }
    public ScavengeResult Scavenge()
    {
        ScavengeResult result = new ScavengeResult(this);

        foreach (var item in scavengableItems)
        {
            int random = Random.Range((int)item.minimumScavengable, (int)item.maximumScavengable + 1);
            if (random > 0)
            {
                StorageManager storageManager = GameObject.Find("StorageManager").GetComponent <StorageManager>();
                storageManager.AddItems(item.scavengableItem, (uint)random);

                Item_And_Quantity scavenged = new Item_And_Quantity(item.scavengableItem, (uint)random);
                result.scavengedItems.Add(scavenged);
            }
        }

        return(result);
    }
 private DatabaseScavengeResult(string scavengeId, ScavengeResult result)
 {
     ScavengeId = scavengeId;
     Result     = result;
 }
Esempio n. 6
0
 public void ScavengeCompleted(ScavengeResult result, string error, TimeSpan elapsed)
 {
     Completed = true;
     Result    = result;
     CompletedCallback?.Invoke(this, EventArgs.Empty);
 }
Esempio n. 7
0
 public void ScavengeCompleted(ScavengeResult result, string error, TimeSpan elapsed)
 => ScavengeCompleted(result, error, elapsed, _spaceSaved, _maxChunkScavenged);
 public void ScavengeCompleted(ScavengeResult result, string error, TimeSpan elapsed)
 {
 }