yurinaryshkin commented on code in PR #11118:
URL: https://github.com/apache/ignite/pull/11118#discussion_r1466228010


##########
modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/dump/WriteOnlyZipFileIO.java:
##########
@@ -17,142 +17,57 @@
 
 package org.apache.ignite.internal.processors.cache.persistence.snapshot.dump;
 
-import java.io.BufferedOutputStream;
-import java.io.File;
 import java.io.IOException;
+import java.io.OutputStream;
 import java.nio.ByteBuffer;
-import java.nio.MappedByteBuffer;
-import java.nio.channels.Channels;
-import java.nio.channels.WritableByteChannel;
-import java.nio.file.Files;
-import java.nio.file.Paths;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipOutputStream;
-import 
org.apache.ignite.internal.processors.cache.persistence.file.AbstractFileIO;
 import org.apache.ignite.internal.processors.cache.persistence.file.FileIO;
-import org.apache.ignite.internal.util.typedef.internal.A;
+import 
org.apache.ignite.internal.processors.cache.persistence.file.FileIODecorator;
 
 import static java.util.zip.Deflater.BEST_COMPRESSION;
-import static 
org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.ZIP_SUFFIX;
 
 /**
  * {@link FileIO} that allows to write ZIP compressed file.
  * It doesn't support reading or random access.
  * It is not designed for writing concurrently from several threads.
  */
-public class WriteOnlyZipFileIO extends AbstractFileIO {
+public class WriteOnlyZipFileIO extends FileIODecorator {
     /** */
     private final ZipOutputStream zos;
 
     /** */
-    private final WritableByteChannel ch;
+    public WriteOnlyZipFileIO(BufferedFileIO fileIO, String entryName) throws 
IOException {
+        super(fileIO);
 
-    /** */
-    private long pos;
-
-    /** */
-    public WriteOnlyZipFileIO(File file) throws IOException {
-        A.ensure(file.getName().endsWith(ZIP_SUFFIX), "File name should end 
with " + ZIP_SUFFIX);
-
-        String entryName = file.getName().substring(0, file.getName().length() 
- ZIP_SUFFIX.length());
+        zos = new ZipOutputStream(new OutputStream() {
+            @Override public void write(byte[] b, int off, int len) throws 
IOException {
+                fileIO.write(b, off, len);
+            }
 
-        zos = new ZipOutputStream(new 
BufferedOutputStream(Files.newOutputStream(Paths.get(file.getPath()))));
+            @Override public void write(int b) throws IOException {
+                fileIO.write((byte)b);
+            }
+        });
 
         zos.setLevel(BEST_COMPRESSION);
 
         zos.putNextEntry(new ZipEntry(entryName));
-
-        ch = Channels.newChannel(zos);
-    }
-
-    /** {@inheritDoc} */
-    @Override public long position() throws IOException {
-        return pos;
-    }
-
-    /** {@inheritDoc} */
-    @Override public void position(long newPosition) throws IOException {
-        throw new UnsupportedOperationException();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int read(ByteBuffer destBuf) throws IOException {
-        throw new UnsupportedOperationException();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int read(ByteBuffer destBuf, long position) throws 
IOException {
-        throw new UnsupportedOperationException();
-    }
-
-    /** {@inheritDoc} */
-    @Override public int read(byte[] buf, int off, int len) throws IOException 
{
-        throw new UnsupportedOperationException();
     }
 
     /** {@inheritDoc} */
     @Override public int write(ByteBuffer srcBuf) throws IOException {
-        int written = ch.write(srcBuf);
-
-        pos += written;
-
-        return written;
-    }
-
-    /** {@inheritDoc} */
-    @Override public int write(ByteBuffer srcBuf, long position) throws 
IOException {
-        throw new UnsupportedOperationException();
-    }
+        int len = srcBuf.remaining();
 
-    /** {@inheritDoc} */
-    @Override public int write(byte[] buf, int off, int len) throws 
IOException {
-        throw new UnsupportedOperationException();
-    }
+        zos.write(srcBuf.array(), srcBuf.position(), len);
 
-    /** {@inheritDoc} */
-    @Override public MappedByteBuffer map(int sizeBytes) throws IOException {
-        throw new UnsupportedOperationException();
-    }
-
-    /** {@inheritDoc} */
-    @Override public void force(boolean withMetadata) throws IOException {
-        throw new UnsupportedOperationException();
-    }
-
-    /** {@inheritDoc} */
-    @Override public void force() throws IOException {
-        force(false);
-    }
-
-    /** {@inheritDoc} */
-    @Override public long size() throws IOException {
-        throw new UnsupportedOperationException();
-    }
-
-    /** {@inheritDoc} */
-    @Override public void clear() throws IOException {
-        throw new UnsupportedOperationException();
+        return len;

Review Comment:
   The result of WriteOnlyZipFileIO#write is used by writeFully method which 
counts how many bytes were consumed from the parameter srcBuf. If not all, then 
it invokes write() once again. So this method should return number of bytes 
consumed, not how many bytes were sent to delegate fileIO.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to