Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature Proposal] client supporting JDK7 #132

Closed
DongbinNie opened this issue Dec 2, 2016 · 1 comment
Closed

[Feature Proposal] client supporting JDK7 #132

DongbinNie opened this issue Dec 2, 2016 · 1 comment
Labels
type/feature The PR added a new feature or issue requested a new feature

Comments

@DongbinNie
Copy link

DongbinNie commented Dec 2, 2016

Client supporting JDK7

[merlimat]
That would be very tricky. The current Java API itself is built upon JDK8 features like CompletableFuture.
That would mean to do a rewrite of the client library to support JDK 7, but since it was EOLd ~2 years ago, I don't think it would be worth the effort.

As Andrew said above, WebSocket is probably a much easier/quicker way to solve that .

[DongbinNie]
While JDK7 is end of public updates from April 2015, JDK7 is still used widely, 45% in Plumber's report https://plumbr.eu/blog/java/java-version-and-vendor-data-analyzed-2016-edition
It will be helpful for Pulsar's adoption if the client supporting JDK7. Though WebSocket is a solution, but developers always prefer the first-class client.

@merlimat merlimat added the type/feature The PR added a new feature or issue requested a new feature label Dec 3, 2016
sijie pushed a commit to sijie/pulsar that referenced this issue Mar 4, 2018
@ivankelly
Copy link
Contributor

There's far too much java8 usage to ever go to JDK7, so closing this as a won't fix.

hrsakai pushed a commit to hrsakai/pulsar that referenced this issue Dec 10, 2020
* Move pkg stuff under pulsar/internal

* Fixed exclude path
codelipenghui added a commit that referenced this issue Jan 4, 2021
### Motivation

Fix namespace bundle unloads hangs. In the BrokerService, we maintained a ConcurrentOpenHashMap for storing all topic references. In #8968 cleanup the topics when unloading namespace bundles, see https://github.com/apache/pulsar/pull/8968/files#diff-0210356c8a88e4efa89eb769a027fa6c166db479dbad8bbbbc704c6ed6e317f5R1572-R1579

Since StampedLock is not a reentrant and the method `foreach` of the ConcurrentOpenHashMap also acquire read lock, this might block the namespace unloading, here is the thread dump:

```
"pulsar-io-16-7" #132 prio=5 os_prio=31 tid=0x00007ff370ae2800 nid=0x1f603 waiting on condition [0x00007000121d0000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x0000000780a0be18> (a org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap$Section)
	at java.util.concurrent.locks.StampedLock.acquireWrite(StampedLock.java:1119)
	at java.util.concurrent.locks.StampedLock.writeLock(StampedLock.java:354)
	at org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap$Section.remove(ConcurrentOpenHashMap.java:306)
	at org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap$Section.access$200(ConcurrentOpenHashMap.java:180)
	at org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap.remove(ConcurrentOpenHashMap.java:135)
	at org.apache.pulsar.broker.service.BrokerService.removeTopicFromCache(BrokerService.java:1658)
	at org.apache.pulsar.broker.service.BrokerService.lambda$cleanUnloadedTopicFromCache$61(BrokerService.java:1611)
	at org.apache.pulsar.broker.service.BrokerService$$Lambda$1003/2064147704.accept(Unknown Source)
	at org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap$Section.forEach(ConcurrentOpenHashMap.java:387)
	at org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap.forEach(ConcurrentOpenHashMap.java:159)
	at org.apache.pulsar.broker.service.BrokerService.cleanUnloadedTopicFromCache(BrokerService.java:1607)
	at org.apache.pulsar.broker.namespace.OwnedBundle.lambda$handleUnloadRequest$1(OwnedBundle.java:140)
	at org.apache.pulsar.broker.namespace.OwnedBundle$$Lambda$999/503902413.apply(Unknown Source)
	at java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:836)
	at java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:811)
	at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:488)
	at java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:1975)
	at org.apache.pulsar.broker.service.nonpersistent.NonPersistentTopic.lambda$null$18(NonPersistentTopic.java:442)
	at org.apache.pulsar.broker.service.nonpersistent.NonPersistentTopic$$Lambda$994/682846231.run(Unknown Source)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:164)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)
	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
	at java.lang.Thread.run(Thread.java:748)
```
This also makes the current ci unstable while shutdown the mock broker after the tests.

### Modifications

Use `keys()` method of the `ConcurrentOpenHashMap` to get a new keys array list.
hangc0276 pushed a commit to hangc0276/pulsar that referenced this issue May 26, 2021
)

* fix log format

* add config for allowAutoTopicCreationType=partitioned in doc
dlg99 pushed a commit to dlg99/pulsar that referenced this issue Sep 22, 2022
…ts (apache#132)

Co-authored-by: Michael Marshall <mmarshall@apache.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type/feature The PR added a new feature or issue requested a new feature
Projects
None yet
Development

No branches or pull requests

3 participants