rocketjob 6.0.3 → 6.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rocket_job/dirmon_entry.rb +2 -0
- data/lib/rocket_job/jobs/dirmon_job.rb +22 -14
- data/lib/rocket_job/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fc1f3d316be0aa058cee5b22c116872a80ea5bdaf7d72db447ae13781ba6b370
|
4
|
+
data.tar.gz: 87f56a455792e45ab2ad706f0c8bd625590df9942806bbd308c5145d07e94973
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f928a3afb886c39893ef5b5d2e13f71405c83df53c3b02826e474326c9171f87c84e595fc179a0e22cbc69d846f1da12eb268026fc06bcaf609920326159c6f4
|
7
|
+
data.tar.gz: 3b90508c45e7a09739ae53e5bb66992d80251a5b5668eb568eeba30a8da8d109bbb162b2db66e93f82ce3deb4f6cc9425175d0f9c41adb351f6c3885768db3dc
|
@@ -71,6 +71,7 @@ module RocketJob
|
|
71
71
|
validates_presence_of :pattern, :job_class_name, :archive_directory
|
72
72
|
validate :job_is_a_rocket_job
|
73
73
|
validate :job_has_properties
|
74
|
+
validates_uniqueness_of :pattern, :name
|
74
75
|
|
75
76
|
# State Machine events and transitions
|
76
77
|
#
|
@@ -97,6 +98,7 @@ module RocketJob
|
|
97
98
|
event :enable do
|
98
99
|
transitions from: :pending, to: :enabled
|
99
100
|
transitions from: :disabled, to: :enabled
|
101
|
+
transitions from: :failed, to: :enabled
|
100
102
|
end
|
101
103
|
|
102
104
|
event :disable do
|
@@ -59,23 +59,31 @@ module RocketJob
|
|
59
59
|
def check_directories
|
60
60
|
new_file_names = {}
|
61
61
|
DirmonEntry.enabled.each do |dirmon_entry|
|
62
|
-
dirmon_entry
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
dirmon_entry.later(path)
|
67
|
-
next
|
68
|
-
end
|
62
|
+
check_entry(dirmon_entry, new_file_names)
|
63
|
+
end
|
64
|
+
self.previous_file_names = new_file_names
|
65
|
+
end
|
69
66
|
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
67
|
+
def check_entry(dirmon_entry, file_names)
|
68
|
+
dirmon_entry.each do |path|
|
69
|
+
# Skip file size checking since S3 files are only visible once completely uploaded.
|
70
|
+
unless path.partial_files_visible?
|
71
|
+
logger.info("File: #{path}. Starting: #{dirmon_entry.job_class_name}")
|
72
|
+
dirmon_entry.later(path)
|
73
|
+
next
|
76
74
|
end
|
75
|
+
|
76
|
+
# BSON Keys cannot contain periods
|
77
|
+
key = path.to_s.tr(".", "_")
|
78
|
+
previous_size = previous_file_names[key]
|
79
|
+
# Check every few minutes for a file size change before trying to process the file.
|
80
|
+
size = check_file(dirmon_entry, path, previous_size)
|
81
|
+
file_names[key] = size if size
|
77
82
|
end
|
78
|
-
|
83
|
+
rescue StandardError => e
|
84
|
+
logger.error("Dirmon Entry: #{dirmon_entry.id} failed. Moved to `failed` state to prevent processing again without manual intervention.", e)
|
85
|
+
dirmon_entry.fail(worker_name, e)
|
86
|
+
dirmon_entry.save(validate: false)
|
79
87
|
end
|
80
88
|
|
81
89
|
# Checks if a file should result in starting a job
|
data/lib/rocket_job/version.rb
CHANGED