Commit Graph

1971 Commits

Author SHA1 Message Date
Jason Lowe
99a7f5d451 YARN-7120. CapacitySchedulerPage NPE in "Aggregate scheduler counts" section. Contributed by Eric Payne 2017-09-01 11:09:14 -05:00
bibinchundatt
dcd0bedcc8 YARN-7141. Move logging APIs to slf4j in timelineservice after ATSv2 merge. Contributed by Varun Saxena 2017-09-01 11:29:16 +05:30
Subru Krishnan
bac4e8cca8 YARN-7095. Federation: routing getNode/getNodes/getMetrics REST invocations transparently to multiple RMs. (Giovanni Matteo Fumarola via Subru). 2017-08-31 15:05:41 -07:00
Daniel Templeton
d4417dae4f YARN-6780. ResourceWeights.toString() cleanup (Contributed by weiyuan via Daniel Templeton) 2017-08-31 09:35:01 -07:00
Sunil G
f9e0cc8cdc YARN-7116. CapacityScheduler Web UI: Queue's AM usage is always show on per-user's AM usage. Contributed by Wangda Tan. 2017-08-31 18:42:01 +05:30
Daniel Templeton
cc23514aba YARN-7115. Move BoundedAppender to org.hadoop.yarn.util pacakge
(Contributed by Jian He via Daniel Templeton)
2017-08-30 17:26:13 -07:00
Haibo Chen
a20e7105ea YARN-6868. Add test scope to certain entries in hadoop-yarn-server-resourcemanager pom.xml. (Ray Chiang via Haibo Chen) 2017-08-30 09:14:59 -07:00
Rohith Sharma K S
7594d1de7b YARN-6130. [ATSv2 Security] Generate a delegation token for AM when app collector is created and pass it to AM via NM and RM. Contributed by Varun Saxena. 2017-08-30 11:29:53 +05:30
Rohith Sharma K S
660413165a YARN-6801. NPE in RM while setting collectors map in NodeHeartbeatResponse. Contributed by Vrushali C. 2017-08-30 11:29:53 +05:30
Sangjin Lee
ccb38c1991 YARN-5928. Move ATSv2 HBase backend code into a new module that is only dependent at runtime by yarn servers. Contributed by Haibo Chen. 2017-08-30 11:29:52 +05:30
Sangjin Lee
092fead5d9 YARN-5792. Adopt the id prefix for YARN, MR, and DS entities. Contributed by Varun Saxena. 2017-08-30 11:29:51 +05:30
Varun Saxena
91d3443806 YARN-3359. Recover collector list when RM fails over (Li Lu via Varun Saxena) 2017-08-30 11:29:51 +05:30
Sangjin Lee
78b7e070d8 YARN-5638. Introduce a collector timestamp to uniquely identify collectors creation order in collector discovery. Contributed by Li Lu. 2017-08-30 11:29:50 +05:30
Rohith Sharma K S
4cae120c61 YARN-6982. Potential issue on setting AMContainerSpec#tokenConf to null before app is completed. Contributed by Manikandan R. 2017-08-30 10:45:11 +05:30
Carlo Curino
cc8893edc0 YARN-7010. Federation: routing REST invocations transparently to multiple RMs (part 2 - getApps). (Contributed by Giovanni Matteo Fumarola via curino) 2017-08-29 14:53:09 -07:00
Jason Lowe
1f6dc4ee9a YARN-5816. TestDelegationTokenRenewer#testCancelWithMultipleAppSubmissions is still flakey. Contributed by Robert Kanter 2017-08-29 09:52:24 -05:00
Junping Du
312b1fd9da YARN-7076. yarn application -list -appTypes is not working. Contributed by Jian He. 2017-08-28 18:26:51 -07:00
Sunil G
02599bda04 YARN-7051. Avoid concurrent modification exception in FifoIntraQueuePreemptionPlugin. Contributed by Eric Payne. 2017-08-28 12:22:56 +05:30
Jason Lowe
39a9dc8e4a YARN-7052. RM SchedulingMonitor gives no indication why the spawned thread crashed. Contributed by Eric Payne 2017-08-25 15:31:29 -05:00
Jason Lowe
3a4e861169 YARN-6640. AM heartbeat stuck when responseId overflows MAX_INT. Contributed by Botong Huang 2017-08-25 09:16:17 -05:00
Yufei Gu
9e2699ac2c YARN-7049. FSAppAttempt preemption related fields have confusing names. (Contributed by Karthik Kambatla via Yufei Gu) 2017-08-24 17:52:41 -07:00
Junping Du
652dd434d9 YARN-7090. testRMRestartAfterNodeLabelDisabled get failed when CapacityScheduler is configured. Contributed by Wangda Tan. 2017-08-23 18:06:29 -07:00
Wangda Tan
f49843a988 YARN-6251. Do async container release to prevent deadlock during container updates. (Arun Suresh via wangda)
Change-Id: I6c67d20c5dd4d22752830ebf0ed2340824976ecb
2017-08-23 09:56:20 -07:00
Subru Krishnan
4249172e14 YARN-7053. Move curator transaction support to ZKCuratorManager. (Jonathan Hung via Subru). 2017-08-22 19:20:57 -07:00
Jason Lowe
657dd59cc8 YARN-7048. Fix tests faking kerberos to explicitly set ugi auth type. Contributed by Daryn Sharp 2017-08-22 13:16:24 -05:00
Jason Lowe
3efcd51c3b YARN-2416. InvalidStateTransitonException in ResourceManager if AMLauncher does not receive response for startContainers() call in time. Contributed by Jonathan Eagles 2017-08-22 12:56:09 -05:00
Arun Suresh
8410d862d3 YARN-6979. Add flag to notify all types of container updates to NM via NodeHeartbeatResponse. (Kartheek Muthyala via asuresh) 2017-08-20 07:54:09 -07:00
Yufei Gu
8991f0baec YARN-6969. Clean up unused code in class FairSchedulerQueueInfo. (Larry Lo via Yufei Gu) 2017-08-18 14:38:44 -07:00
bibinchundatt
e05fa3451d YARN-7007. NPE in RM while using YarnClient.getApplications(). Contributed by Lingfeng Su. 2017-08-18 20:28:50 +05:30
Akira Ajisaka
588c190afd
YARN-6965. Duplicate instantiation in FairSchedulerQueueInfo. Contributed by Masahiro Tanaka. 2017-08-16 14:06:22 +09:00
Subru Krishnan
75dd866bfb HADOOP-14773. Extend ZKCuratorManager API for more reusability. (Íñigo Goiri via Subru). 2017-08-15 16:53:59 -07:00
Arun Suresh
4d7be1d857 YARN-5978. ContainerScheduler and ContainerManager changes to support ExecType update. (Kartheek Muthyala via asuresh) 2017-08-14 19:46:17 -07:00
Jason Lowe
5558792894 YARN-6917. Queue path is recomputed from scratch on every allocation. Contributed by Eric Payne 2017-08-14 15:31:34 -05:00
Jason Lowe
3325ef653d YARN-6987. Log app attempt during InvalidStateTransition. Contributed by Jonathan Eagles 2017-08-14 14:40:08 -05:00
Daniel Templeton
6b09c32705 YARN-6881. LOG is unused in AllocationConfiguration (Contributed by weiyuan via Daniel Templeton) 2017-08-14 11:55:33 -07:00
Jian He
e2f6299f6f YARN-6959. RM may allocate wrong AM Container for new attempt. Contributed by Yuqi Wang 2017-08-14 10:51:30 -07:00
bibinchundatt
d8f74c3964 YARN-6741. Deleting all children of a Parent Queue on refresh throws exception. Contributed by Naganarasimha G R. 2017-08-14 09:39:00 +05:30
Carlo Curino
28d97b79b6 YARN-6687. Validate that the duration of the periodic reservation is less than the periodicity. (subru via curino) 2017-08-11 16:58:04 -07:00
Daniel Templeton
0996acde6c YARN-6882. AllocationFileLoaderService.reloadAllocations() should use the diamond operator
(Contributed by Larry Lo via Daniel Templeton)
2017-08-11 14:50:46 -07:00
Daniel Templeton
65364defb4 YARN-6967. Limit application attempt's diagnostic message size thoroughly
(Contributed by Chengbing Liu via Daniel Templeton)
2017-08-11 14:28:55 -07:00
Daniel Templeton
c7680d4cc4 YARN-6884. AllocationFileLoaderService.loadQueue() has an if without braces
(Contributed by weiyuan via Daniel Templeton)
2017-08-11 14:22:02 -07:00
Daniel Templeton
218588be77 YARN-6952. Enable scheduling monitor in FS (Contributed by Yufei Gu via Daniel Templeton) 2017-08-11 14:04:19 -07:00
Subru Krishnan
bbbf0e2a41 HADOOP-14741. Refactor curator based ZooKeeper communication into common library. (Íñigo Goiri via Subru). 2017-08-11 13:58:45 -07:00
Daniel Templeton
e0c24145d2 YARN-6879. TestLeafQueue.testDRFUserLimits() has commented out code
(Contributed by Angela Wang via Daniel Templeton)
2017-08-08 13:35:22 -07:00
Wangda Tan
adb84f34db YARN-4161. Capacity Scheduler : Assign single or multiple containers per heart beat driven by configuration. (Wei Yan via wangda)
Change-Id: Ic441ae4e0bf72e7232411eb54243ec143d5fd0d3
2017-08-07 11:32:21 -07:00
Arun Suresh
35dc782923 YARN-5977. ContainerManagementProtocol changes to support change of container ExecutionType. (Kartheek Muthyala via asuresh) 2017-08-03 21:15:40 -07:00
Yufei Gu
c617fe02b3 YARN-6832. Tests use assertTrue(....equals(...)) instead of assertEquals()). (Daniel Templeton via Yufei Gu) 2017-08-03 11:33:37 -07:00
Sunil G
f64cfeaf61 YARN-6678. Handle IllegalStateException in Async Scheduling mode of CapacityScheduler. Contributed by Tao Yang. 2017-08-03 19:27:10 +05:30
Eric Payne
8ce8672b6b YARN-5349. TestWorkPreservingRMRestart#testUAMRecoveryOnRMWorkPreservingRestart fail intermittently. Contributed by Jason Lowe. 2017-08-02 12:53:22 -05:00
Yufei Gu
45535f8afa YARN-6895. [FairScheduler] Preemption reservation may cause regular reservation leaks. (Miklos Szegedi via Yufei Gu) 2017-08-02 09:25:19 -07:00
Jian He
f9139ac8f6 YARN-6872. [Addendum patch] Ensure apps could run given NodeLabels are disabled post RM switchover/restart. Contributed by Sunil G 2017-08-02 00:03:25 -07:00
Carlo Curino
acda6b96a4 YARN-5412. Create a proxy chain for ResourceManager REST API in the Router. (Contributed by Giovanni Matteo Fumarola via curino)
(cherry picked from commit b6240b92abf453affc5fd64e1eedf2d29842aa75)
2017-08-01 17:28:28 -07:00
Subru Krishnan
712e97d4cf Bumping up yarn-server-router (new) module pom to beta1 and fixing imports post rebase.
(cherry picked from commit f1eff212c5f13c62e8fc45b0af794b5bbeb577da)
2017-08-01 17:28:27 -07:00
Subru Krishnan
859aa1f9d6 YARN-5531. UnmanagedAM pool manager for federating application across clusters. (Botong Huang via Subru).
(cherry picked from commit 73bb2102ce4b82b3a3bed91319f7c8f067ddc3e8)
2017-08-01 17:28:24 -07:00
Subru Krishnan
78032e51d9 YARN-5905. Update the RM webapp host that is reported as part of Federation membership to current primary RM's IP.
(cherry picked from commit e0f0e7afed51aac4ac9093ac362f6ce64601884d)
2017-08-01 17:28:22 -07:00
Jian He
2797507d51 YARN-5601. Make the RM epoch base value configurable. Contributed by Subru Krishnan
(cherry picked from commit 9ca2aba9cc65090162b3517b194b5e655ee4a157)
2017-08-01 17:28:20 -07:00
Jian He
94a24567d6 YARN-3671. Integrate Federation services with ResourceManager. Contributed by Subru Krishnan
(cherry picked from commit 8573c286e27623155c715a632d56a68f23523c72)
2017-08-01 17:28:20 -07:00
Jian He
91f120f743 YARN-6872. Ensure apps could run given NodeLabels are disabled post RM switchover/restart. Contributed by Sunil G 2017-08-01 09:56:33 -07:00
Subru Krishnan
bcde66bed1 YARN-6897. Refactoring RMWebServices by moving some util methods to RMWebAppUtil. (Giovanni Matteo Fumarola via Subru). 2017-07-28 15:44:36 -07:00
Yufei Gu
9ea01fd956 YARN-6802. Add max AM resource and AM resource usage to leaf queue view in FairScheduler WebUI. (YunFan Zhou via Yufei Gu) 2017-07-28 09:52:53 -07:00
Yufei Gu
9902be72cb YARN-6864. FSPreemptionThread cleanup for readability. (Daniel Templeton via Yufei Gu) 2017-07-27 23:19:39 -07:00
Akira Ajisaka
38c6fa5c7a
HADOOP-11875. [JDK9] Adding a second copy of Hamlet without _ as a one-character identifier. 2017-07-28 09:10:52 +09:00
Varun Saxena
11ece0bda1 Addendum for YARN-5548. Use MockRMMemoryStateStore to reduce test failures (Bibin A Chundatt via Varun Saxena) 2017-07-28 00:10:45 +05:30
Varun Saxena
f66fd11e51 YARN-5548. Use MockRMMemoryStateStore to reduce test failures (Bibin A Chundatt via Varun Saxena) 2017-07-27 23:14:50 +05:30
Daniel Templeton
f81a4efb8c YARN-6307. Refactor FairShareComparator#compare (Contributed by Yufei Gu via Daniel Templeton) 2017-07-25 13:00:31 -07:00
Akira Ajisaka
cca51e916b
HADOOP-14681. Remove MockitoMaker class. Contributed by Andras Bokor. 2017-07-25 15:24:56 +09:00
Daniel Templeton
10583625c1 YARN-6845. Variable scheduler of FSLeafQueue duplicates the one of its parent FSQueue.
(Contributed by Yufei Gu via Daniel Templeton)
2017-07-24 13:44:00 -07:00
Daniel Templeton
bb30bd3771 YARN-6779. DominantResourceFairnessPolicy.DominantResourceFairnessComparator.calculateShares() should be @VisibleForTesting
(Contributed by Yeliang Cang via Daniel Templeton)
2017-07-24 12:13:50 -07:00
Sunil G
e315328428 YARN-6102. RMActiveService context to be updated with new RMContext on failover. Contributed by Rohith Sharma K S. 2017-07-24 11:39:03 +05:30
Arun Suresh
077fcf6a96 YARN-6777. Support for ApplicationMasterService processing chain of interceptors. (asuresh) 2017-07-19 12:26:40 -07:00
Rohith Sharma K S
845c4e52bd YARN-6819. Application report fails if app rejected due to nodesize. Contributed by Bibin A Chundatt. 2017-07-19 11:10:52 +05:30
Yufei Gu
daaf530fce YARN-6778. In ResourceWeights, weights and setWeights() should be final. (Daniel Templeton via Yufei Gu) 2017-07-18 16:38:07 -07:00
Sunil G
0b7afc060c Addendum patch for YARN-5731 2017-07-18 11:49:09 +05:30
Jason Lowe
a5ae5ac50e YARN-3260. AM attempt fail to register before RM processes launch event. Contributed by Bibin A Chundatt 2017-07-14 14:56:00 -05:00
bibinchundatt
75c0220b44 YARN-6759. Fix TestRMRestart.testRMRestartWaitForPreviousAMToFinish failure. Contributed by Naganarasimha G R 2017-07-14 13:53:39 +05:30
Yufei Gu
4a574e9a84 YARN-6769. Make schedulables without demand less needy in FairSharePolicy#compare. (Yunfan Zhou via Yufei Gu) 2017-07-13 23:10:10 -07:00
Sunil G
228ddaa31d YARN-6792. Incorrect XML convertion in NodeIDsInfo and LabelsToNodesInfo. Contributed by Giovanni Matteo Fumarola. 2017-07-14 08:07:05 +05:30
Wangda Tan
945c0958bb YARN-6775. CapacityScheduler: Improvements to assignContainers, avoid unnecessary canAssignToUser/Queue calls. (Nathan Roberts via wangda)
Change-Id: I84ccd54200ccbaae23018ef320028e42b4c3509a
2017-07-13 10:30:15 -07:00
Sunil G
cf0d0844d6 YARN-5731. Preemption calculation is not accurate when reserved containers are present in queue. Contributed by Wangda Tan. 2017-07-13 16:48:29 +05:30
Xuan
9845bea59c YARN-6689. PlacementRule should be configurable. (Jonathan Hung via xgong) 2017-07-12 15:40:45 -07:00
Sunil G
34f113df5c YARN-6714. IllegalStateException while handling APP_ATTEMPT_REMOVED event when async-scheduling enabled in CapacityScheduler. Contributed by Tao Yang. 2017-07-11 14:52:44 +05:30
Arun Suresh
5496a34c0c YARN-6776. Refactor ApplicaitonMasterService to move actual processing logic to a separate class. (asuresh) 2017-07-10 14:34:58 -07:00
Yufei Gu
3de47ab5ea YARN-6764. Simplify the logic in FairScheduler#attemptScheduling. Contributed by Yufei Gu. 2017-07-09 16:09:12 -07:00
Naganarasimha
626d730bfc YARN-6428. Queue AM limit is not honored in CS always. Contributed by Bibin A Chundatt. 2017-07-09 17:26:09 +05:30
Daniel Templeton
9d27880442 YARN-6410. FSContext.scheduler should be final (Contributed by Yeliang Cang via Daniel Templeton) 2017-07-09 19:34:35 +09:00
Daniel Templeton
c5a0c38d8e YARN-6746. SchedulerUtils.checkResourceRequestMatchingNodePartition() is dead code
(Contributed by Deepti Sawhney via Daniel Templeton)
2017-07-09 19:27:32 +09:00
Daniel Templeton
0615985886 YARN-6752. Display reserved resources in web UI per application
(Contributed by Abdullah Yousufi via Daniel Templeton)
2017-07-09 19:02:31 +09:00
Naganarasimha
fa1aaee87b YARN-6681. Eliminate double-copy of child queues in canAssignToThisQueue. Contributed by Daryn Sharp. 2017-07-01 12:29:39 +05:30
Andrew Wang
af2773f609 Updating version for 3.0.0-beta1 development 2017-06-29 17:57:40 -07:00
Daniel Templeton
ec97519779 YARN-6751. Display reserved resources in web UI per queue
(Contributed by Abdullah Yousufi via Daniel Templeton)
2017-06-29 16:53:50 -07:00
Sunil G
c1edca101c YARN-6280. Introduce deselect query param to skip ResourceRequest from getApp/getApps REST API. Contributed by Lantao Jin. 2017-06-28 15:40:58 -07:00
Yufei Gu
0b77262890 YARN-5876. TestResourceTrackerService#testGracefulDecommissionWithApp fails intermittently on trunk. (Robert Kanter via Yufei Gu) 2017-06-23 13:26:03 -07:00
Sunil G
ca13b224b2 YARN-5892. Support user-specific minimum user limit percentage in Capacity Scheduler. Contributed by Eric Payne. 2017-06-22 23:50:57 -07:00
Naganarasimha
740204b292 YARN-5006. ResourceManager quit due to ApplicationStateData exceed the limit size of znode in zk. Contributed by Bibin A Chundatt. 2017-06-23 07:52:41 +05:30
Akira Ajisaka
099dfe92a9
YARN-6713. Fix dead link in the Javadoc of FairSchedulerEventLog.java. Contributed by Weiwei Yang. 2017-06-20 17:20:27 +09:00
Naganarasimha
ee89ac84e6 YARN-6680. Avoid locking overhead for NO_LABEL lookups. Contributed by Daryn Sharp 2017-06-19 22:42:45 +05:30
Naganarasimha
e9c2aa1bc3 YARN-6467. CSQueueMetrics needs to update the current metrics for default partition only. Contributed by Manikandan R. 2017-06-19 21:31:40 +05:30
bibinchundatt
d64c842743 YARN-6703. RM startup failure with old state store due to version mismatch. Contributed by Varun Saxena 2017-06-12 18:07:43 +05:30
Eric Payne
5578af8603 YARN-6585. RM fails to start when upgrading from 2.7 for clusters with node labels. Contributed by Sunil G. 2017-06-09 16:16:34 -05:00
Naganarasimha
99634d10ed YARN-6682. Improve performance of AssignmentInformation datastructures. Contributed by Daryn Sharp. 2017-06-09 11:10:13 +05:30
Carlo Curino
547cb53e8a YARN-6634. [API] Refactor ResourceManager WebServices to make API explicit. (Giovanni Matteo Fumarola via curino) 2017-06-07 13:41:06 -07:00
Jian He
7311015ace YARN-6683. Invalid event: COLLECTOR_UPDATE at KILLED. Contributed by Rohith Sharma K S 2017-06-05 13:16:57 -07:00
Daniel Templeton
d5b71e4175 YARN-6246. Identifying starved apps does not need the scheduler writelock
(Contributed by Karthik Kambatla via Daniel Templeton)
2017-05-31 15:48:04 -07:00
Jonathan Eagles
cbfed0e82f YARN-6497. Method length of ResourceManager#serviceInit() is too long (Gergely Novák via jeagles) 2017-05-31 10:18:42 -05:00
Andrew Wang
16ad896d5c Update maven version for 3.0.0-alpha4 development 2017-05-26 14:09:44 -07:00
Daniel Templeton
d81372dfad YARN-6646. Modifier 'static' is redundant for inner enums
(Contributed by ZhangBing Lin via Daniel Templeton)
2017-05-26 12:05:48 -07:00
Yufei Gu
87590090c8 YARN-6582. FSAppAttempt demand can be updated atomically in updateDemand(). (Karthik Kambatla via Yufei Gu) 2017-05-25 14:22:13 -07:00
Jason Lowe
3fd6a2da4e YARN-6643. TestRMFailover fails rarely due to port conflict. Contributed by Robert Kanter 2017-05-25 16:07:52 -05:00
Wangda Tan
8e0f83e49a YARN-6493. Print requested node partition in assignContainer logs. (Jonathan Hung via wangda)
Change-Id: Ib20326daac10acad363befb0ae0998441fa5b32d
2017-05-22 14:28:55 -07:00
Wangda Tan
c583ab02c7 YARN-2113. Add cross-user preemption within CapacityScheduler's leaf-queue. (Sunil G via wangda)
Change-Id: I9b19f69788068be05b3295247cdd7b972f8a573c
2017-05-22 14:26:13 -07:00
Jian He
e135c0b207 YARN-6627. Use deployed webapp folder to launch new YARN UI. Contributed by Sunil G 2017-05-19 20:14:03 -07:00
Yufei Gu
66bba8c024 YARN-6249. TestFairSchedulerPreemption fails inconsistently. (Tao Jie via Yufei Gu) 2017-05-19 14:53:27 -07:00
Rohith Sharma K S
d87a63a901 HADOOP-14412. HostsFileReader#getHostDetails is very expensive on large clusters. Contributed by Jason Lowe. 2017-05-17 08:27:45 +05:30
Jason Lowe
489f85933c YARN-6603. NPE in RMAppsBlock. Contributed by Jason Lowe 2017-05-16 09:26:44 -05:00
Carlo Curino
6600abbb5c YARN-6587. Refactor of ResourceManager#startWebApp in a Util class. (Giovanni Matteo Fumarola via curino). 2017-05-12 17:48:55 -07:00
Haibo Chen
6c35001b9f YARN-6580. Incorrect logger for FairSharePolicy. (Vrushali C via Haibo Chen) 2017-05-12 13:05:40 -07:00
Daniel Templeton
90cb5b4635 YARN-6380. FSAppAttempt keeps redundant copy of the queue 2017-05-11 13:47:02 -07:00
Min Shen
2ada100da7 YARN-5543. ResourceManager SchedulingMonitor could potentially terminate the preemption checker thread. Contributed by Min Shen. 2017-05-11 13:25:31 -07:00
Brahma Reddy Battula
4aae2d40a3 HADOOP-14410. Correct spelling of 'beginning' and variants. Contributed By Dongtao Zhang 2017-05-11 23:33:45 +05:30
Carlo Curino
5cb6e3e082 YARN-6473. Create ReservationInvariantChecker to validate ReservationSystem + Scheduler operations. 2017-05-10 14:49:25 -07:00
Daniel Templeton
e7654c4a1f YARN-6571. Fix JavaDoc issues in SchedulingPolicy
(Contributed by Weiwei Yang via Daniel Templeton)
2017-05-10 14:34:13 -07:00
Jason Lowe
6099deebcb YARN-6552. Increase YARN test timeouts from 1 second to 10 seconds. Contributed by Eric Badger 2017-05-10 08:47:48 -05:00
Karthik Kambatla
166be0ee95 YARN-3742. YARN RM will shut down if ZKClient creation times out. (Daniel Templeton via kasha) 2017-05-09 14:44:16 -07:00
Andrew Wang
543aac9f28 HADOOP-14386. Rewind trunk from Guava 21.0 back to Guava 11.0.2. 2017-05-09 09:22:53 -07:00
Chris Douglas
e4f34ecb04 HADOOP-14390. Correct spelling of 'succeed' and variants. Contributed by Dongtao Zhang 2017-05-05 12:10:50 -07:00
Daniel Templeton
9f0aea0ee2 YARN-6481. Yarn top shows negative container number in FS
(Contributed by Tao Jie via Daniel Templeton)
2017-05-02 13:06:47 -07:00
Subru Krishnan
6bf42e48ef YARN-5331. Extend RLESparseResourceAllocation with period for supporting recurring reservations in YARN ReservationSystem. (Sangeetha Abdu Jyothi via Subru). 2017-05-01 18:48:36 -07:00
Subru Krishnan
e514fc432a YARN-6542. Fix the logger in TestAlignedPlanner and TestGreedyReservationAgent. 2017-05-01 18:10:07 -07:00
Subru Krishnan
a3a615eeab YARN-4359. Update LowCost agents logic to take advantage of YARN-4358. (Jonathan Yaniv and Ishai Menache via Subru). 2017-05-01 16:01:07 -07:00
Naganarasimha
30fc580196 YARN-6519. Fix warnings from Spotbugs in hadoop-yarn-server-resourcemanager. Contributed by Weiwei Yang. 2017-05-01 20:15:27 +05:30
Daniel Templeton
2e52789edf YARN-2962. ZKRMStateStore: Limit the number of znodes under a znode (Contributed by Varun Sexena via Daniel Templeton) 2017-04-28 13:30:28 -07:00
Wangda Tan
2ba21d6376 YARN-6392. Add submit time to Application Summary log. (Zhihai Xu via wangda) 2017-04-24 13:17:35 -07:00
Eric Payne
52adf71914 YARN-5617. AMs only intended to run one attempt can be run more than once? Contributed by Jason Lowe. 2017-04-24 12:03:28 -05:00
Daniel Templeton
dd43b895c2 YARN-6202. Configuration item Dispatcher.DISPATCHER_EXIT_ON_ERROR_KEY is disregarded
(Contributed by Yufei Gu via Daniel Templeton)
2017-04-19 11:44:55 -07:00
Sunil G
9ff25408bc YARN-6164. Expose Queue Configurations per Node Label through YARN client api. Contributed by Benson Qiu. 2017-04-19 20:39:09 +05:30
Chris Douglas
af8e9842d2 YARN-6451. Add RM monitor validating metrics invariants. Contributed by Carlo Curino 2017-04-18 10:29:44 -07:00
Junping Du
6ed9d36224 YARN-6304. Skip rm.transitionToActive call to RM if RM is already active. Contributed by Rohith Sharma K S. 2017-04-17 15:51:10 -07:00
Jason Lowe
4168805502 YARN-6480. Timeout is too aggressive for TestAMRestart.testPreemptedAMRestartOnRMRestart. Contributed by Eric Badger 2017-04-14 17:15:48 -05:00
Eric Payne
a41f8dd58e YARN-5994. TestCapacityScheduler.testAMLimitUsage fails intermittently. Contributed by Eric Badger 2017-04-14 10:53:09 -05:00
Karthik Kambatla
c3375175d6 YARN-6432. FairScheduler: Reserve preempted resources for corresponding applications. (Miklos Szegedi via kasha) 2017-04-12 14:21:20 -07:00
Wangda Tan
4d4ad0ebb7 YARN-6439. Fix ReservationSystem creation of default ReservationQueue. (Carlo Curino via wangda) 2017-04-11 14:56:18 -07:00
Naganarasimha
7d873c465b YARN-6463. Correct spelling mistake in FileSystemRMStateStore. Contributed by Yeliang Cang. 2017-04-11 22:42:08 +05:30
Jason Lowe
0e065f2ede YARN-6195. Export UsedCapacity and AbsoluteUsedCapacity to JMX. Contributed by Benson Qiu 2017-04-11 08:44:18 -05:00
Konstantinos Karanasos
7999318af1 YARN-6344. Add parameter for rack locality delay in CapacityScheduler. (kkaranasos) 2017-04-10 15:34:44 -07:00
Karthik Kambatla
2aa8967809 YARN-6298. Metric preemptCall is not used in new preemption. (Yufei Gu via kasha) 2017-04-07 17:31:59 -07:00
Rohith Sharma K S
1a9439e299 YARN-6424. TimelineCollector is not stopped when an app finishes in RM. Contributed by Varun Saxena. 2017-04-06 10:15:22 +05:30
Daniel Templeton
a2c57bb70d YARN-6381. FSAppAttempt has several variables that should be final
(Contributed by Ameet Zaveri via Daniel Templeton)
2017-04-05 16:07:24 -07:00
Andrew Wang
539ef5aa2e HFDS-11596. hadoop-hdfs-client jar is in the wrong directory in release tarball. Contributed by Yuanbo Liu. 2017-04-05 16:04:09 -07:00
Karthik Kambatla
b4c4f36594 YARN-6448. Continuous scheduling thread crashes while sorting nodes. (Yufei Gu via kasha) 2017-04-05 15:43:14 -07:00
Varun Saxena
7d963c477a YARN-6437. TestSignalContainer#testSignalRequestDeliveryToNM fails intermittently (Jason Lowe via Varun Saxena) 2017-04-06 01:20:41 +05:30
Wangda Tan
87e2ef8c98 YARN-6406. Remove SchedulerRequestKeys when no more pending ResourceRequest. (Arun Suresh via wangda) 2017-04-05 11:28:30 -07:00
Varun Saxena
19b89c4c7b YARN-6420. RM startup failure due to wrong order in nodelabel editlog (Bibin A Chundatt via Varun Saxena) 2017-04-05 09:38:35 +05:30
Karthik Kambatla
9cc04b4708 YARN-6436. TestSchedulingPolicy#testParseSchedulingPolicy timeout is too low. (Eric Badger via kasha) 2017-04-04 17:08:33 -07:00
Wangda Tan
3fdae0a2b6 YARN-6109. Add an ability to convert ChildQueue to ParentQueue. (Xuan Gong via wangda) 2017-04-04 14:39:01 -07:00
Chris Douglas
6eba79232f HADOOP-14271. Correct spelling of 'occurred' and variants. Contributed by Yeliang Cang 2017-04-03 20:13:14 -07:00
Eric Payne
318bfb01bc YARN-6354. LeveldbRMStateStore can parse invalid keys when recovering reservations. Contributed by Jason Lowe 2017-03-31 12:30:35 -05:00
Jason Lowe
4d1fac5df2 YARN-6411. Clean up the overwrite of createDispatcher() in subclass of MockRM. Contributed by Yufei Gu 2017-03-31 10:05:34 -05:00
Daniel Templeton
640ba1d23f YARN-5685. RM configuration allows all failover methods to disabled when automatic failover is enabled 2017-03-29 12:38:11 -07:00
Jason Lowe
fdf8f8ebca YARN-6359. TestRM#testApplicationKillAtAcceptedState fails rarely due to race condition. Contributed by Robert Kanter 2017-03-28 09:33:26 -05:00
Robert Kanter
9bae6720cb YARN-6050. AMs can't be scheduled on racks or nodes (rkanter) 2017-03-27 17:23:13 -07:00
Wangda Tan
cd014d57aa YARN-6339. Improve performance for createAndGetApplicationReport. (Yunjiong Zhao via wangda) 2017-03-27 13:29:09 -07:00
Akira Ajisaka
b63ae854f9
YARN-6379. Remove unused argument in ClientRMService. Contributed by Kai Sasaki. 2017-03-27 11:23:41 +09:00
Sunil G
cffea251be YARN-5956. Refactor ClientRMService for unify error handling across apis. Contributed by Kai Sasaki. 2017-03-25 22:26:19 +05:30
Tsuyoshi Ozawa
84ddedc0b2 HADOOP-10101. Update guava dependency to the latest version. (ozawa) 2017-03-25 10:06:52 +09:00
Ravi Prakash
d4f73e7e27 HDFS-11574. Spelling mistakes in the Java source. Contributed by Hu Xiaodong. 2017-03-24 09:38:17 -07:00
Daniel Templeton
0a05c5c598 YARN-6284. hasAlreadyRun should be final in ResourceManager.StandByTransitionRunnable
(Contributed by Laura Adams via Daniel Templeton)
2017-03-21 14:15:40 -07:00
Varun Saxena
35034653d0 YARN-6353. Clean up OrderingPolicy javadoc (Daniel Templeton via Varun Saxena) 2017-03-20 23:29:09 +05:30
Sunil G
2d0e24eb01 YARN-6328. Fix a spelling mistake in CapacityScheduler. Contributed by Jin Yibo. This closes #202 2017-03-15 14:48:05 +05:30
Ray Chiang
4c66a8d19b YARN-6331. Fix flakiness in TestFairScheduler#testDumpState. (Yufei Gu via rchiang) 2017-03-14 15:09:47 -07:00
Naganarasimha
0a3aa40fe7 YARN-6327. Removing queues from CapacitySchedulerQueueManager and ParentQueue should be done with iterator. Contributed by Jonathan Hung. 2017-03-15 01:22:25 +05:30
Ray Chiang
4db9cc70d0 YARN-6042. Dump scheduler and queue state information into FairScheduler DEBUG log. (Yufei Gu via rchiang) 2017-03-10 16:13:31 -08:00
Jason Lowe
9649c27864 YARN-6321. TestResources test timeouts are too aggressive. Contributed by Eric Badger 2017-03-10 13:06:54 -06:00
Karthik Kambatla
a96afae125 YARN-6264. AM not launched when a single vcore is available on the cluster. (Yufei Gu via kasha) 2017-03-09 23:11:54 -08:00
Daniel Templeton
846a0cd678 YARN-1047. Expose # of pre-emptions as a queue counter (Contributed by Karthik Kambatla via Daniel Templeton) 2017-03-09 17:51:47 -08:00
Daniel Templeton
822a74f2ae YARN-6300. NULL_UPDATE_REQUESTS is redundant in TestFairScheduler (Contributed by Yuanbo Liu via Daniel Templeton) 2017-03-09 12:14:33 -08:00
Jason Lowe
d7762a5511 YARN-6165. Intra-queue preemption occurs even when preemption is turned off for a specific queue. Contributed by Eric Payne 2017-03-08 16:46:09 -06:00
Sunil G
1eb8186703 YARN-6207. Move application across queues should handle delayed event processing. Contributed by Bibin A Chundatt. 2017-03-08 12:04:30 +05:30
Daniel Templeton
e0c239cdbd YARN-6287. RMCriticalThreadUncaughtExceptionHandler.rmContext should be final (Contributed by Corey Barker via Daniel Templeton) 2017-03-07 11:58:48 -08:00
Sunil G
c1386a90d7 YARN-6248. user is not removed from UsersManager’s when app is killed with pending container requests. Contributed by Eric Payne. 2017-03-04 13:46:35 +05:30
Junping Du
8db7a8c3ae YARN-6271. yarn rmadin -getGroups returns information from standby RM. Contributed by Jian He. 2017-03-03 14:39:31 -08:00
Ray Chiang
2148b83993 YARN-6218. Fix TestAMRMClient when using FairScheduler. (Miklos Szegedi via rchiang) 2017-03-03 13:04:51 -08:00
Jason Lowe
e58fc76030 YARN-6263. NMTokenSecretManagerInRM.createAndGetNMToken is not thread safe. Contributed by Haibo Chen 2017-03-03 08:23:08 -06:00
Jian He
235203dffd YARN-6153. KeepContainer does not work when AM retry window is set. Contributed by kyungwan nam 2017-02-28 13:23:36 -08:00
Xuan
e0bb867c3f YARN-6189: Improve application status log message when RM restarted when
app is in NEW state. Contributed by Junping Du
2017-02-28 11:04:56 -08:00
Wangda Tan
eac6b4c35c YARN-6216. Unify Container Resizing code paths with Container Updates making it scheduler agnostic. (Arun Suresh via wangda) 2017-02-28 10:35:50 -08:00
Karthik Kambatla
f187d63816 YARN-6231. FairSchedulerTestBase helper methods should call scheduler.update to avoid flakiness. (kasha) 2017-02-27 22:10:57 -08:00
Naganarasimha
5f5b031d1f YARN-5703. ReservationAgents are not correctly configured. Contributed by Manikandan R. 2017-02-27 20:38:29 +05:30
Karthik Kambatla
fbfe86deea YARN-6172. FSLeafQueue demand update needs to be atomic. (Miklos Szegedi via kasha) 2017-02-26 20:36:33 -08:00
Karthik Kambatla
815d53506f YARN-6215. FairScheduler preemption and update should not run concurrently. (Tao Jie via kasha) 2017-02-26 20:16:36 -08:00
Karthik Kambatla
694e680d20 YARN-6222. TestFairScheduler.testReservationMetrics is flaky. (Yufei Gu via kasha) 2017-02-23 15:21:52 -08:00
Sunil G
a207aa9930 YARN-6211. Synchronization improvement for moveApplicationAcrossQueues and updateApplicationPriority. Contributed by Bibin A Chundatt. 2017-02-23 14:19:07 +05:30
Karthik Kambatla
b10e962224 YARN-6194. Cluster capacity in SchedulingPolicy is updated only on allocation file reload. (Yufei Gu via kasha) 2017-02-22 15:58:49 -08:00
Karthik Kambatla
718ad9f6ee YARN-6210. FairScheduler: Node reservations can interfere with preemption. (kasha) 2017-02-22 15:46:07 -08:00
Wangda Tan
1a6ca75f38 YARN-6143. Fix incompatible issue caused by YARN-3583. (Sunil G via wangda) 2017-02-22 11:17:09 -08:00
Karthik Kambatla
dbbfcf74ab YARN-6193. FairScheduler might not trigger preemption when using DRF. (kasha) 2017-02-17 14:07:31 -08:00
Daniel Templeton
c7a36e6130 YARN-6125. The application attempt's diagnostic message should have a maximum size
(Contributed by Andras Piros via Daniel Templeton)
2017-02-17 13:40:58 -08:00
Daniel Templeton
9a92837786 YARN-6188. Fix OOM issue with decommissioningNodesWatcher in the case of clusters with
large number of nodes (Contributed by Ajay Jadhav via Daniel Templeton)
2017-02-17 13:13:46 -08:00
Karthik Kambatla
a77f432449 YARN-6171. ConcurrentModificationException on FSAppAttempt.containersToPreempt. (Miklos Szegedi via kasha) 2017-02-16 14:54:58 -08:00
Rohith Sharma K S
e63a7814d2 YARN-6200. addendum to fix compilation error caused by reverting YARN-5068. 2017-02-16 18:19:57 +05:30
Rohith Sharma K S
a393e84c6f YARN-6200. Reverting since the same functionality achieved by YARN-1623.
Revert "YARN-5068. Expose scheduler queue to application master. (Harish Jaiprakash via rohithsharmaks)"

