[
https://issues.apache.org/jira/browse/FLINK-8178?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16292510#comment-16292510
]
ASF GitHub Bot commented on FLINK-8178:
---------------------------------------
Github user pnowojski commented on a diff in the pull request:
https://github.com/apache/flink/pull/5105#discussion_r156923552
--- Diff:
flink-runtime/src/test/java/org/apache/flink/runtime/io/network/util/TestBufferFactory.java
---
@@ -40,37 +39,31 @@
private final BufferRecycler bufferRecycler;
- private AtomicInteger numberOfCreatedBuffers = new AtomicInteger();
+ private final int poolSize;
- public TestBufferFactory() {
- this(BUFFER_SIZE, RECYCLER);
- }
-
- public TestBufferFactory(int bufferSize) {
- this(bufferSize, RECYCLER);
- }
+ private int numberOfCreatedBuffers = 0;
- public TestBufferFactory(int bufferSize, BufferRecycler bufferRecycler)
{
+ public TestBufferFactory(int poolSize, int bufferSize, BufferRecycler
bufferRecycler) {
checkArgument(bufferSize > 0);
+ this.poolSize = poolSize;
this.bufferSize = bufferSize;
this.bufferRecycler = checkNotNull(bufferRecycler);
}
- public Buffer create() {
- numberOfCreatedBuffers.incrementAndGet();
+ public synchronized Buffer create() {
+ if (numberOfCreatedBuffers >= poolSize) {
+ return null;
+ }
+ numberOfCreatedBuffers++;
return new
Buffer(MemorySegmentFactory.allocateUnpooledSegment(bufferSize),
bufferRecycler);
}
- public Buffer createFrom(MemorySegment segment) {
- return new Buffer(segment, bufferRecycler);
- }
-
- public int getNumberOfCreatedBuffers() {
- return numberOfCreatedBuffers.get();
+ public synchronized int getNumberOfCreatedBuffers() {
+ return numberOfCreatedBuffers;
}
- public int getBufferSize() {
+ public synchronized int getBufferSize() {
--- End diff --
I would leave it just for the sake of having all methods `synchronized` so
that you don't have to think which one are and which one should be
`synchronized` (when adding features or refactoring this class in the future)
> Introduce not threadsafe write only BufferBuilder
> -------------------------------------------------
>
> Key: FLINK-8178
> URL: https://issues.apache.org/jira/browse/FLINK-8178
> Project: Flink
> Issue Type: Improvement
> Components: Network
> Reporter: Piotr Nowojski
> Assignee: Piotr Nowojski
> Fix For: 1.5.0
>
>
> While Buffer class is used in multithreaded context it requires
> synchronisation. Now it is miss-leading/unclear and suggesting that
> RecordSerializer should take into account synchronisation of the Buffer
> that's holding. With NotThreadSafe BufferBuilder there would be clear
> separation between single-threaded writing/creating a BufferBuilder and
> multithreaded Buffer handling/retaining/recycling.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)