{"record":{"id":"373f5f2dae476f97","repo":"windmill-labs/windmill","slug":"not-implemented-in-windmill-s-open-source-reposito","errorCode":null,"errorMessage":"Not implemented in Windmill's Open Source repository","messagePattern":"Not implemented in Windmill's Open Source repository","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"backend/windmill-api/src/job_helpers_oss.rs","lineNumber":65,"sourceCode":"pub fn workspaced_service() -> Router {\n    Router::new()\n}\n\n#[cfg(all(feature = \"parquet\", not(feature = \"private\")))]\npub async fn get_workspace_s3_resource<'c>(\n    _authed: &ApiAuthed,\n    _db: &DB,\n    _user_db: Option<UserDB>,\n    _w_id: &str,\n    _storage: Option<String>,\n) -> windmill_common::error::Result<(Option<bool>, Option<ObjectStoreResource>)> {\n    // implementation is not open source\n    Ok((None, None))\n}\n\n#[cfg(not(feature = \"private\"))]\npub fn get_random_file_name(_file_extension: Option<String>) -> String {\n    unimplemented!(\"Not implemented in Windmill's Open Source repository\")\n}\n\n#[cfg(not(feature = \"private\"))]\nuse windmill_common::db::DbWithOptAuthed;\n\n#[cfg(not(feature = \"private\"))]\npub async fn get_s3_resource<'c>(\n    _db_with_opt_authed: &DbWithOptAuthed<'c, ApiAuthed>,\n    _w_id: &str,\n    _resource_path: &str,\n    _resource_type: Option<StorageResourceType>,\n    _job_id: Option<Uuid>,\n) -> error::Result<ObjectStoreResource> {\n    Err(error::Error::internal_err(\n        \"Not implemented in Windmill's Open Source repository\".to_string(),\n    ))\n}\n","sourceCodeStart":47,"sourceCodeEnd":83,"githubUrl":"https://github.com/windmill-labs/windmill/blob/e474e8803ce2ff5c2df09a58dab51d45f5c922ca/backend/windmill-api/src/job_helpers_oss.rs#L47-L83","documentation":"In the OSS build of windmill-api (compiled without the `private` feature), `get_random_file_name` in job_helpers_oss.rs is a stub whose body calls `unimplemented!`. The real implementation lives in the private/EE repository, so any OSS code path that needs a random S3/object-storage file name aborts with this message.","triggerScenarios":"Calling code paths that depend on `get_random_file_name`, e.g. `upload_s3_file_from_app` (app-driven S3 file uploads) or `process_multipart` (multipart file upload handling), running against an OSS-built server without the `private` feature.","commonSituations":"Uploading files from a Windmill app to S3 on a community-edition deployment; multipart file upload endpoints hit on an OSS binary; deploying an EE-only feature set (app file upload) with an OSS-licensed server.","solutions":["Use the supported OSS upload path instead: upload to S3 from a script/flow via the S3 resource integration rather than app/multipart endpoints that require EE helpers.","Run a server built with the `private` feature (enterprise edition) if app S3 uploads are required.","If you control the fork, implement `get_random_file_name` in the OSS build (e.g. generate a UUID-based file name honoring the extension).","Check the deployment's edition/feature flags and confirm the endpoint you call is available in your build."],"exampleFix":"// before (OSS stub)\npub fn get_random_file_name(_file_extension: Option<String>) -> String {\n    unimplemented!(\"Not implemented in Windmill's Open Source repository\")\n}\n// after (fork-local implementation)\npub fn get_random_file_name(file_extension: Option<String>) -> String {\n    let ext = file_extension.map(|e| format!(\".{e}\")).unwrap_or_default();\n    format!(\"{}{ext}\", uuid::Uuid::new_v4())\n}","handlingStrategy":"fallback","validationCode":"// detect OSS build before calling app/multipart upload paths\nconst isEE = window.instanceInfo?.instance_id && window.instanceInfo?.license_key;\nif (!isEE) {\n  // fall back to script-based S3 upload\n}","typeGuard":"function supportsAppUpload(info: { license_key?: string | null }): boolean {\n  return Boolean(info.license_key);\n}","tryCatchPattern":"try {\n  await uploadS3FileFromApp(file);\n} catch (e) {\n  if (String(e.message).includes(\"Not implemented in Windmill's Open Source repository\")) {\n    await uploadViaScript(file); // OSS fallback: wmill script with S3 resource\n  } else { throw e; }\n}","preventionTips":["Check your edition before building features on app file uploads; this path requires EE (`private` feature).","Prefer the documented OSS upload path (scripts/flows with S3 resources) for community deployments.","Document edition requirements in team runbooks for app builders."],"tags":["rust","s3","file-upload","enterprise","unimplemented"],"backgroundTag":"feature-not-available-in-edition","analyzedSha":"e474e8803ce2ff5c2df09a58dab51d45f5c922ca","analyzedAt":"2026-09-03T12:38:19.024Z","contentChangedAt":"2026-09-03T12:38:19.024Z","schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}