Skip to content

installing Graal.js language component via gu fails with error "org.graalvm.component.installer.FailedOperationException: Component metadata storage is corrupted." #7951

Open
@ispringer

Description

@ispringer

Describe the issue
I have GraalVM CE 22.3.3 installed on an Amazon Linux 1 box:

$ uname -a
Linux t5a1 4.14.252-131.483.amzn1.x86_64 #1 SMP Mon Nov 1 20:48:11 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

$ java -version
openjdk version "11.0.20" 2023-07-18
OpenJDK Runtime Environment GraalVM CE 22.3.3 (build 11.0.20+8-jvmci-22.3-b22)
OpenJDK 64-Bit Server VM GraalVM CE 22.3.3 (build 11.0.20+8-jvmci-22.3-b22, mixed mode, sharing)

When I try to install Graal.js via gu, it fails with:

Installation of Graal.js failed: Component metadata storage is corrupted.
org.graalvm.component.installer.FailedOperationException: Component metadata storage is corrupted.
	at org.graalvm.component.installer.Environment.failure(Environment.java:214)

Steps to reproduce the issue
Please include both build steps as well as run steps

  1. install GraalVM CE 22.3.3
  2. sudo /usr/lib/jvm/java/bin/gu -e install js

Fails as follows:

$ sudo /usr/lib/jvm/java/bin/gu -e install js
Downloading: Component catalog from www.graalvm.org
Processing Component: Graal.js
Downloading: Component js: Graal.js from github.com
Installing new component: Graal.js (org.graalvm.js, version 22.3.3)
Installation of Graal.js failed: Component metadata storage is corrupted.
org.graalvm.component.installer.FailedOperationException: Component metadata storage is corrupted.
	at org.graalvm.component.installer.Environment.failure(Environment.java:214)
	at org.graalvm.component.installer.persist.DirectoryStorage.getRequiredProperty(DirectoryStorage.java:487)
	at org.graalvm.component.installer.persist.DirectoryStorage.loadMetadataFrom(DirectoryStorage.java:304)
	at org.graalvm.component.installer.persist.DirectoryStorage.doLoadComponentMetadata(DirectoryStorage.java:447)
	at org.graalvm.component.installer.persist.DirectoryStorage.loadComponentMetadata(DirectoryStorage.java:442)
	at org.graalvm.component.installer.model.ComponentRegistry.loadSingleComponent(ComponentRegistry.java:374)
	at org.graalvm.component.installer.model.ComponentRegistry.loadSingleComponent(ComponentRegistry.java:350)
	at org.graalvm.component.installer.model.ComponentRegistry.loadAllComponents(ComponentRegistry.java:341)
	at org.graalvm.component.installer.model.ComponentRegistry.buildFileIndex(ComponentRegistry.java:403)
	at org.graalvm.component.installer.model.ComponentRegistry.getComponentDirectories(ComponentRegistry.java:434)
	at org.graalvm.component.installer.commands.InstallCommand.doInstallation(InstallCommand.java:675)
	at org.graalvm.component.installer.commands.InstallCommand.executeStep(InstallCommand.java:565)
	at org.graalvm.component.installer.commands.InstallCommand.execute(InstallCommand.java:206)
	at org.graalvm.component.installer.ComponentInstaller.doProcessCommand(ComponentInstaller.java:447)
	at org.graalvm.component.installer.ComponentInstaller.processCommand(ComponentInstaller.java:461)
	at org.graalvm.component.installer.ComponentInstaller.run(ComponentInstaller.java:580)
	at org.graalvm.component.installer.ComponentInstaller.main(ComponentInstaller.java:633)
Error: Component metadata storage is corrupted.
org.graalvm.component.installer.FailedOperationException: Component metadata storage is corrupted.
	at org.graalvm.component.installer.Environment.failure(Environment.java:214)
	at org.graalvm.component.installer.persist.DirectoryStorage.getRequiredProperty(DirectoryStorage.java:487)
	at org.graalvm.component.installer.persist.DirectoryStorage.loadMetadataFrom(DirectoryStorage.java:304)
	at org.graalvm.component.installer.persist.DirectoryStorage.doLoadComponentMetadata(DirectoryStorage.java:447)
	at org.graalvm.component.installer.persist.DirectoryStorage.loadComponentMetadata(DirectoryStorage.java:442)
	at org.graalvm.component.installer.model.ComponentRegistry.loadSingleComponent(ComponentRegistry.java:374)
	at org.graalvm.component.installer.model.ComponentRegistry.loadSingleComponent(ComponentRegistry.java:350)
	at org.graalvm.component.installer.model.ComponentRegistry.loadAllComponents(ComponentRegistry.java:341)
	at org.graalvm.component.installer.model.ComponentRegistry.buildFileIndex(ComponentRegistry.java:403)
	at org.graalvm.component.installer.model.ComponentRegistry.getComponentDirectories(ComponentRegistry.java:434)
	at org.graalvm.component.installer.commands.InstallCommand.doInstallation(InstallCommand.java:675)
	at org.graalvm.component.installer.commands.InstallCommand.executeStep(InstallCommand.java:565)
	at org.graalvm.component.installer.commands.InstallCommand.execute(InstallCommand.java:206)
	at org.graalvm.component.installer.ComponentInstaller.doProcessCommand(ComponentInstaller.java:447)
	at org.graalvm.component.installer.ComponentInstaller.processCommand(ComponentInstaller.java:461)
	at org.graalvm.component.installer.ComponentInstaller.run(ComponentInstaller.java:580)
	at org.graalvm.component.installer.ComponentInstaller.main(ComponentInstaller.java:633)

Describe GraalVM and your environment:

  • GraalVM version: CE 22.3.3
  • JDK major version: 11
  • OS: Amazon Linux 1
  • Architecture: AMD64

More details

Looking at the source code for the DirectoryStorage class, it looks like this is the line that fails:

https://github.com/oracle/graal/blob/master/vm/src/org.graalvm.component.installer/src/org/graalvm/component/installer/persist/DirectoryStorage.java#L304

It's trying to read the "Bundle-Symbolic-Name" prop from the component metadata for the graaljs bundle and not finding it.

But i cracked open the jar and that prop does appear to be set...

$ more lib/installer/components/org.graalvm.js.component
Bundle-Name=Graal.js
Bundle-Symbolic-Name=org.graalvm.js
Bundle-Version=22.3.3
Bundle-RequireCapability=org.graalvm; filter\:\="(&(graalvm_version\=22.3.3)(os_name\=linux)(os_arch\=amd64)(java_version\=11))"
x-GraalVM-Stability-Level=supported
x-GraalVM-Stability=supported
x-GraalVM-Working-Directories=languages/js
x-GraalVM-Component-Distribution=bundled
$ more lib/installer/components/org.graalvm.component
Bundle-Name=GraalVM Core
Bundle-Symbolic-Name=org.graalvm
Bundle-Version=22.3.3
x-GraalVM-Stability-Level=supported

Metadata

Metadata

Assignees

Labels

bugguGraal Updater

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions