theonedev/onedev · error · ClientException

Package name not specified

Error message

Package name not specified

What it means

Client-input guard in CargoPackHandler.publish: the uploaded cargo package metadata JSON lacks a 'name' field (blank or absent), so the package cannot be identified; ClientException 400 is returned. Called from handle during cargo publish. Fix: include a non-empty name in the cargo metadata.

Source

Thrown at server-plugin/server-plugin-pack-cargo/src/main/java/io/onedev/server/plugin/pack/cargo/CargoPackHandler.java:149

	}

	private void publish(HttpServletRequest request, HttpServletResponse response, Long projectId, Long buildId) {
		var upload = readPublishBody(request);
		ObjectNode metadata;
		try {
			var metadataNode = objectMapper.readTree(upload.metadata);
			if (metadataNode instanceof ObjectNode)
				metadata = (ObjectNode) metadataNode;
			else
				throw new ClientException(SC_BAD_REQUEST, "Invalid package metadata");
		} catch (IOException e) {
			throw new ClientException(SC_BAD_REQUEST, "Invalid package metadata");
		}

		var name = metadata.path("name").asText(null);
		var version = metadata.path("vers").asText(null);
		if (StringUtils.isBlank(name))
			throw new ClientException(SC_BAD_REQUEST, "Package name not specified");
		if (StringUtils.isBlank(version))
			throw new ClientException(SC_BAD_REQUEST, "Package version not specified");
		if (!name.equals(name.toLowerCase()))
			throw new ClientException(SC_BAD_REQUEST, "Package name should be lower case");
		LockUtils.run(getLockName(projectId, name), () -> transactionService.run(() -> {
			var project = checkProject(projectId, true);
			var packBlobId = packBlobService.uploadBlob(projectId, upload.crateFile, null);
			var packBlob = packBlobService.load(packBlobId);
			var pack = packService.findByNameAndVersion(project, TYPE, name, version);
			if (pack == null) {
				pack = new Pack();
				pack.setType(TYPE);
				pack.setName(name);
				pack.setVersion(version);
				pack.setPrerelease(version.contains("-"));
				pack.setProject(project);
			}
			pack.setData(new CargoData(upload.metadata, packBlob.getSha256Hash()));

View on GitHub (pinned to d44925c47c)

Solutions

  1. Ensure the crate metadata includes a non-empty 'name'.
  2. Fix the packaging step so Cargo.toml name is present.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at server-plugin/server-plugin-pack-cargo/src/main/java/io/onedev/server/plugin/pack/cargo/CargoPackHandler.java:149 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of theonedev/onedev@d44925c47c (2026-09-06). Data as JSON: /api/errors/49c8f2786f96b2ed. Report an issue: GitHub.