Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 83137200B62 for ; Fri, 8 Jul 2016 07:22:15 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 81E69160A68; Fri, 8 Jul 2016 05:22:15 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id CCA97160A72 for ; Fri, 8 Jul 2016 07:22:14 +0200 (CEST) Received: (qmail 10895 invoked by uid 500); 8 Jul 2016 05:22:14 -0000 Mailing-List: contact commits-help@beam.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@beam.incubator.apache.org Delivered-To: mailing list commits@beam.incubator.apache.org Received: (qmail 10885 invoked by uid 99); 8 Jul 2016 05:22:13 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd3-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 08 Jul 2016 05:22:13 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd3-us-west.apache.org (ASF Mail Server at spamd3-us-west.apache.org) with ESMTP id 8EB511800E8 for ; Fri, 8 Jul 2016 05:22:13 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -4.646 X-Spam-Level: X-Spam-Status: No, score=-4.646 tagged_above=-999 required=6.31 tests=[KAM_ASCII_DIVIDERS=0.8, KAM_LAZY_DOMAIN_SECURITY=1, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-1.426] autolearn=disabled Received: from mx1-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd3-us-west.apache.org [10.40.0.10]) (amavisd-new, port 10024) with ESMTP id dG1ZStkkRvo9 for ; Fri, 8 Jul 2016 05:22:12 +0000 (UTC) Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx1-lw-eu.apache.org (ASF Mail Server at mx1-lw-eu.apache.org) with SMTP id 1EAF560CD1 for ; Fri, 8 Jul 2016 05:22:11 +0000 (UTC) Received: (qmail 10233 invoked by uid 99); 8 Jul 2016 05:22:11 -0000 Received: from arcas.apache.org (HELO arcas) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 08 Jul 2016 05:22:11 +0000 Received: from arcas.apache.org (localhost [127.0.0.1]) by arcas (Postfix) with ESMTP id 1290F2C02AB for ; Fri, 8 Jul 2016 05:22:11 +0000 (UTC) Date: Fri, 8 Jul 2016 05:22:11 +0000 (UTC) From: "Daniel Halperin (JIRA)" To: commits@beam.incubator.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Resolved] (BEAM-381) OffsetBasedReader should construct sources before updating the range tracker MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 archived-at: Fri, 08 Jul 2016 05:22:15 -0000 [ https://issues.apache.org/jira/browse/BEAM-381?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Daniel Halperin resolved BEAM-381. ---------------------------------- Resolution: Fixed > OffsetBasedReader should construct sources before updating the range tracker > ---------------------------------------------------------------------------- > > Key: BEAM-381 > URL: https://issues.apache.org/jira/browse/BEAM-381 > Project: Beam > Issue Type: Bug > Components: sdk-java-core > Affects Versions: 0.1.0-incubating, 0.2.0-incubating > Reporter: Daniel Halperin > Assignee: Daniel Halperin > Fix For: 0.2.0-incubating > > > OffsetBasedReader has the following code: > {code} > if (!rangeTracker.trySplitAtPosition(splitOffset)) { > return null; > } > long start = source.getStartOffset(); > long end = source.getEndOffset(); > OffsetBasedSource primary = source.createSourceForSubrange(start, splitOffset); > OffsetBasedSource residual = source.createSourceForSubrange(splitOffset, end); > this.source = primary; > return residual; > {code} > The first line is the line that updates the range of this source. However, subsequent lines might throw (specifically, in source.createSourceForSubrange). We should construct the sources first, and then catch exceptions and return null if they fail. This way, the splitAtFraction call will not throw (so work is not wasted) and the range tracker will not be updated if either the primary or (more likely) the residual could not be created. -- This message was sent by Atlassian JIRA (v6.3.4#6332)