cancel
Showing results for 
Search instead for 
Did you mean: 
nicolopez77
Surveyor II

Error when copying or importing a course - self hosted

Jump to solution

Hi All, I'm having an issue with a self hosted Canvas. When I try to import a course (exported from the same or from another server), doesn't matter the size or content it has, the process ends with an error message. I've even tried with an empty course. Same result when copying a course. We have posted a message some time ago in the developers google group, but no one answered. It looks like the support from Instructure to the self hosted version is very limited.

We don't have any other issue in the server, the file upload/download and all other functionality works fine. The Canvas version si the latest stable from November 10, 2020. We have checked permissions on the /var/canvas/tmp folder, and we even see the export file is created, but then it fails to import it.

Here is the full error message, maybe someone can help:

 

#3752 No such file or directory - file

categoría: content_migration
creado a las: 2021-01-12 08:41:28 -0700

attempts: 0
handler: --- !ruby/struct:Canvas::Migration::Worker::CCWorker migration_id: 16
hostname: elearning
id: 553614
job_tag: Canvas::Migration::Worker::CCWorker#perform
max_attempts: 1
pid: 3898
priority: 20
process_type: BackgroundJob
request_id: 553614
run_at: 2021-01-12 15:41:26 UTC
session_id: elearning:3898
shard_id: 1
source:
strand: migrations:import_content/api_in_app_10000000000001
type: content_migration
worker_name:
 
 No such file or directory - file
