Unable to import from project instance template in GDK due to unkown emoji validator
This seems like a code autoloading issue only in development, as I haven't reproduced this in a production instance. When I try to create a project from an instance project template (https://docs.gitlab.com/ee/user/admin_area/custom_project_templates.html), it always fails with this error:
{
"severity": "ERROR",
"time": "2021-12-11T04:48:46.636Z",
"correlation_id": "01FPKX4N3JJ0SR1QXXWM1NSNRA",
"exception.class": "ArgumentError",
"exception.message": "Unknown validator: 'Gitlab::EmojiNameValidator'",
"exception.backtrace": [
"app/models/award_emoji.rb:17:in `<class:AwardEmoji>'",
"app/models/award_emoji.rb:3:in `<main>'",
"lib/gitlab/import_export/json/streaming_serializer.rb:76:in `block (2 levels) in serialize_many_relations'",
"lib/gitlab/import_export/json/streaming_serializer.rb:95:in `block in batch'",
"lib/gitlab/pagination/keyset/iterator.rb:25:in `block in each_batch'",
"lib/gitlab/pagination/keyset/iterator.rb:19:in `loop'",
"lib/gitlab/pagination/keyset/iterator.rb:19:in `each_batch'",
"lib/gitlab/import_export/json/streaming_serializer.rb:94:in `batch'",
"lib/gitlab/import_export/json/streaming_serializer.rb:73:in `block in serialize_many_relations'",
"lib/gitlab/import_export/json/ndjson_writer.rb:36:in `each'",
"lib/gitlab/import_export/json/ndjson_writer.rb:36:in `each'",
"lib/gitlab/import_export/json/ndjson_writer.rb:36:in `block in write_relation_array'",
"lib/gitlab/import_export/json/ndjson_writer.rb:53:in `block in with_file'",
"lib/gitlab/import_export/json/ndjson_writer.rb:52:in `open'",
"lib/gitlab/import_export/json/ndjson_writer.rb:52:in `with_file'",
"lib/gitlab/import_export/json/ndjson_writer.rb:35:in `write_relation_array'",
"lib/gitlab/import_export/json/streaming_serializer.rb:82:in `serialize_many_relations'",
"lib/gitlab/import_export/json/streaming_serializer.rb:51:in `serialize_relation'",
"lib/gitlab/import_export/json/streaming_serializer.rb:38:in `block (2 levels) in execute'",
"lib/gitlab/import_export/json/streaming_serializer.rb:37:in `each'",
"lib/gitlab/import_export/json/streaming_serializer.rb:37:in `block in execute'",
"lib/gitlab/import_export/json/streaming_serializer.rb:173:in `read_from_replica_if_available'",
"lib/gitlab/import_export/json/streaming_serializer.rb:34:in `execute'",
"lib/gitlab/import_export/project/tree_saver.rb:52:in `block in stream_export'",
"lib/gitlab/import_export/project/tree_saver.rb:51:in `stream_export'",
"lib/gitlab/import_export/project/tree_saver.rb:18:in `save'",
"app/services/projects/import_export/export_service.rb:59:in `all?'",
"app/services/projects/import_export/export_service.rb:59:in `save_exporters'",
"app/services/projects/import_export/export_service.rb:50:in `save_all!'",
"app/services/projects/import_export/export_service.rb:20:in `execute'",
"app/services/concerns/measurable.rb:35:in `execute'",
"app/workers/project_export_worker.rb:24:in `perform'",
"lib/gitlab/sidekiq_middleware/duplicate_jobs/strategies/until_executing.rb:16:in `perform'",
"lib/gitlab/sidekiq_middleware/duplicate_jobs/duplicate_job.rb:57:in `perform'",
"lib/gitlab/sidekiq_middleware/duplicate_jobs/server.rb:8:in `call'",
"lib/gitlab/sidekiq_middleware/worker_context.rb:9:in `wrap_in_optional_context'",
"lib/gitlab/sidekiq_middleware/worker_context/server.rb:17:in `block in call'",
"lib/gitlab/application_context.rb:74:in `block in use'",
"lib/gitlab/application_context.rb:74:in `use'",
"lib/gitlab/application_context.rb:27:in `with_context'",
"lib/gitlab/sidekiq_middleware/worker_context/server.rb:15:in `call'",
"lib/gitlab/sidekiq_status/server_middleware.rb:7:in `call'",
"lib/gitlab/sidekiq_versioning/middleware.rb:9:in `call'",
"lib/gitlab/sidekiq_middleware/admin_mode/server.rb:14:in `call'",
"lib/gitlab/sidekiq_middleware/instrumentation_logger.rb:9:in `call'",
"lib/gitlab/sidekiq_middleware/batch_loader.rb:7:in `call'",
"lib/gitlab/sidekiq_middleware/extra_done_log_metadata.rb:7:in `call'",
"lib/gitlab/sidekiq_middleware/request_store_middleware.rb:10:in `block in call'",
"lib/gitlab/with_request_store.rb:17:in `enabling_request_store'",
"lib/gitlab/with_request_store.rb:10:in `with_request_store'",
"lib/gitlab/sidekiq_middleware/request_store_middleware.rb:9:in `call'",
"lib/gitlab/sidekiq_middleware/server_metrics.rb:66:in `block in call'",
"lib/gitlab/sidekiq_middleware/server_metrics.rb:89:in `block in instrument'",
"lib/gitlab/metrics/background_transaction.rb:30:in `run'",
"lib/gitlab/sidekiq_middleware/server_metrics.rb:89:in `instrument'",
"lib/gitlab/sidekiq_middleware/server_metrics.rb:65:in `call'",
"lib/gitlab/sidekiq_middleware/monitor.rb:8:in `block in call'",
"lib/gitlab/sidekiq_daemon/monitor.rb:49:in `within_job'",
"lib/gitlab/sidekiq_middleware/monitor.rb:7:in `call'",
"lib/gitlab/sidekiq_middleware/size_limiter/server.rb:13:in `call'",
"lib/gitlab/sidekiq_logging/structured_logger.rb:19:in `call'"
],
"user.username": "root",
"tags.program": "sidekiq",
"tags.locale": "en",
"tags.feature_category": "importers",
"tags.correlation_id": "01FPKX4N3JJ0SR1QXXWM1NSNRA",
"extra.sidekiq": {
"retry": false,
"queue": "default",
"backtrace": 5,
"version": 0,
"dead": false,
"status_expiration": 21600,
"class": "ProjectTemplateExportWorker",
"args": [
"1",
"7",
"{\"export_into_project_id\"=>47}",
"{}"
],
"jid": "4320990e94b67ff8e6f3f408",
"created_at": 1639198125.3638542,
"meta.user": "root",
"meta.caller_id": "ProjectsController#create",
"meta.remote_ip": "127.0.0.1",
"meta.feature_category": "importers",
"meta.client_id": "user/1",
"correlation_id": "01FPKX4N3JJ0SR1QXXWM1NSNRA",
"uber-trace-id": "4d89ba142c739c81:350c1b55e4163d2d:a4a966b7b022c911:1",
"worker_data_consistency": "always",
"idempotency_key": "resque:gitlab:duplicate:default:cfc41c4136b5322c4a4793a48f93dd7b092b6461f3176816224ee3cd3f31fe1a",
"size_limiter": "validated",
"enqueued_at": 1639198125.367373
},
"extra.importer": "Import/Export",
"extra.exportable_id": 7,
"extra.exportable_path": "twitter/Typeahead.Js",
"extra.import_jid": "eccab4ad21a574fb26f835b7"
}
I'm guessing the gitlab/emoji_name
string validator in https://gitlab.com/gitlab-org/gitlab/blob/036f3297a4bc568425ef51dfcfb013704ae9e9d7/app/models/award_emoji.rb#L17 doesn't make it possible to auto-load this constant by default, but I thought Sidekiq preloaded all the code anyway?