Return-Path: X-Original-To: apmail-ignite-commits-archive@minotaur.apache.org Delivered-To: apmail-ignite-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 81F9A17DE4 for ; Wed, 1 Apr 2015 08:57:35 +0000 (UTC) Received: (qmail 76371 invoked by uid 500); 1 Apr 2015 08:56:37 -0000 Delivered-To: apmail-ignite-commits-archive@ignite.apache.org Received: (qmail 76337 invoked by uid 500); 1 Apr 2015 08:56:37 -0000 Mailing-List: contact commits-help@ignite.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@ignite.incubator.apache.org Delivered-To: mailing list commits@ignite.incubator.apache.org Received: (qmail 76328 invoked by uid 99); 1 Apr 2015 08:56:37 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 01 Apr 2015 08:56:37 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED,T_RP_MATCHES_RCVD X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO mail.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with SMTP; Wed, 01 Apr 2015 08:56:14 +0000 Received: (qmail 72685 invoked by uid 99); 1 Apr 2015 08:56:11 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 01 Apr 2015 08:56:11 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 7E9BAE2F1E; Wed, 1 Apr 2015 08:56:11 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: sboikov@apache.org To: commits@ignite.incubator.apache.org Date: Wed, 01 Apr 2015 08:56:15 -0000 Message-Id: <4bbca2c436f848658fd573e3be6e1737@git.apache.org> In-Reply-To: <4c4ee2277ec5484fbea6c3736dece386@git.apache.org> References: <4c4ee2277ec5484fbea6c3736dece386@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [05/13] incubator-ignite git commit: IGNITE-651 - Persistance for marshaller cache X-Virus-Checked: Checked by ClamAV on apache.org IGNITE-651 - Persistance for marshaller cache Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/00c934cc Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/00c934cc Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/00c934cc Branch: refs/heads/ignite-645 Commit: 00c934cc3921d05f92e1c0f7400ae9253b779b01 Parents: ea7d248 Author: Valentin Kulichenko Authored: Tue Mar 31 14:52:31 2015 -0700 Committer: Valentin Kulichenko Committed: Tue Mar 31 14:52:31 2015 -0700 ---------------------------------------------------------------------- .../ignite/internal/MarshallerContextImpl.java | 31 ++++++++++++++++---- 1 file changed, 26 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/00c934cc/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextImpl.java index 4a27222..d5a0526 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextImpl.java @@ -23,6 +23,7 @@ import org.apache.ignite.internal.util.typedef.internal.*; import javax.cache.event.*; import java.io.*; +import java.nio.channels.*; import java.util.concurrent.*; /** @@ -124,8 +125,18 @@ public class MarshallerContextImpl extends MarshallerContextAdapter { if (clsName == null) { File file = new File(workDir, id + ".classname"); - try (BufferedReader reader = new BufferedReader(new FileReader(file))) { - clsName = reader.readLine(); + try ( + FileInputStream in = new FileInputStream(file); + BufferedReader reader = new BufferedReader(new InputStreamReader(in)) + ) { + FileLock lock = in.getChannel().lock(0, Long.MAX_VALUE, true); + + try { + clsName = reader.readLine(); + } + finally { + lock.release(); + } } catch (IOException e) { throw new IgniteCheckedException("Failed to read class name from file [id=" + id + @@ -162,10 +173,20 @@ public class MarshallerContextImpl extends MarshallerContextAdapter { File file = new File(workDir, evt.getKey() + ".classname"); - try (Writer writer = new FileWriter(file)) { - writer.write(evt.getValue()); + try ( + FileOutputStream out = new FileOutputStream(file); + Writer writer = new OutputStreamWriter(out) + ) { + FileLock lock = out.getChannel().lock(); + + try { + writer.write(evt.getValue()); - writer.flush(); + writer.flush(); + } + finally { + lock.release(); + } } catch (IOException e) { U.error(log, "Failed to write class name to file [id=" + evt.getKey() +