[GitHub] [hive] belugabehr commented on a change in pull request #1197: HIVE-23793: Review of QueryInfo Class
belugabehr commented on a change in pull request #1197: URL: https://github.com/apache/hive/pull/1197#discussion_r455070373 ## File path: ql/src/java/org/apache/hadoop/hive/ql/QueryInfo.java ## @@ -70,36 +80,57 @@ public String getExecutionEngine() { return executionEngine; } - public synchronized String getState() { + public String getState() { return state; } + /** + * The time the query began in milliseconds. + * + * @return The time the query began + */ public long getBeginTime() { -return beginTime; +return TimeUnit.NANOSECONDS.toMillis(beginTime); } - public synchronized Long getEndTime() { -return endTime; + /** + * Get the end time in milliseconds. Only valid if {@link #isRunning()} + * returns false. + * + * @return Query end time + */ + public long getEndTime() { +return TimeUnit.NANOSECONDS.toMillis(endTime); } - public synchronized void updateState(String state) { + public void updateState(String state) { this.state = state; } public String getOperationId() { return operationId; } - public synchronized void setEndTime() { -this.endTime = System.currentTimeMillis(); + public void setEndTime() { +this.endTime = System.nanoTime(); } - public synchronized void setRuntime(long runtime) { -this.runtime = runtime; + /** + * Set the amount of time the query spent actually running in milliseconds. + * + * @param runtime The amount of time this query spent running + */ + public void setRuntime(long runtime) { +this.runtime = TimeUnit.MILLISECONDS.toNanos(runtime); Review comment: For simplicity sake, I wanted to keep all of the internal time values the same precision (nano): ``` /* * Times are stored internally with nanosecond precision. */ ``` 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 - To unsubscribe, e-mail: gitbox-unsubscr...@hive.apache.org For additional commands, e-mail: gitbox-h...@hive.apache.org
[GitHub] [hive] belugabehr commented on a change in pull request #1197: HIVE-23793: Review of QueryInfo Class
belugabehr commented on a change in pull request #1197: URL: https://github.com/apache/hive/pull/1197#discussion_r454391934 ## File path: ql/src/java/org/apache/hadoop/hive/ql/QueryInfo.java ## @@ -17,48 +17,58 @@ */ package org.apache.hadoop.hive.ql; +import java.util.concurrent.TimeUnit; + /** - * The class is synchronized, as WebUI may access information about a running query. + * Provide WebUI information about a running query. Class is thread safe so that + * multiple browser sessions can access the data simultaneously. */ public class QueryInfo { private final String userName; private final String executionEngine; - private final long beginTime; private final String operationId; - private Long runtime; // tracks only running portion of the query. - private Long endTime; private String state; private QueryDisplay queryDisplay; + /* + * Times are stored internally with nanosecond precision. + */ + private final long beginTime; + private long runtime; Review comment: Thanks for the review. `synchronized` and `volatile` are not interchangeable. This class doesn't need synchronization because all of its actions are so trivial, there is no issues with them happening concurrently: just assigning or reading a variable will not cause an issue with multiple threads. The classic `volatile` case is when a thread is spinning, waiting on some variable to change values. Without `volatile` the thread may cache the value and never stop spinning. There is no such use case here, it is for informational purposes only. 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 - To unsubscribe, e-mail: gitbox-unsubscr...@hive.apache.org For additional commands, e-mail: gitbox-h...@hive.apache.org