IGNITE-3294: Prepared file processor.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/dfaefc4b Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/dfaefc4b Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/dfaefc4b Branch: refs/heads/ignite-3294 Commit: dfaefc4b7f87ebde04a51c19ef13aadca821d1db Parents: 670bad6 Author: vozerov-gridgain <voze...@gridgain.com> Authored: Fri Jun 10 13:01:38 2016 +0300 Committer: vozerov-gridgain <voze...@gridgain.com> Committed: Fri Jun 10 13:01:38 2016 +0300 ---------------------------------------------------------------------- .../processors/igfs/IgfsMetaManager.java | 25 +++++----------- .../igfs/meta/IgfsMetaFileCreateProcessor.java | 30 +++++++++++++++++--- 2 files changed, 33 insertions(+), 22 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/dfaefc4b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java index 20500e8..5bc314d 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/IgfsMetaManager.java @@ -2931,35 +2931,23 @@ public class IgfsMetaManager extends IgfsManager { throw fsException("Failed to open output stream to the file created in " + "the secondary file system because the path points to a directory: " + path); - IgfsEntryInfo newInfo2 = IgfsUtils.createFile( - overwriteId, - secondaryFile.blockSize(), - secondaryFile.length(), - affKey, - newLockId, - evictExclude, - secondaryFile.properties(), - secondaryFile.accessTime(), - secondaryFile.modificationTime() - ); - newAccessTime = secondaryFile.accessTime(); newModificationTime = secondaryFile.modificationTime(); newProps = secondaryFile.properties(); newLen = secondaryFile.length(); - newBlockSize = (int)secondaryFile.length(); + newBlockSize = secondaryFile.blockSize(); } else { newAccessTime = System.currentTimeMillis(); newModificationTime = newAccessTime; newProps = fileProps; - newLen = 0; + newLen = 0L; newBlockSize = blockSize; } IgfsEntryInfo newInfo = invokeAndGet(overwriteId, - new IgfsMetaFileCreateProcessor(newAccessTime, newProps, newBlockSize, affKey, - newLockId, evictExclude)); + new IgfsMetaFileCreateProcessor(newAccessTime, newModificationTime, newProps, + newBlockSize, affKey, newLockId, evictExclude, newLen)); // Prepare result and commit. tx.commit(); @@ -2969,6 +2957,7 @@ public class IgfsMetaManager extends IgfsManager { return new IgfsCreateResult(newInfo, secondaryOut); } else { + // TODO: Handle this part. // Create file and parent folders. IgfsPathsCreateResult res = createFile(pathIds, lockInfos, dirProps, fileProps, blockSize, affKey, evictExclude); @@ -3110,8 +3099,8 @@ public class IgfsMetaManager extends IgfsManager { if (dir) info = invokeAndGet(curId, new IgfsMetaDirectoryCreateProcessor(createTime, dirProps)); else - info = invokeAndGet(curId, new IgfsMetaFileCreateProcessor(createTime, fileProps, - blockSize, affKey, createFileLockId(false), evictExclude)); + info = invokeAndGet(curId, new IgfsMetaFileCreateProcessor(createTime, createTime, fileProps, + blockSize, affKey, createFileLockId(false), evictExclude, 0L)); createdPaths.add(pathIds.path()); http://git-wip-us.apache.org/repos/asf/ignite/blob/dfaefc4b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/meta/IgfsMetaFileCreateProcessor.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/meta/IgfsMetaFileCreateProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/meta/IgfsMetaFileCreateProcessor.java index 8c4c296..6c2bfa5 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/meta/IgfsMetaFileCreateProcessor.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/igfs/meta/IgfsMetaFileCreateProcessor.java @@ -51,6 +51,9 @@ public class IgfsMetaFileCreateProcessor implements EntryProcessor<IgniteUuid, I /** Create time. */ private long createTime; + /** Modification time. */ + private long modificationTime; + /** Properties. */ private Map<String, String> props; @@ -66,6 +69,9 @@ public class IgfsMetaFileCreateProcessor implements EntryProcessor<IgniteUuid, I /** Evict exclude flag. */ private boolean evictExclude; + /** File length. */ + private long len; + /** * Constructor. */ @@ -77,20 +83,24 @@ public class IgfsMetaFileCreateProcessor implements EntryProcessor<IgniteUuid, I * Constructor. * * @param createTime Create time. + * @param modificationTime Modification time. * @param props Properties. * @param blockSize Block size. * @param affKey Affinity key. * @param lockId Lock ID. * @param evictExclude Evict exclude flag. + * @param len File length. */ - public IgfsMetaFileCreateProcessor(long createTime, Map<String, String> props, int blockSize, - @Nullable IgniteUuid affKey, IgniteUuid lockId, boolean evictExclude) { + public IgfsMetaFileCreateProcessor(long createTime, long modificationTime, Map<String, String> props, + int blockSize, @Nullable IgniteUuid affKey, IgniteUuid lockId, boolean evictExclude, long len) { this.createTime = createTime; + this.modificationTime = modificationTime; this.props = props; this.blockSize = blockSize; this.affKey = affKey; this.lockId = lockId; this.evictExclude = evictExclude; + this.len = len; } /** {@inheritDoc} */ @@ -99,13 +109,13 @@ public class IgfsMetaFileCreateProcessor implements EntryProcessor<IgniteUuid, I IgfsEntryInfo info = IgfsUtils.createFile( entry.getKey(), blockSize, - 0L, + len, affKey, lockId, evictExclude, props, createTime, - createTime + modificationTime ); entry.setValue(info); @@ -116,6 +126,7 @@ public class IgfsMetaFileCreateProcessor implements EntryProcessor<IgniteUuid, I /** {@inheritDoc} */ @Override public void writeExternal(ObjectOutput out) throws IOException { out.writeLong(createTime); + out.writeLong(modificationTime); IgfsUtils.writeProperties(out, props); @@ -123,11 +134,14 @@ public class IgfsMetaFileCreateProcessor implements EntryProcessor<IgniteUuid, I U.writeGridUuid(out, affKey); U.writeGridUuid(out, lockId); out.writeBoolean(evictExclude); + + out.writeLong(len); } /** {@inheritDoc} */ @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { createTime = in.readLong(); + modificationTime = in.readLong(); props = IgfsUtils.readProperties(in); @@ -135,6 +149,8 @@ public class IgfsMetaFileCreateProcessor implements EntryProcessor<IgniteUuid, I affKey = U.readGridUuid(in); lockId = U.readGridUuid(in); evictExclude = in.readBoolean(); + + len = in.readLong(); } /** {@inheritDoc} */ @@ -142,6 +158,7 @@ public class IgfsMetaFileCreateProcessor implements EntryProcessor<IgniteUuid, I BinaryRawWriter out = writer.rawWriter(); out.writeLong(createTime); + out.writeLong(modificationTime); IgfsUtils.writeProperties(out, props); @@ -149,6 +166,8 @@ public class IgfsMetaFileCreateProcessor implements EntryProcessor<IgniteUuid, I BinaryUtils.writeIgniteUuid(out, affKey); BinaryUtils.writeIgniteUuid(out, lockId); out.writeBoolean(evictExclude); + + out.writeLong(len); } /** {@inheritDoc} */ @@ -156,6 +175,7 @@ public class IgfsMetaFileCreateProcessor implements EntryProcessor<IgniteUuid, I BinaryRawReader in = reader.rawReader(); createTime = in.readLong(); + modificationTime = in.readLong(); props = IgfsUtils.readProperties(in); @@ -163,6 +183,8 @@ public class IgfsMetaFileCreateProcessor implements EntryProcessor<IgniteUuid, I affKey = BinaryUtils.readIgniteUuid(in); lockId = BinaryUtils.readIgniteUuid(in); evictExclude = in.readBoolean(); + + len = in.readLong(); } /** {@inheritDoc} */