[ https://issues.apache.org/jira/browse/HIVE-23069?focusedWorklogId=457115&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-457115 ]
ASF GitHub Bot logged work on HIVE-23069: ----------------------------------------- Author: ASF GitHub Bot Created on: 10/Jul/20 12:23 Start Date: 10/Jul/20 12:23 Worklog Time Spent: 10m Work Description: pkumarsinha commented on a change in pull request #1225: URL: https://github.com/apache/hive/pull/1225#discussion_r452809466 ########## File path: ql/src/java/org/apache/hadoop/hive/ql/parse/repl/dump/io/FileOperations.java ########## @@ -165,4 +175,92 @@ private void validateSrcPathListExists() throws IOException, LoginException { throw new FileNotFoundException(FILE_NOT_FOUND.format(e.getMessage())); } } + + /** + * This needs the root data directory to which the data needs to be exported to. + * The data export here is a list of files either in table/partition that are written to the _files + * in the exportRootDataDir provided. + */ + private void exportFilesAsList() throws SemanticException, IOException, LoginException { + if (dataPathList.isEmpty()) { + return; + } + boolean done = false; + int repeat = 0; + while (!done) { + // This is only called for replication that handles MM tables; no need for mmCtx. + try (BufferedWriter writer = writer()) { + for (Path dataPath : dataPathList) { + writeFilesList(listFilesInDir(dataPath), writer, AcidUtils.getAcidSubDir(dataPath)); + } + done = true; + } catch (IOException e) { + if (e instanceof FileNotFoundException) { + logger.error("exporting data files in dir : " + dataPathList + " to " + exportRootDataDir + " failed"); + throw new FileNotFoundException(FILE_NOT_FOUND.format(e.getMessage())); + } + repeat++; + logger.info("writeFilesList failed", e); + if (repeat >= FileUtils.MAX_IO_ERROR_RETRY) { + logger.error("exporting data files in dir : " + dataPathList + " to " + exportRootDataDir + " failed"); + throw new IOException(ErrorMsg.REPL_FILE_SYSTEM_OPERATION_RETRY.getMsg()); + } + + int sleepTime = FileUtils.getSleepTime(repeat - 1); + logger.info(" sleep for {} milliseconds for retry num {} ", sleepTime , repeat); + try { + Thread.sleep(sleepTime); + } catch (InterruptedException timerEx) { + logger.info("thread sleep interrupted", timerEx.getMessage()); + } + + // in case of io error, reset the file system object + FileSystem.closeAllForUGI(Utils.getUGI()); + dataFileSystem = dataPathList.get(0).getFileSystem(hiveConf); + exportFileSystem = exportRootDataDir.getFileSystem(hiveConf); + Path exportPath = new Path(exportRootDataDir, EximUtil.FILES_NAME); + if (exportFileSystem.exists(exportPath)) { + exportFileSystem.delete(exportPath, true); + } + } + } + } + + private void writeFilesList(FileStatus[] fileStatuses, BufferedWriter writer, String encodedSubDirs) + throws IOException { + ReplChangeManager replChangeManager = ReplChangeManager.getInstance(); Review comment: Can you please elaborate? Didn't get which parameter you are referring to. ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org Issue Time Tracking ------------------- Worklog Id: (was: 457115) Time Spent: 50m (was: 40m) > Memory efficient iterator should be used during replication. > ------------------------------------------------------------ > > Key: HIVE-23069 > URL: https://issues.apache.org/jira/browse/HIVE-23069 > Project: Hive > Issue Type: Improvement > Reporter: Pravin Sinha > Assignee: Pravin Sinha > Priority: Major > Labels: pull-request-available > Attachments: HIVE-23069.01.patch > > Time Spent: 50m > Remaining Estimate: 0h > > Currently the iterator used while copying table data is memory based. In case > of a database with very large number of table/partitions, such iterator may > cause HS2 process to go OOM. > Also introduces a config option to run data copy tasks during repl load > operation. -- This message was sent by Atlassian Jira (v8.3.4#803005)