-
Notifications
You must be signed in to change notification settings - Fork 1.9k
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
[Improve][Kafka] kafka source refactored some reader read logic #6408
Changes from 11 commits
37880b7
3ca6a3b
30a76e5
ad8ddf3
13e5a33
b3d2c41
bd295f0
7ca3d49
0607810
a3827ad
d84dabe
e8ce65b
65e229c
adec234
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
/* | ||
* Licensed to the Apache Software Foundation (ASF) under one or more | ||
* contributor license agreements. See the NOTICE file distributed with | ||
* this work for additional information regarding copyright ownership. | ||
* The ASF licenses this file to You under the Apache License, Version 2.0 | ||
* (the "License"); you may not use this file except in compliance with | ||
* the License. You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
package org.apache.seatunnel.common.utils; | ||
|
||
public final class TemporaryClassLoaderContext implements AutoCloseable { | ||
|
||
/** | ||
* Sets the context class loader to the given ClassLoader and returns a resource that sets it | ||
* back to the current context ClassLoader when the resource is closed. | ||
* | ||
* <pre>{@code | ||
* try (TemporaryClassLoaderContext ignored = TemporaryClassLoaderContext.of(classloader)) { | ||
* // code that needs the context class loader | ||
* } | ||
* }</pre> | ||
*/ | ||
public static TemporaryClassLoaderContext of(ClassLoader cl) { | ||
final Thread t = Thread.currentThread(); | ||
final ClassLoader original = t.getContextClassLoader(); | ||
|
||
t.setContextClassLoader(cl); | ||
|
||
return new TemporaryClassLoaderContext(t, original); | ||
} | ||
|
||
private final Thread thread; | ||
|
||
private final ClassLoader originalContextClassLoader; | ||
|
||
private TemporaryClassLoaderContext(Thread thread, ClassLoader originalContextClassLoader) { | ||
this.thread = thread; | ||
this.originalContextClassLoader = originalContextClassLoader; | ||
} | ||
|
||
@Override | ||
public void close() { | ||
thread.setContextClassLoader(originalContextClassLoader); | ||
} | ||
} |
Original file line number | Diff line number | Diff line change | ||
---|---|---|---|---|
|
@@ -234,4 +234,19 @@ private void addTaskUnsafe(SplitFetcherTask task) { | |||
taskQueue.add(task); | ||||
nonEmpty.signal(); | ||||
} | ||||
|
||||
public void enqueueTask(SplitFetcherTask task) { | ||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. why not direct use Line 108 in c6f627f
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ok, the new method is redundant |
||||
lock.lock(); | ||||
try { | ||||
enqueueTaskUnsafe(task); | ||||
} finally { | ||||
lock.unlock(); | ||||
} | ||||
} | ||||
|
||||
private void enqueueTaskUnsafe(SplitFetcherTask task) { | ||||
assert lock.isHeldByCurrentThread(); | ||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. As default, There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. OK |
||||
taskQueue.add(task); | ||||
nonEmpty.signal(); | ||||
} | ||||
} |
This file was deleted.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I like this tool!