public override JobData GetJobData(string key) { key.ThrowIfNull("key"); using (var repository = _storage.Repository.OpenSession()) { var id = _storage.Repository.GetId(typeof(RavenJob), key); var jobData = repository.Load <RavenJob>(id); if (jobData == null) { return(null); } Job job = null; JobLoadException loadException = null; try { job = jobData.InvocationData.Deserialize(); } catch (JobLoadException ex) { loadException = ex; } return(new JobData { Job = job, State = jobData.StateData?.Name, CreatedAt = jobData.CreatedAt, LoadException = loadException }); } }
public override JobData GetJobData(string jobId) { if (!_dispatcher.TryGetJobData(jobId, out var entry)) { return(null); } Job job = null; JobLoadException loadException = null; try { job = entry.InvocationData.DeserializeJob(); } catch (JobLoadException ex) { loadException = ex; } return(new JobData { Job = job, LoadException = loadException, CreatedAt = entry.CreatedAt, State = entry.State?.Name }); }
public override JobData GetJobData(string jobId) { Guard.ArgumentNotNull(jobId, "jobId"); var jobData = _data.Get <JobDto>(jobId); if (jobData == null) { return(null); } var invocationData = JobHelper.FromJson <InvocationData>(jobData.InvocationData); invocationData.Arguments = jobData.Arguments; Job job = null; JobLoadException loadException = null; try { job = invocationData.Deserialize(); } catch (JobLoadException ex) { loadException = ex; } return(new JobData { Job = job, State = jobData.StateName, CreatedAt = jobData.CreatedAt, LoadException = loadException }); }
public override JobData GetJobData(string id) { id.ThrowIfNull("id"); using (var repository = new Repository()) { var jobData = repository.Session.Load <RavenJob>(id); if (jobData == null) { return(null); } var invocationData = JobHelper.FromJson <InvocationData>(jobData.InvocationData); invocationData.Arguments = jobData.Arguments; Job job = null; JobLoadException loadException = null; try { job = invocationData.Deserialize(); } catch (JobLoadException ex) { loadException = ex; } return(new JobData { Job = job, State = jobData.StateName, CreatedAt = jobData.CreatedAt, LoadException = loadException }); } }
public JobData GetJobData(string id) { var storedData = Redis.GetAllEntriesFromHash( String.Format(RedisStorage.Prefix + "job:{0}", id)); if (storedData.Count == 0) { return(null); } string type = null; string method = null; string parameterTypes = null; string arguments = null; string createdAt = null; if (storedData.ContainsKey("Type")) { type = storedData["Type"]; } if (storedData.ContainsKey("Method")) { method = storedData["Method"]; } if (storedData.ContainsKey("ParameterTypes")) { parameterTypes = storedData["ParameterTypes"]; } if (storedData.ContainsKey("Arguments")) { arguments = storedData["Arguments"]; } if (storedData.ContainsKey("CreatedAt")) { createdAt = storedData["CreatedAt"]; } Job job = null; JobLoadException loadException = null; var invocationData = new InvocationData(type, method, parameterTypes, arguments); try { job = invocationData.Deserialize(); } catch (JobLoadException ex) { loadException = ex; } return(new JobData { Job = job, State = storedData.ContainsKey("State") ? storedData["State"] : null, CreatedAt = JobHelper.FromNullableStringTimestamp(createdAt) ?? DateTime.MinValue, LoadException = loadException }); }
public void Ctor_CreatesException_WithGivenMessageAnInnerException() { var innerException = new Exception(); var exception = new JobLoadException("1", innerException); Assert.Equal("1", exception.Message); Assert.Same(innerException, exception.InnerException); }
public override JobData GetJobData(string id) { var storedData = Redis.HashGetAll(string.Format(RedisStorage.Prefix + "job:{0}", id)); if (storedData.Length == 0) { return(null); } string type = null; string method = null; string parameterTypes = null; string arguments = null; string createdAt = null; if (storedData.ContainsKey("Type")) { type = storedData.First(x => x.Name == "Type").Value; } if (storedData.ContainsKey("Method")) { method = storedData.First(x => x.Name == "Method").Value; } if (storedData.ContainsKey("ParameterTypes")) { parameterTypes = storedData.First(x => x.Name == "ParameterTypes").Value; } if (storedData.ContainsKey("Arguments")) { arguments = storedData.First(x => x.Name == "Arguments").Value; } if (storedData.ContainsKey("CreatedAt")) { createdAt = storedData.First(x => x.Name == "CreatedAt").Value; } Job job = null; JobLoadException loadException = null; var invocationData = new InvocationData(type, method, parameterTypes, arguments); try { job = invocationData.Deserialize(); } catch (JobLoadException ex) { loadException = ex; } return(new JobData { Job = job, State = storedData.ContainsKey("State") ? (string)storedData.First(x => x.Name == "State").Value : null, CreatedAt = JobHelper.DeserializeNullableDateTime(createdAt) ?? DateTime.MinValue, LoadException = loadException }); }
public override JobData GetJobData(string id) { if (id == null) { throw new ArgumentNullException(nameof(id)); } if (!long.TryParse(id, out var parsedId)) { return(null); } string sql = $@"select InvocationData, StateName, Arguments, CreatedAt from [{_storage.SchemaName}].Job with (readcommittedlock, forceseek) where Id = @id"; return(_storage.UseConnection(_dedicatedConnection, connection => { var jobData = connection.Query <SqlJob>(sql, new { id = parsedId }, commandTimeout: _storage.CommandTimeout) .SingleOrDefault(); if (jobData == null) { return null; } // TODO: conversion exception could be thrown. var invocationData = InvocationData.DeserializePayload(jobData.InvocationData); if (!String.IsNullOrEmpty(jobData.Arguments)) { invocationData.Arguments = jobData.Arguments; } Job job = null; JobLoadException loadException = null; try { job = invocationData.DeserializeJob(); } catch (JobLoadException ex) { loadException = ex; } return new JobData { Job = job, State = jobData.StateName, CreatedAt = jobData.CreatedAt, LoadException = loadException }; })); }
public override JobData GetJobData(string jobId) { if (jobId == null) { throw new ArgumentNullException(nameof(jobId)); } var converter = StringToInt32Converter.Convert(jobId); if (!converter.Valid) { return(null); } Logger.InfoFormat("Get job data for job '{0}'", jobId); return(Storage.UseSession(session => { var jobData = session .Query <_Job>() .SingleOrDefault(i => i.Id == converter.Value); if (jobData == null) { return null; } var invocationData = JobHelper.FromJson <InvocationData>(jobData.InvocationData); invocationData.Arguments = jobData.Arguments; Job job = null; JobLoadException loadException = null; try { job = invocationData.Deserialize(); } catch (JobLoadException ex) { loadException = ex; } return new JobData { Job = job, State = jobData.StateName, CreatedAt = jobData.CreatedAt, LoadException = loadException }; })); }
public override JobData GetJobData(string jobId) { Guard.ThrowIfNull(jobId, nameof(jobId)); const string sql = @" SELECT ""invocationdata"" ""invocationData"", ""statename"" ""stateName"", ""arguments"", ""createdat"" ""createdAt"" FROM job WHERE ""id"" = @id; "; SqlJob jobData; using (var connectionHolder = _connectionProvider.AcquireConnection()) { jobData = connectionHolder.Connection .Query <SqlJob>(sql, new { id = Convert.ToInt32(jobId, CultureInfo.InvariantCulture) }) .SingleOrDefault(); } if (jobData == null) { return(null); } // TODO: conversion exception could be thrown. var invocationData = JobHelper.FromJson <InvocationData>(jobData.InvocationData); invocationData.Arguments = jobData.Arguments; Job job = null; JobLoadException loadException = null; try { job = invocationData.Deserialize(); } catch (JobLoadException ex) { loadException = ex; } return(new JobData { Job = job, State = jobData.StateName, CreatedAt = jobData.CreatedAt, LoadException = loadException }); }
public override JobData GetJobData(string id) { if (id == null) { throw new ArgumentNullException("id"); } string sql = @" SELECT ""invocationdata"" ""invocationData"", ""statename"" ""stateName"", ""arguments"", ""createdat"" ""createdAt"" FROM """ + _options.SchemaName + @""".""job"" WHERE ""id"" = @id; "; var jobData = _connection.Query <SqlJob>(sql, new { id = Convert.ToInt32(id, CultureInfo.InvariantCulture) }) .SingleOrDefault(); if (jobData == null) { return(null); } // TODO: conversion exception could be thrown. var invocationData = JobHelper.FromJson <InvocationData>(jobData.InvocationData); invocationData.Arguments = jobData.Arguments; Job job = null; JobLoadException loadException = null; try { job = invocationData.Deserialize(); } catch (JobLoadException ex) { loadException = ex; } return(new JobData { Job = job, State = jobData.StateName, CreatedAt = jobData.CreatedAt, LoadException = loadException }); }
public override JobData GetJobData(string jobId) { if (jobId == null) { throw new ArgumentNullException("jobId"); } return(_storage.UseConnection(connection => { var jobData = connection .Query <SqlJob>( "select InvocationData, StateName, Arguments, CreatedAt " + $"from `{_storageOptions.TablesPrefix}Job` " + "where Id = @id", new { id = jobId }) .SingleOrDefault(); if (jobData == null) { return null; } var invocationData = JobHelper.FromJson <InvocationData>(jobData.InvocationData); invocationData.Arguments = jobData.Arguments; Job job = null; JobLoadException loadException = null; try { job = invocationData.Deserialize(); } catch (JobLoadException ex) { loadException = ex; } return new JobData { Job = job, State = jobData.StateName, CreatedAt = jobData.CreatedAt, LoadException = loadException }; })); }
public override JobData GetJobData(string jobId) { if (jobId == null) { throw new ArgumentNullException(nameof(jobId)); } var iJobId = int.Parse(jobId); var jobData = DbContext .HangfireJobRepository .FirstOrDefault(_ => _.Id == iJobId); if (jobData == null) { return(null); } // TODO: conversion exception could be thrown. var invocationData = SerializationHelper.Deserialize <InvocationData>(jobData.InvocationData, SerializationOption.User); if (!string.IsNullOrEmpty(jobData.Arguments)) { invocationData.Arguments = jobData.Arguments; } Job job = null; JobLoadException loadException = null; try { job = invocationData.DeserializeJob(); } catch (JobLoadException ex) { loadException = ex; } return(new JobData { Job = job, InvocationData = invocationData, State = jobData.StateName, CreatedAt = jobData.CreatedAt, LoadException = loadException }); }
public void Instance_CanBeSerializedAndDeserialized() { var exception = new JobLoadException("1", new Exception()); JobLoadException deserializedException; using (var stream = new MemoryStream()) { var formatter = new BinaryFormatter(); formatter.Serialize(stream, exception); stream.Position = 0; deserializedException = (JobLoadException)formatter.Deserialize(stream); } Assert.Equal("1", deserializedException.Message); }
public override JobData GetJobData(string id) { if (id == null) { throw new ArgumentNullException("id"); } var sql = string.Format(@"select InvocationData, StateName, Arguments, CreatedAt from [{0}.Job] where Id = @id", _storage.GetSchemaName()); return(_storage.UseConnection(connection => { var jobData = connection.Query <SqlJob>(sql, new { id }) .SingleOrDefault(); if (jobData == null) { return null; } // TODO: conversion exception could be thrown. var invocationData = JobHelper.FromJson <InvocationData>(jobData.InvocationData); invocationData.Arguments = jobData.Arguments; Job job = null; JobLoadException loadException = null; try { job = invocationData.Deserialize(); } catch (JobLoadException ex) { loadException = ex; } return new JobData { Job = job, State = jobData.StateName, CreatedAt = jobData.CreatedAt, LoadException = loadException }; })); }
public override JobData GetJobData(string id) { if (id == null) { throw new ArgumentNullException(nameof(id)); } string sql = $@"select InvocationData, StateName, Arguments, CreatedAt from [{_storage.SchemaName}].Job with (readcommittedlock) where Id = @id"; return(_storage.UseConnection(connection => { var jobData = connection.Query <SqlJob>(sql, new { id = Guid.Parse(id) }, commandTimeout: _storage.CommandTimeout) .SingleOrDefault(); if (jobData == null) { return null; } // TODO: conversion exception could be thrown. var invocationData = JobHelper.FromJson <InvocationData>(jobData.InvocationData); invocationData.Arguments = jobData.Arguments; Job job = null; JobLoadException loadException = null; try { job = invocationData.Deserialize(); } catch (JobLoadException ex) { loadException = ex; } return new JobData { Job = job, State = jobData.StateName, CreatedAt = jobData.CreatedAt, LoadException = loadException }; })); }
public override JobData GetJobData(string jobId) { if (jobId == null) { throw new ArgumentNullException(nameof(jobId)); } return(_storage.UseConnection(connection => { var jobData = connection.QuerySingleOrDefault <SqlJob>( "SELECT INVOCATION_DATA AS InvocationData, STATE_NAME AS StateName, ARGUMENTS AS Arguments, CREATED_AT AS CreatedAt " + " FROM HF_JOB " + " WHERE ID = :ID", new { ID = jobId }); if (jobData == null) { return null; } var invocationData = JobHelper.FromJson <InvocationData>(jobData.InvocationData); invocationData.Arguments = jobData.Arguments; Job job = null; JobLoadException loadException = null; try { job = invocationData.Deserialize(); } catch (JobLoadException ex) { loadException = ex; } return new JobData { Job = job, State = jobData.StateName, CreatedAt = jobData.CreatedAt, LoadException = loadException }; })); }
public JobData GetJobData(string id) { if (id == null) { throw new ArgumentNullException("id"); } string sql = string.Format(@"SELECT invocationdata, statename, arguments, createdat FROM ""{0}.JOB"" WHERE id = @id;", _options.Prefix); var jobData = _connection.Query <SqlJob>(sql, new { id = Convert.ToInt32(id, CultureInfo.InvariantCulture) }) .SingleOrDefault(); if (jobData == null) { return(null); } // TODO: conversion exception could be thrown. var invocationData = JobHelper.FromJson <InvocationData>(jobData.InvocationData); invocationData.Arguments = jobData.Arguments; Job job = null; JobLoadException loadException = null; try { job = invocationData.Deserialize(); } catch (JobLoadException ex) { loadException = ex; } return(new JobData { Job = job, State = jobData.StateName, CreatedAt = jobData.CreatedAt, LoadException = loadException }); }
public Job TryGetJob(out JobLoadException exception) { exception = null; if (Job != null) { return(new Job(Job.Type, Job.Method, Job.Args.ToArray())); } try { return(InvocationData.DeserializeJob()); } catch (JobLoadException ex) { exception = ex; return(null); } }
public override JobData GetJobData(string jobId) { if (jobId == null) { throw new ArgumentNullException(nameof(jobId)); } var iJobId = int.Parse(jobId); var jobData = Database .Job .Find(_ => _.Id == iJobId) .FirstOrDefault(); if (jobData == null) { return(null); } // TODO: conversion exception could be thrown. var invocationData = SerializationHelper.Deserialize <InvocationData>(jobData.InvocationData, SerializationOption.User); invocationData.Arguments = jobData.Arguments; Job job = null; JobLoadException loadException = null; try { job = invocationData.Deserialize(); } catch (JobLoadException ex) { loadException = ex; } return(new JobData { Job = job, State = jobData.StateName, CreatedAt = jobData.CreatedAt, LoadException = loadException }); }
public JobData GetJobData(string id) { if (id == null) { throw new ArgumentNullException("id"); } const string sql = @"select InvocationData, StateName, Arguments, CreatedAt from HangFire.Job where Id = @id"; var jobData = _connection.Query <SqlJob>(sql, new { id = id }) .SingleOrDefault(); if (jobData == null) { return(null); } // TODO: conversion exception could be thrown. var invocationData = JobHelper.FromJson <InvocationData>(jobData.InvocationData); invocationData.Arguments = jobData.Arguments; Job job = null; JobLoadException loadException = null; try { job = invocationData.Deserialize(); } catch (JobLoadException ex) { loadException = ex; } return(new JobData { Job = job, State = jobData.StateName, CreatedAt = jobData.CreatedAt, LoadException = loadException }); }
public override JobData GetJobData(string jobId) { if (jobId == null) { throw new ArgumentNullException(nameof(jobId)); } var jobData = _dbContext .JobGraph .OfType <JobDto>() .Find(Builders <JobDto> .Filter.Eq(_ => _.Id, ObjectId.Parse(jobId))) .FirstOrDefault(); if (jobData == null) { return(null); } // TODO: conversion exception could be thrown. var invocationData = JobHelper.FromJson <InvocationData>(jobData.InvocationData); invocationData.Arguments = jobData.Arguments; Job job = null; JobLoadException loadException = null; try { job = invocationData.Deserialize(); } catch (JobLoadException ex) { loadException = ex; } return(new JobData { Job = job, State = jobData.StateName, CreatedAt = jobData.CreatedAt, LoadException = loadException }); }
public override JobData GetJobData(string jobId) { if (jobId == null) { throw new ArgumentNullException(nameof(jobId)); } Uri uri = UriFactory.CreateDocumentUri(Storage.Options.DatabaseName, Storage.Options.CollectionName, jobId); Task <DocumentResponse <Documents.Job> > task = Storage.Client.ReadDocumentWithRetriesAsync <Documents.Job>(uri, new RequestOptions { PartitionKey = new PartitionKey((int)DocumentTypes.Job) }); task.Wait(); if (task.Result.Document != null) { Documents.Job data = task.Result; InvocationData invocationData = data.InvocationData; invocationData.Arguments = data.Arguments; Common.Job job = null; JobLoadException loadException = null; try { job = invocationData.DeserializeJob(); } catch (JobLoadException ex) { loadException = ex; } return(new JobData { Job = job, State = data.StateName, CreatedAt = data.CreatedOn, LoadException = loadException }); } return(null); }
public override JobData GetJobData([NotNull] string jobId) { if (jobId == null) { throw new ArgumentNullException(nameof(jobId)); } //var storedData = Redis.HashGetAll(_storage.GetRedisKey($"job:{jobId}")); var storedData = RedisClient.HGetAll(_storage.GetRedisKey($"job:{jobId}")); if (storedData.Count == 0) { return(null); } string type = storedData.FirstOrDefault(x => x.Key == "Type").Value; string method = storedData.FirstOrDefault(x => x.Key == "Method").Value; string parameterTypes = storedData.FirstOrDefault(x => x.Key == "ParameterTypes").Value; string arguments = storedData.FirstOrDefault(x => x.Key == "Arguments").Value; string createdAt = storedData.FirstOrDefault(x => x.Key == "CreatedAt").Value; Job job = null; JobLoadException loadException = null; var invocationData = new InvocationData(type, method, parameterTypes, arguments); try { job = invocationData.DeserializeJob(); } catch (JobLoadException ex) { loadException = ex; } return(new JobData { Job = job, State = storedData.FirstOrDefault(x => x.Key == "State").Value, CreatedAt = JobHelper.DeserializeNullableDateTime(createdAt) ?? DateTime.MinValue, LoadException = loadException }); }
public override JobData GetJobData(string jobId) { if (jobId == null) { throw new ArgumentNullException("jobId"); } JobDto jobData = AsyncHelper.RunSync(() => _database.Job .Find(Builders <JobDto> .Filter.Eq(_ => _.Id, int.Parse(jobId))) .FirstOrDefaultAsync()); if (jobData == null) { return(null); } // TODO: conversion exception could be thrown. InvocationData invocationData = JobHelper.FromJson <InvocationData>(jobData.InvocationData); invocationData.Arguments = jobData.Arguments; Job job = null; JobLoadException loadException = null; try { job = invocationData.Deserialize(); } catch (JobLoadException ex) { loadException = ex; } return(new JobData { Job = job, State = jobData.StateName, CreatedAt = jobData.CreatedAt, LoadException = loadException }); }
public override JobData GetJobData(string jobId) { if (jobId == null) { throw new ArgumentNullException(nameof(jobId)); } Uri uri = UriFactory.CreateDocumentUri(Storage.Options.DatabaseName, Storage.Options.CollectionName, jobId); Task <DocumentResponse <Documents.Job> > task = Storage.Client.ReadDocumentAsync <Documents.Job>(uri); Documents.Job data = task.Result; if (data != null) { InvocationData invocationData = data.InvocationData; invocationData.Arguments = data.Arguments; Common.Job job = null; JobLoadException loadException = null; try { job = invocationData.Deserialize(); } catch (JobLoadException ex) { loadException = ex; } return(new JobData { Job = job, State = data.StateName, CreatedAt = data.CreatedOn, LoadException = loadException }); } return(null); }
public override JobData GetJobData(string jobId) { if (jobId == null) { throw new ArgumentNullException(nameof(jobId)); } Task <ItemResponse <Documents.Job> > task = Storage.Container.ReadItemWithRetriesAsync <Documents.Job>(jobId, new PartitionKey((int)DocumentTypes.Job)); task.Wait(); if (task.Result.Resource != null) { Documents.Job data = task.Result; InvocationData invocationData = data.InvocationData; invocationData.Arguments = data.Arguments; Common.Job job = null; JobLoadException loadException = null; try { job = invocationData.DeserializeJob(); } catch (JobLoadException ex) { loadException = ex; } return(new JobData { Job = job, State = data.StateName, CreatedAt = data.CreatedOn, LoadException = loadException }); } return(null); }
public override JobData GetJobData(string jobId) { if (jobId == null) { throw new ArgumentNullException(nameof(jobId)); } using var realm = _storage.GetRealm(); var jobDto = realm.Find <JobDto>(jobId); if (jobDto == null) { return(null); } var invocationData = SerializationHelper.Deserialize <InvocationData>(jobDto.InvocationData); invocationData.Arguments = jobDto.Arguments; Job job = null; JobLoadException loadException = null; try { job = invocationData.DeserializeJob(); } catch (JobLoadException ex) { _logger.WarnException($"Deserializing job {jobId} has failed.", ex); loadException = ex; } return(new JobData { Job = job, State = jobDto.StateName, CreatedAt = jobDto.Created.DateTime, LoadException = loadException }); }
public override JobData GetJobData(string jobId) { if (jobId == null) { throw new ArgumentNullException(nameof(jobId)); } Entities.Job data = Storage.Client.CreateDocumentQuery <Entities.Job>(Storage.Collections.JobDocumentCollectionUri, QueryOptions) .Where(j => j.Id == jobId) .AsEnumerable() .FirstOrDefault(); if (data != null) { InvocationData invocationData = data.InvocationData; invocationData.Arguments = data.Arguments; Common.Job job = null; JobLoadException loadException = null; try { job = invocationData.Deserialize(); } catch (JobLoadException ex) { loadException = ex; } return(new JobData { Job = job, State = data.StateName, CreatedAt = data.CreatedOn, LoadException = loadException }); } return(null); }
public JobData GetJobData(string jobId) { if (jobId == null) { throw new ArgumentNullException("jobId"); } var jobData = _database.Job.FindOneById(int.Parse(jobId)); if (jobData == null) { return(null); } // TODO: conversion exception could be thrown. var invocationData = JobHelper.FromJson <InvocationData>(jobData.InvocationData); invocationData.Arguments = jobData.Arguments; Job job = null; JobLoadException loadException = null; try { job = invocationData.Deserialize(); } catch (JobLoadException ex) { loadException = ex; } return(new JobData { Job = job, State = jobData.StateName, CreatedAt = jobData.CreatedAt, LoadException = loadException }); }