[ https://issues.apache.org/jira/browse/HBASE-15325?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15196799#comment-15196799 ]
Anoop Sam John commented on HBASE-15325: ---------------------------------------- Seems u have not done the one optimization way while batching is used (The one u suggested) Dont want it? Its ok any way. {code} if (this.lastResult.isPartial() || scan.getBatch() > 0 ) { 508 updateLastCellLoadedToCache(this.lastResult); 509 } {code} My suggestion was add an else case and update the lastCellLoadedToCache to be null. Add a clear comment in the variable that this is the last cell from a not full Row which is added to cache (And so returned/ may return to user) May be some better name also we can get? May that will be too long name. So this check can be changed {code} if (this.lastResult != null && (this.lastResult.isPartial() || scan.getBatch() > 0 )) { 496 rs = filterLoadedCell(rs); {code} To if(this.lastCellLoadedToCache != null) { rs = filterLoadedCell(rs); {code} {code} List<Cell> list = new ArrayList<>(result.rawCells().length - index); 858 for (; index < result.rawCells().length; index++) { 859 list.add(result.rawCells()[index]); 860 } {code} can u change it to array and add cells to that and use Result.create API which takes array? Small optimization. Still worth it as no extra lines or so. > ResultScanner allowing partial result will miss the rest of the row if the > region is moved between two rpc requests > ------------------------------------------------------------------------------------------------------------------- > > Key: HBASE-15325 > URL: https://issues.apache.org/jira/browse/HBASE-15325 > Project: HBase > Issue Type: Bug > Components: dataloss, Scanners > Affects Versions: 1.2.0, 1.1.3 > Reporter: Phil Yang > Assignee: Phil Yang > Priority: Critical > Fix For: 2.0.0, 1.3.0, 1.2.1, 1.1.4, 1.4.0 > > Attachments: 15325-test.txt, HBASE-15325-v1.txt, > HBASE-15325-v10.patch, HBASE-15325-v2.txt, HBASE-15325-v3.txt, > HBASE-15325-v5.txt, HBASE-15325-v6.1.txt, HBASE-15325-v6.2.txt, > HBASE-15325-v6.3.txt, HBASE-15325-v6.4.txt, HBASE-15325-v6.5.txt, > HBASE-15325-v6.txt, HBASE-15325-v7.patch, HBASE-15325-v8.patch, > HBASE-15325-v9.patch > > > HBASE-11544 allow scan rpc return partial of a row to reduce memory usage for > one rpc request. And client can setAllowPartial or setBatch to get several > cells in a row instead of the whole row. > However, the status of the scanner is saved on server and we need this to get > the next part if there is a partial result before. If we move the region to > another RS, client will get a NotServingRegionException and open a new > scanner to the new RS which will be regarded as a new scan from the end of > this row. So the rest cells of the row of last result will be missing. -- This message was sent by Atlassian JIRA (v6.3.4#6332)