[ https://issues.apache.org/jira/browse/FLINK-8178?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16287902#comment-16287902 ]
ASF GitHub Bot commented on FLINK-8178: --------------------------------------- Github user NicoK commented on a diff in the pull request: https://github.com/apache/flink/pull/5105#discussion_r156387848 --- 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 -- this does actually not need to be `synchronized` > 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)