/var/canvas/gems/canvas_mimetype_fu/lib/canvas_mimetype_fu/mimetype_fu.rb:25:in `popen' /var/canvas/gems/canvas_mimetype_fu/lib/canvas_mimetype_fu/mimetype_fu.rb:25:in `mime_type?' /var/canvas/gems/canvas_unzip/lib/canvas_unzip.rb:114:in `each_entry' /var/canvas/gems/canvas_unzip/lib/canvas_unzip.rb:78:in `extract_archive' /var/canvas/lib/canvas/migration/archive.rb:124:in `unzip_archive' /var/canvas/lib/canvas/migration/migrator.rb:57:in `unzip_archive' /var/canvas/lib/cc/importer/canvas/converter.rb:44:in `export' /var/canvas/lib/cc/importer/cc_worker.rb:49:in `perform' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/backend/base.rb:254:in `block in invoke_job' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/lifecycle.rb:67:in `block in initialize' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/lifecycle.rb:72:in `execute' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/lifecycle.rb:45:in `run_callbacks' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/backend/base.rb:251:in `invoke_job' /var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-inst-jobs-2.0.0/lib/switchman_inst_jobs/delayed/backend/base.rb:85:in `block in invoke_job' /var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/app/models/switchman/shard.rb:628:in `block in activate' /var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/app/models/switchman/shard.rb:96:in `activate' /var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/app/models/switchman/shard.rb:627:in `activate' /var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-inst-jobs-2.0.0/lib/switchman_inst_jobs/delayed/backend/base.rb:85:in `invoke_job' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/worker.rb:210:in `block (2 levels) in perform' /usr/lib/ruby/2.6.0/benchmark.rb:308:in `realtime' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/worker.rb:204:in `block in perform' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-statsd-1.4.1/lib/inst_jobs_statsd/stats/timing/perform.rb:22:in `block (2 levels) in enable_perform_timing' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-statsd-1.4.1/lib/inst_jobs_statsd/stats/timing.rb:8:in `block in report_timing' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst_statsd-2.1.6/lib/inst_statsd/statsd.rb:89:in `time' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-statsd-1.4.1/lib/inst_jobs_statsd/stats/timing.rb:8:in `report_timing' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-statsd-1.4.1/lib/inst_jobs_statsd/stats/timing/perform.rb:21:in `block in enable_perform_timing' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/lifecycle.rb:85:in `block (2 levels) in add' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-statsd-1.4.1/lib/inst_jobs_statsd/stats/timing/perform.rb:13:in `block (2 levels) in enable_batching' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst_statsd-2.1.6/lib/inst_statsd/statsd.rb:95:in `batch' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-statsd-1.4.1/lib/inst_jobs_statsd/stats/timing/perform.rb:12:in `block in enable_batching' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/lifecycle.rb:85:in `block (2 levels) in add' /var/canvas/config/initializers/delayed_job.rb:151:in `block (2 levels) in <top (required)>' /var/canvas/lib/temp_cache.rb:28:in `enable' /var/canvas/config/initializers/delayed_job.rb:150:in `block in <top (required)>' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/lifecycle.rb:85:in `block (2 levels) in add' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/lifecycle.rb:67:in `block in initialize' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/lifecycle.rb:85:in `block in add' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/lifecycle.rb:85:in `block in add' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/lifecycle.rb:85:in `block in add' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/lifecycle.rb:72:in `execute' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/lifecycle.rb:45:in `run_callbacks' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/worker.rb:201:in `perform' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/worker.rb:174:in `block (2 levels) in run' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/worker.rb:271:in `block in configure_for_job' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/worker.rb:40:in `running_job' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/worker.rb:267:in `configure_for_job' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/worker.rb:173:in `block in run' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/lifecycle.rb:67:in `block in initialize' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/lifecycle.rb:72:in `execute' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/lifecycle.rb:45:in `run_callbacks' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/worker.rb:166:in `run' /var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-inst-jobs-2.0.0/lib/switchman_inst_jobs/delayed/worker.rb:26:in `block in run' /var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/app/models/switchman/shard.rb:628:in `block in activate' /var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/app/models/switchman/shard.rb:96:in `activate' /var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/app/models/switchman/shard.rb:627:in `activate' /var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-inst-jobs-2.0.0/lib/switchman_inst_jobs/delayed/worker.rb:26:in `run' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/worker.rb:133:in `block in start' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/lifecycle.rb:67:in `block in initialize' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/lifecycle.rb:72:in `execute' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/lifecycle.rb:45:in `run_callbacks' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/worker.rb:131:in `start' /var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-inst-jobs-2.0.0/lib/switchman_inst_jobs/delayed/worker.rb:19:in `block in start' /var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/app/models/switchman/shard.rb:628:in `block in activate' /var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/app/models/switchman/shard.rb:96:in `activate' /var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/app/models/switchman/shard.rb:627:in `activate' /var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-inst-jobs-2.0.0/lib/switchman_inst_jobs/delayed/worker.rb:19:in `start' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/pool.rb:97:in `block in spawn_worker' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/pool.rb:108:in `block in fork_with_reconnects' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/pool.rb:105:in `fork' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/pool.rb:105:in `fork_with_reconnects' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/pool.rb:96:in `spawn_worker' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/pool.rb:74:in `block (2 levels) in spawn_all_workers' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/pool.rb:74:in `times' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/pool.rb:74:in `block in spawn_all_workers' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/pool.rb:73:in `each' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/pool.rb:73:in `spawn_all_workers' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/pool.rb:40:in `start' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/cli.rb:96:in `start' /var/canvas/vendor/bundle/ruby/2.6.0/gems/inst-jobs-0.16.0/lib/delayed/cli.rb:34:in `run' /var/canvas/script/delayed_job:11:in `<main>'
Labels (3)
0 Kudos
1 Solution

Accepted Solutions
pennedav
Surveyor II

Make sure you have the "file" command available on the server this instance is installed on. It's a utility that identifies file types in the Linux/Unix world.

Here's a link to the line of code that's failing. The call to IO.popen is trying to run the "file" command but is failing because it cannot find the command. This could be because (1) "file" isn't installed on the server or (2) the PATH environment variable for the process the app server is running under isn't setup correctly so the process cannot find "file", or (3) there could be a permissions issue preventing the app server process from running "file", or (4) some other reason more subtle I'm not thinking of.

View solution in original post

0 Kudos
2 Replies
pennedav
Surveyor II

Make sure you have the "file" command available on the server this instance is installed on. It's a utility that identifies file types in the Linux/Unix world.

Here's a link to the line of code that's failing. The call to IO.popen is trying to run the "file" command but is failing because it cannot find the command. This could be because (1) "file" isn't installed on the server or (2) the PATH environment variable for the process the app server is running under isn't setup correctly so the process cannot find "file", or (3) there could be a permissions issue preventing the app server process from running "file", or (4) some other reason more subtle I'm not thinking of.

View solution in original post

0 Kudos
nicolopez77
Surveyor II

@pennedav many thanks for your help! You are right, my Ubuntu xenial didn't have the file command. I didn't realize that the message:

No such file or directory - file

was referring to the file command, and not to a file in general.

Thanks!!!