Return-Path: X-Original-To: apmail-hadoop-hdfs-issues-archive@minotaur.apache.org Delivered-To: apmail-hadoop-hdfs-issues-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id B0B2C106B8 for ; Sat, 18 Jan 2014 05:52:36 +0000 (UTC) Received: (qmail 38214 invoked by uid 500); 18 Jan 2014 05:52:35 -0000 Delivered-To: apmail-hadoop-hdfs-issues-archive@hadoop.apache.org Received: (qmail 37801 invoked by uid 500); 18 Jan 2014 05:52:23 -0000 Mailing-List: contact hdfs-issues-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: hdfs-issues@hadoop.apache.org Delivered-To: mailing list hdfs-issues@hadoop.apache.org Received: (qmail 37778 invoked by uid 99); 18 Jan 2014 05:52:19 -0000 Received: from arcas.apache.org (HELO arcas.apache.org) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 18 Jan 2014 05:52:19 +0000 Date: Sat, 18 Jan 2014 05:52:19 +0000 (UTC) From: "Laurent Goujon (JIRA)" To: hdfs-issues@hadoop.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Resolved] (HDFS-5798) DFSClient uses non-valid data when computing file checksum MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/HDFS-5798?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Laurent Goujon resolved HDFS-5798. ---------------------------------- Resolution: Duplicate > DFSClient uses non-valid data when computing file checksum > ---------------------------------------------------------- > > Key: HDFS-5798 > URL: https://issues.apache.org/jira/browse/HDFS-5798 > Project: Hadoop HDFS > Issue Type: Bug > Components: hdfs-client > Affects Versions: 1.1.2, 2.0.5-alpha > Reporter: Laurent Goujon > > In DFSClient.java, when computing the checksum, all md5 checksums are fetched for each block and added to a DataOutputStream instance (md5out), and later final checksum is computed this way: > {code:title=DFSClient.java} > final MD5Hash fileMD5 = MD5Hash.digest(md5out.getData()); > {code} > The problem is that getData() return you a buffer valid until md5out.getLength(), and fileMD5 is the MD5 of the MD5 of each block PLUS a bunch of random values (here, buffer is not reused so it should be 0) which depends on the Java implementation of the ByteArrayOutputStream. -- This message was sent by Atlassian JIRA (v6.1.5#6160)