This reverts commit b7ac85259c.
2017-02-16 18:00:25 +05:30
Karthik Kambatla
74dd142250 YARN-5798. Set UncaughtExceptionHandler for all FairScheduler threads. (Yufei Gu via kasha) 2017-02-16 00:03:09 -08:00
Karthik Kambatla
11be3f70e0 YARN-4212. FairScheduler: Can't create a DRF queue under a FAIR policy queue. (Yufei Gu via kasha) 2017-02-15 23:51:22 -08:00
Karthik Kambatla
6c25dbcdc0 YARN-6163. FS Preemption is a trickle for severely starved applications. (kasha) 2017-02-15 23:16:12 -08:00
Varun Saxena
b7613e0f40 YARN-6156. AM blacklisting to consider node label partition (Bibin A Chundatt via Varun Saxena) 2017-02-15 14:48:17 +05:30
Karthik Kambatla
353a9b2d91 YARN-6061. Addendum. Remove extraneous change. 2017-02-14 15:19:52 -08:00
Karthik Kambatla
652679aa8a YARN-6061. Add an UncaughtExceptionHandler for critical threads in RM. (Yufei Gu via kasha) 2017-02-14 13:39:41 -08:00
Arun Suresh
aaf106fde3 YARN-5966. AMRMClient changes to support ExecutionType update. (asuresh) 2017-02-14 06:09:10 -08:00
Karthik Kambatla
646c6d6509 YARN-3933. FairScheduler: Multiple calls to completedContainer are not safe. (Shiwei Guo and Miklos Szegedi via kasha) 2017-02-13 11:26:30 -08:00
Karthik Kambatla
08f93978f3 YARN-6144. FairScheduler: preempted resources can become negative. (Miklos Szegedi via kasha) 2017-02-09 14:45:04 -08:00
Karthik Kambatla
9b85053583 YARN-6112. UpdateCallDuration is calculated only when debug logging is enabled. (Yufei Gu via kasha) 2017-02-09 13:09:32 -08:00
Wangda Tan
5fb723bb77 YARN-5889. Improve and refactor user-limit calculation in Capacity Scheduler. (Sunil G via wangda) 2017-02-09 10:23:50 -08:00
Daniel Templeton
3e06475307 YARN-4658. Typo in o.a.h.yarn.server.resourcemanager.scheduler.fair.TestFairScheduler comment (Contributed by Udai Potluri via Daniel Templeton) 2017-01-31 16:25:33 -08:00
Daniel Templeton
87852b6ef4 YARN-6103. Log updates for ZKRMStateStore (Contributed by Daniel Sturman via Daniel Templeton) 2017-01-30 21:44:48 -08:00
Karthik Kambatla
11e44bdda7 YARN-6131. FairScheduler: Lower update interval for faster tests. (kasha) 2017-01-30 13:35:23 -08:00
Sunil G
165f07f51a YARN-6123. [YARN-5864] Add a test to make sure queues of orderingPolicy will be updated when childQueues is added or removed. Contributed by Wangda Tan. 2017-01-27 18:37:51 +05:30
Daniel Templeton
f85b74ccf9 YARN-4975. Fair Scheduler: exception thrown when a parent queue marked 'parent' has configured child queues
(Contributed by Yufei Gu via Daniel Templeton)
2017-01-26 10:31:09 -08:00
Karthik Kambatla
abedb8a9d8 YARN-5830. FairScheduler: Avoid preempting AM containers. (Yufei Gu via kasha) 2017-01-25 12:17:28 -08:00
Rohith Sharma K S
0101267d9d YARN-6082. Invalid REST api response for getApps since queueUsagePercentage is coming as INF. Contributed by Sunil G. 2017-01-24 10:59:55 +05:30
Wangda Tan
ce832059db YARN-5864. Capacity Scheduler - Queue Priorities. (wangda) 2017-01-23 10:52:14 -08:00
Jason Lowe
69fa81679f YARN-5910. Support for multi-cluster delegation tokens. Contributed by Jian He 2017-01-23 17:12:51 +00:00
Sunil G
3fa0d540df YARN-6031. Application recovery has failed when node label feature is turned off during RM recovery. Contributed by Ying Zhang. 2017-01-23 12:19:35 +05:30
Sangjin Lee
b01514f65b YARN-5928. Move ATSv2 HBase backend code into a new module that is only dependent at runtime by yarn servers. Contributed by Haibo Chen. 2017-01-19 20:52:55 -08:00
Andrew Wang
5d8b80ea9b Preparing for 3.0.0-alpha3 development 2017-01-19 15:50:07 -08:00
Wangda Tan
72054a817d YARN-5556. CapacityScheduler: Support deleting queues without requiring a RM restart. (Naganarasimha G R via wangda) 2017-01-18 13:31:33 -08:00
Karthik Kambatla
e224c96234 YARN-5831. FairScheduler: Propagate allowPreemptionFrom flag all the way down to the app. (Yufei Gu via kasha) 2017-01-17 17:01:31 -08:00
Daniel Templeton
695f110f93 YARN-6071. Fix incompatible API change on AM-RM protocol due to YARN-3866 (trunk only)
(Contributed by Wangda Tan via Daniel Templeton)
2017-01-17 12:55:47 -08:00
Sunil G
d3170f9eba YARN-6081. LeafQueue#getTotalPendingResourcesConsideringUserLimit should deduct reserved from pending to avoid unnecessary preemption of reserved container. Contributed by Wangda Tan. 2017-01-13 18:22:29 +05:30
Naganarasimha
a6b06f7179 YARN-6072. RM unable to start in secure mode. Contributed by Ajith S. 2017-01-12 06:40:41 +05:30
Daniel Templeton
7979939428 YARN-5554. MoveApplicationAcrossQueues does not check user permission on the target queue
(Contributed by Wilfred Spiegelenburg via Daniel Templeton)
2017-01-11 14:34:10 -08:00
Jason Lowe
357eab9566 YARN-5416. TestRMRestart#testRMRestartWaitForPreviousAMToFinish failed intermittently due to not wait SchedulerApplicationAttempt to be stopped. Contributed by Junping Du 2017-01-11 17:13:37 +00:00
Junping Du
4db119b7b5 YARN-6079. Fix simple spelling errors in yarn test code. Contributed by vijay. 2017-01-10 18:20:27 -08:00
Sunil G
9594c35dcb YARN-5899. Debug log in AbstractCSQueue#canAssignToThisQueue needs improvement. Contributed by Ying Zhang. 2017-01-10 14:08:01 +05:30
Junping Du
945db55f2e YARN-4148. When killing app, RM releases app's resource before they are released by NM. Contributed by Jason Lowe. 2017-01-09 18:14:46 -08:00
Wangda Tan
287d3d6804 YARN-3955. Support for application priority ACLs in queues of CapacityScheduler. (Sunil G via wangda) 2017-01-09 08:40:39 -08:00
Daniel Templeton
ac16400e1f YARN-6022. Revert changes of AbstractResourceRequest (Contributed by Wangda Tan via Daniel Templeton) 2017-01-07 08:24:30 -08:00
Naganarasimha
a59df15757 YARN-6015. AsyncDispatcher thread name can be set to improved debugging. Contributed by Ajith S. 2017-01-07 08:11:58 +05:30
Jian He
020316458d YARN-6009. Skip validating app timeout value on recovery. Contributed by Rohith Sharma K S 2017-01-06 18:19:09 -08:00
Arun Suresh
2977bc6a14 YARN-6040. Introduce api independent PendingAsk to replace usage of ResourceRequest within Scheduler classes. (Wangda Tan via asuresh) 2017-01-06 09:59:57 -08:00
Wangda Tan
0a55bd841e YARN-5959. RM changes to support change of container ExecutionType. (Arun Suresh via wangda) 2017-01-05 10:31:05 -08:00
Rohith Sharma K S
e49e0a6e37 YARN-5988. RM unable to start in secure setup. Contributed by Ajith S. 2017-01-04 12:09:29 +05:30
Wangda Tan
f69a107aec YARN-6025. Fix synchronization issues of AbstractYarnScheduler#nodeUpdate and its implementations. (Naganarasimha G R via wangda)
(cherry picked from commit e0f2379312)
2017-01-03 14:53:36 -08:00
Wangda Tan
ab1faa4ba8 Revert "Fix synchronization issues of AbstractYarnScheduler#nodeUpdate and its implementations. (Naganarasimha G R via wangda)" to add correct JIRA number
This reverts commit e0f2379312.
2017-01-03 14:53:13 -08:00
Wangda Tan
e0f2379312 Fix synchronization issues of AbstractYarnScheduler#nodeUpdate and its implementations. (Naganarasimha G R via wangda) 2017-01-03 14:46:41 -08:00
Daniel Templeton
165d01a73e YARN-5931. Document timeout interfaces CLI and REST APIs (Contributed by Rohith Sharma K S via Daniel Templeton) 2016-12-30 08:41:52 -08:00
Robert Kanter
f216276d21 YARN-4882. Change the log level to DEBUG for recovering completed applications (templedf via rkanter) 2016-12-28 15:21:52 -08:00
Sunil G
9ca54f4810 YARN-5906. Update AppSchedulingInfo to use SchedulingPlacementSet. Contributed by Wangda Tan. 2016-12-28 22:48:19 +05:30
Sunil G
f6715b26b6 YARN-6024. Capacity Scheduler 'continuous reservation looking' doesn't work when sum of queue's used and reserved resources is equal to max. Contributed by Wangda Tan. 2016-12-28 12:33:02 +05:30
Wangda Tan
0840b4329b YARN-5756. Add state-machine implementation for scheduler queues. (Xuan Gong via wangda) 2016-12-27 21:18:33 -08:00
Robert Kanter
1bbd023275 YARN-5962. Spelling errors in logging and exceptions for resource manager code (gsohn via rkanter) 2016-12-27 13:35:34 -08:00
Daniel Templeton
e216e8e233 HADOOP-13932. Fix indefinite article in comments (Contributed by LiXin Ge via Daniel Templeton) 2016-12-27 13:03:16 -08:00