Beispiel #1
0
        public void QueueWrite(InfluxDbEntry[] entries, int maxRetries, string database, string retentionPoliciy)
        {
            _logger.Debug("Queuing {0} entries for influx db upload: \r\n{1}",
                          entries.Length,
                          string.Join(Environment.NewLine, entries.Select(x => x.ToString())));
            _jobQueue.Add(new InfluxDbUploadQueueElement(entries, maxRetries, database, retentionPoliciy));

            if (_handle == null || !_handle.IsRunning || _handle.HasFailed)
            {
                if (_handle != null)
                {
                    _logger.Warn("Not running upload thread detected. Starting new one. Stopping old thread. Has failed: {0}", _handle.HasFailed);
                    _threadManager.StopThread(_handle);
                }
                else
                {
                    _logger.Info("Starting first time upload thread.");
                }

                var newThread = new InfluxDbUploadThread(_jobQueue, _retryJobQueue, _logger, this);
                _handle = _threadManager.Start(newThread);
            }

            if (_retryJob == null)
            {
                _logger.Info("Starting first time retry job.");
                _retryJob = new InfluxDbUploadRetryJob(_logger, _jobQueue, _retryJobQueue);
                _schedulingService.AddJob(_retryJob, new PollingPlan(TimeSpan.FromMinutes(1)));
            }
        }
Beispiel #2
0
 public void StopThread(IManagedThreadHandle managedThread)
 {
     lock (_lock)
     {
         var curThread = _threads.FirstOrDefault(x => x == managedThread);
         if (curThread != null)
         {
             StopThread(curThread);
         }
     }
 }
Beispiel #3
0
        public void Run(IManagedThreadHandle handle)
        {
            while (!handle.WasInterrupted)
            {
                try
                {
                    foreach (var job in _jobQueue.GetConsumingEnumerable())
                    {
                        if (job.RetryCount < 1)
                        {
                            _logger.Error("Job has reached max retry count. Discarding job. Errors are:{0}",
                                          string.Join(Environment.NewLine, job.Errors.Select(x => x.ToString())));
                        }
                        try
                        {
                            _logger.Debug("Uploading entries");
                            if (string.IsNullOrEmpty(job.RetentioPolicy))
                            {
                                _upload.Write(job.Entries, job.Database);
                            }
                            else
                            {
                                _upload.Write(job.Entries, job.Database, job.RetentioPolicy);
                            }
                            _logger.Info("Uploading entries done");
                        }
                        catch (Exception ex)
                        {
                            _logger.Warn("Uploading of entries from job run on error. Current count of retries is {0}", job.RetryCount);
                            job.RetryCount--;
                            job.AddError(ex);

                            lock (_retryJobQueue)
                            {
                                _retryJobQueue.Add(new InfluxDbUploadRetryQueueElement(job));
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    _logger.Error(ex, "In influxDbUpload thread an error occured");
                }
            }
        }
Beispiel #4
0
        public void Run(IManagedThreadHandle handle)
        {
            foreach (var input in _inputQueue.GetConsumingEnumerable())
            {
                var wallpaperMaybe = _wallpaperManager.GetById(input.WallpaperId);
                if (!wallpaperMaybe.HasValue)
                {
                    continue;
                }
                var wallpaper = wallpaperMaybe.Value;
                var handler   = new ImageConverterWallpaperHandler(_logger, wallpaper, _wallpaperManager);
                foreach (var file in wallpaper.Files)
                {
                    file.Accept(handler);
                }

                handler.ProcessFiles();

                _logger.Info("Converter queue: {0}", _inputQueue.Count);
            }
        }
Beispiel #5
0
        public void Run(IManagedThreadHandle handle)
        {
            foreach (var wallpaper in _collection.GetConsumingEnumerable())
            {
                try
                {
                    _logger.Debug("Checking images for wallpaper '{0}'", wallpaper.Id);
                    CheckFile(wallpaper.Image, $"wallpaper/wallpaper/{wallpaper.Id.ToString()}/original");
                    CheckFile(wallpaper.Thumbnail, $"wallpaper/wallpaper/{wallpaper.Id.ToString()}/thumbnail");
                }
                catch (Exception ex)
                {
                    _logger.Error(ex, "Downloading of wallpaper '{0}' not possible", wallpaper.Id);
                }

                if (handle.WasInterrupted)
                {
                    break;
                }
            }
        }