- Trace.transaction do
- begin
- # Save the trace object
- @trace.save!
-
- # Rename the temporary file to the final name
- FileUtils.mv(filename, @trace.trace_name)
- rescue StandardError
- # Remove the file as we have failed to update the database
- FileUtils.rm_f(filename)
-
- # Pass the exception on
- raise
- end
-
- begin
- # Clear the inserted flag to make the import daemon load the trace
- @trace.inserted = false
- @trace.save!
- rescue StandardError
- # Remove the file as we have failed to update the database
- FileUtils.rm_f(@trace.trace_name)
-
- # Pass the exception on
- raise
+ if trace.valid?
+ Trace.transaction do
+ begin
+ # Save the trace object
+ trace.save!
+
+ # Rename the temporary file to the final name
+ FileUtils.mv(filename, trace.trace_name)
+ rescue StandardError
+ # Remove the file as we have failed to update the database
+ FileUtils.rm_f(filename)
+
+ # Pass the exception on
+ raise
+ end
+
+ begin
+ # Clear the inserted flag to make the import daemon load the trace
+ trace.inserted = false
+ trace.save!
+ rescue StandardError
+ # Remove the file as we have failed to update the database
+ FileUtils.rm_f(trace.trace_name)
+
+ # Pass the exception on
+ raise
+ end