We pass `null` for the class name here:

https://github.com/elastic/elasticsearch/blob/f086dd18ddc705bf84a1ff99d35196ec2498fd52/server/src/main/java/org/elasticsearch/plugins/PluginDescriptor.java#L261

However the class name is mandatory for the transport protocol today:

https://github.com/elastic/elasticsearch/blob/f086dd18ddc705bf84a1ff99d35196ec2498fd52/server/src/main/java/org/elasticsearch/plugins/PluginDescriptor.java#L156

This prevents various APIs from working in a cluster with stable plugins installed.
server/src/test/java/org/elasticsearch/plugins/PluginDescriptorTests.java
public void testReadFromPropertiesDescriptionMissing() throws Exception {
        assertBothDescriptors(writer -> {
            var e = expectThrows(IllegalArgumentException.class, () -> writer.write("description", null));
            assertThat(e.getMessage(), containsString("[description] is missing"));
        });
    }
    public void testReadFromPropertiesVersionMissing() throws Exception {
        assertBothDescriptors(writer -> {
            var e = expectThrows(IllegalArgumentException.class, () -> writer.write("version", null));
            assertThat(e.getMessage(), containsString("[version] is missing"));
        });
    }
    public void testReadFromPropertiesElasticsearchVersionMissing() throws Exception {
        assertBothDescriptors(writer -> {
            var e = expectThrows(IllegalArgumentException.class, () -> writer.write("elasticsearch.version", null));
            assertThat(e.getMessage(), containsString("[elasticsearch.version] is missing"));
        });
    }
    public void testReadFromPropertiesElasticsearchVersionEmpty() throws Exception {
        assertBothDescriptors(writer -> {
            var e = expectThrows(IllegalArgumentException.class, () -> writer.write("elasticsearch.version", " "));
            assertThat(e.getMessage(), containsString("[elasticsearch.version] is missing"));
        });
    }
    public void testReadFromPropertiesJavaVersionMissing() throws Exception {
        assertBothDescriptors(writer -> {
            var e = expectThrows(IllegalArgumentException.class, () -> writer.write("java.version", null));
            assertThat(e.getMessage(), containsString("[java.version] is missing"));
        });
    }