private DatabaseScavengeResult(string scavengeId, ScavengeResult result) { if (scavengeId == null) { throw new ArgumentNullException(nameof(scavengeId)); } ScavengeId = scavengeId; Result = result; }
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; }
public void ScavengeCompleted(ScavengeResult result, string error, TimeSpan elapsed) { Completed = true; Result = result; CompletedCallback?.Invoke(this, EventArgs.Empty); }
public void ScavengeCompleted(ScavengeResult result, string error, TimeSpan elapsed) => ScavengeCompleted(result, error, elapsed, _spaceSaved, _maxChunkScavenged);
public void ScavengeCompleted(ScavengeResult result, string error, TimeSpan elapsed) { }