Skip to content

[fix][cli] pulsar-perf java 17 compatibility - #18815

Closed
pgier wants to merge 1 commit into
apache:masterfrom
pgier:pulsar-perf-java-17
Closed

[fix][cli] pulsar-perf java 17 compatibility#18815
pgier wants to merge 1 commit into
apache:masterfrom
pgier:pulsar-perf-java-17

Conversation

@pgier

@pgier pgier commented Dec 8, 2022

Copy link
Copy Markdown
Contributor

Allow pulsar-perf to use the java.base/sun.net module

Motivation

Running the pulsar-perf command with java 17 currently logs DNS resolution exceptions.

2022-12-07T22:10:24,646-0600 [pulsar-perf-producer-exec-1-1] WARN  org.apache.pulsar.common.util.netty.DnsResolverUtil - Cannot get DNS TTL settings from sun.net.InetAddressCachePolicy class
java.lang.IllegalAccessException: class org.apache.pulsar.common.util.netty.DnsResolverUtil cannot access class sun.net.InetAddressCachePolicy (in module java.base) because module java.base does not export sun.net to unnamed module @6456fb59
	at jdk.internal.reflect.Reflection.newIllegalAccessException(Reflection.java:392) ~[?:?]
	at java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:674) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:560) ~[?:?]
	at org.apache.pulsar.common.util.netty.DnsResolverUtil.<clinit>(DnsResolverUtil.java:46) ~[pulsar-common-2.11.0-SNAPSHOT.jar:2.11.0-SNAPSHOT]
	at org.apache.pulsar.client.impl.ConnectionPool.createAddressResolver(ConnectionPool.java:159) ~[pulsar-client-original-2.11.0-SNAPSHOT.jar:2.11.0-SNAPSHOT]
	at org.apache.pulsar.client.impl.ConnectionPool.lambda$new$1(ConnectionPool.java:126) ~[pulsar-client-original-2.11.0-SNAPSHOT.jar:2.11.0-SNAPSHOT]
	at java.util.Optional.orElseGet(Optional.java:364) ~[?:?]
	at org.apache.pulsar.client.impl.ConnectionPool.<init>(ConnectionPool.java:126) ~[pulsar-client-original-2.11.0-SNAPSHOT.jar:2.11.0-SNAPSHOT]
	at org.apache.pulsar.client.impl.ConnectionPool.<init>(ConnectionPool.java:95) ~[pulsar-client-original-2.11.0-SNAPSHOT.jar:2.11.0-SNAPSHOT]
	at org.apache.pulsar.client.impl.ConnectionPool.<init>(ConnectionPool.java:90) ~[pulsar-client-original-2.11.0-SNAPSHOT.jar:2.11.0-SNAPSHOT]
	at org.apache.pulsar.client.impl.PulsarClientImpl.<init>(PulsarClientImpl.java:197) ~[pulsar-client-original-2.11.0-SNAPSHOT.jar:2.11.0-SNAPSHOT]
	at org.apache.pulsar.client.impl.PulsarClientImpl.<init>(PulsarClientImpl.java:153) ~[pulsar-client-original-2.11.0-SNAPSHOT.jar:2.11.0-SNAPSHOT]
	at org.apache.pulsar.client.impl.ClientBuilderImpl.build(ClientBuilderImpl.java:63) ~[pulsar-client-original-2.11.0-SNAPSHOT.jar:2.11.0-SNAPSHOT]
	at org.apache.pulsar.testclient.PerformanceProducer.runProducer(PerformanceProducer.java:547) ~[pulsar-testclient.jar:2.11.0-SNAPSHOT]
	at org.apache.pulsar.testclient.PerformanceProducer.lambda$main$1(PerformanceProducer.java:394) ~[pulsar-testclient.jar:2.11.0-SNAPSHOT]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) ~[?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.77.Final.jar:4.1.77.Final]
	at java.lang.Thread.run(Thread.java:833) ~[?:?]

Modifications

This fixes the issue by updating the bash script to set Java module configuration similar to what is currently used in the pulsar and pulsar-client commands. For example, see: #15540

Verifying this change

  • [ X ] Make sure that the change passes the CI checks.

This change is a trivial rework / code cleanup without any test coverage.

Does this pull request potentially affect one of the following parts:

If the box was checked, please highlight the changes

  • Dependencies (add or upgrade a dependency)
  • The public API
  • The schema
  • The default values of configurations
  • The threading model
  • The binary protocol
  • The REST endpoints
  • The admin CLI options
  • Anything that affects deployment

Documentation

  • doc
  • doc-required
  • doc-not-needed
  • doc-complete

Matching PR in forked repository

PR in forked repository: pgier#5

Allow pulsar-perf to use the java.base/sun.net module
@github-actions github-actions Bot added the doc-not-needed Your PR changes do not impact docs label Dec 8, 2022
@pgier pgier changed the title [bug][pulsar-perf] java 17 compatibility [fix][pulsar-perf] java 17 compatibility Dec 8, 2022
@pgier pgier changed the title [fix][pulsar-perf] java 17 compatibility [fix][cli] pulsar-perf java 17 compatibility Dec 8, 2022
@Technoboy-

Copy link
Copy Markdown
Contributor

Duplicate with #18806

@pgier pgier closed this Dec 8, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

doc-not-needed Your PR changes do not impact docs

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants