hadoop git commit: HDFS-10183. Prevent race condition during class initialization. Contributed by Pavel Avgustinov.
Repository: hadoop Updated Branches: refs/heads/trunk 28e224439 -> f40969a14 HDFS-10183. Prevent race condition during class initialization. Contributed by Pavel Avgustinov. Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/f40969a1 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/f40969a1 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/f40969a1 Branch: refs/heads/trunk Commit: f40969a141ec6aff254c41e4185cc61ea9e4e554 Parents: 28e2244 Author: Sangjin Lee Authored: Fri Apr 20 20:33:10 2018 -0700 Committer: Sangjin Lee Committed: Fri Apr 20 20:33:10 2018 -0700 -- .../apache/hadoop/hdfs/server/namenode/FSEditLogAsync.java | 8 .../org/apache/hadoop/hdfs/server/namenode/FSEditLogOp.java | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/f40969a1/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogAsync.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogAsync.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogAsync.java index c14a310..5990c22 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogAsync.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogAsync.java @@ -40,7 +40,7 @@ class FSEditLogAsync extends FSEditLog implements Runnable { // use separate mutex to avoid possible deadlock when stopping the thread. private final Object syncThreadLock = new Object(); private Thread syncThread; - private static ThreadLocal threadEdit = new ThreadLocal(); + private static final ThreadLocal THREAD_EDIT = new ThreadLocal(); // requires concurrent access from caller threads and syncing thread. private final BlockingQueue editPendingQ = @@ -114,16 +114,16 @@ class FSEditLogAsync extends FSEditLog implements Runnable { @Override void logEdit(final FSEditLogOp op) { Edit edit = getEditInstance(op); -threadEdit.set(edit); +THREAD_EDIT.set(edit); enqueueEdit(edit); } @Override public void logSync() { -Edit edit = threadEdit.get(); +Edit edit = THREAD_EDIT.get(); if (edit != null) { // do NOT remove to avoid expunge & rehash penalties. - threadEdit.set(null); + THREAD_EDIT.set(null); if (LOG.isDebugEnabled()) { LOG.debug("logSync " + edit); } http://git-wip-us.apache.org/repos/asf/hadoop/blob/f40969a1/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogOp.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogOp.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogOp.java index c0daaf1..8293a82 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogOp.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogOp.java @@ -157,7 +157,7 @@ public abstract class FSEditLogOp { int rpcCallId; public static class OpInstanceCache { -private static ThreadLocal cache = +private static final ThreadLocal CACHE = new ThreadLocal() { @Override protected OpInstanceCacheMap initialValue() { @@ -188,7 +188,7 @@ public abstract class FSEditLogOp { @SuppressWarnings("unchecked") public T get(FSEditLogOpCodes opCode) { - return useCache ? (T)cache.get().get(opCode) : (T)newInstance(opCode); + return useCache ? (T)CACHE.get().get(opCode) : (T)newInstance(opCode); } private static FSEditLogOp newInstance(FSEditLogOpCodes opCode) { - To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org
hadoop git commit: HDFS-10183. Prevent race condition during class initialization. Contributed by Pavel Avgustinov.
Repository: hadoop Updated Branches: refs/heads/branch-3.1 5556cf397 -> 9f648f6e5 HDFS-10183. Prevent race condition during class initialization. Contributed by Pavel Avgustinov. (cherry picked from commit f40969a141ec6aff254c41e4185cc61ea9e4e554) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/9f648f6e Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/9f648f6e Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/9f648f6e Branch: refs/heads/branch-3.1 Commit: 9f648f6e59b2ab21d0200d042ce6ea5e4eb2518c Parents: 5556cf3 Author: Sangjin Lee Authored: Fri Apr 20 20:33:10 2018 -0700 Committer: Sangjin Lee Committed: Fri Apr 20 20:36:31 2018 -0700 -- .../apache/hadoop/hdfs/server/namenode/FSEditLogAsync.java | 8 .../org/apache/hadoop/hdfs/server/namenode/FSEditLogOp.java | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/9f648f6e/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogAsync.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogAsync.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogAsync.java index c14a310..5990c22 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogAsync.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogAsync.java @@ -40,7 +40,7 @@ class FSEditLogAsync extends FSEditLog implements Runnable { // use separate mutex to avoid possible deadlock when stopping the thread. private final Object syncThreadLock = new Object(); private Thread syncThread; - private static ThreadLocal threadEdit = new ThreadLocal(); + private static final ThreadLocal THREAD_EDIT = new ThreadLocal(); // requires concurrent access from caller threads and syncing thread. private final BlockingQueue editPendingQ = @@ -114,16 +114,16 @@ class FSEditLogAsync extends FSEditLog implements Runnable { @Override void logEdit(final FSEditLogOp op) { Edit edit = getEditInstance(op); -threadEdit.set(edit); +THREAD_EDIT.set(edit); enqueueEdit(edit); } @Override public void logSync() { -Edit edit = threadEdit.get(); +Edit edit = THREAD_EDIT.get(); if (edit != null) { // do NOT remove to avoid expunge & rehash penalties. - threadEdit.set(null); + THREAD_EDIT.set(null); if (LOG.isDebugEnabled()) { LOG.debug("logSync " + edit); } http://git-wip-us.apache.org/repos/asf/hadoop/blob/9f648f6e/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogOp.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogOp.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogOp.java index c0daaf1..8293a82 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogOp.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogOp.java @@ -157,7 +157,7 @@ public abstract class FSEditLogOp { int rpcCallId; public static class OpInstanceCache { -private static ThreadLocal cache = +private static final ThreadLocal CACHE = new ThreadLocal() { @Override protected OpInstanceCacheMap initialValue() { @@ -188,7 +188,7 @@ public abstract class FSEditLogOp { @SuppressWarnings("unchecked") public T get(FSEditLogOpCodes opCode) { - return useCache ? (T)cache.get().get(opCode) : (T)newInstance(opCode); + return useCache ? (T)CACHE.get().get(opCode) : (T)newInstance(opCode); } private static FSEditLogOp newInstance(FSEditLogOpCodes opCode) { - To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org
hadoop git commit: HDFS-10183. Prevent race condition during class initialization. Contributed by Pavel Avgustinov.
Repository: hadoop Updated Branches: refs/heads/branch-3.0 4bff2df13 -> 6becb3de0 HDFS-10183. Prevent race condition during class initialization. Contributed by Pavel Avgustinov. (cherry picked from commit f40969a141ec6aff254c41e4185cc61ea9e4e554) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/6becb3de Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/6becb3de Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/6becb3de Branch: refs/heads/branch-3.0 Commit: 6becb3de0b95245b36f967be18ec3b1ae91c4a08 Parents: 4bff2df Author: Sangjin Lee Authored: Fri Apr 20 20:33:10 2018 -0700 Committer: Sangjin Lee Committed: Fri Apr 20 21:10:39 2018 -0700 -- .../apache/hadoop/hdfs/server/namenode/FSEditLogAsync.java | 8 .../org/apache/hadoop/hdfs/server/namenode/FSEditLogOp.java | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/6becb3de/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogAsync.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogAsync.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogAsync.java index c14a310..5990c22 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogAsync.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogAsync.java @@ -40,7 +40,7 @@ class FSEditLogAsync extends FSEditLog implements Runnable { // use separate mutex to avoid possible deadlock when stopping the thread. private final Object syncThreadLock = new Object(); private Thread syncThread; - private static ThreadLocal threadEdit = new ThreadLocal(); + private static final ThreadLocal THREAD_EDIT = new ThreadLocal(); // requires concurrent access from caller threads and syncing thread. private final BlockingQueue editPendingQ = @@ -114,16 +114,16 @@ class FSEditLogAsync extends FSEditLog implements Runnable { @Override void logEdit(final FSEditLogOp op) { Edit edit = getEditInstance(op); -threadEdit.set(edit); +THREAD_EDIT.set(edit); enqueueEdit(edit); } @Override public void logSync() { -Edit edit = threadEdit.get(); +Edit edit = THREAD_EDIT.get(); if (edit != null) { // do NOT remove to avoid expunge & rehash penalties. - threadEdit.set(null); + THREAD_EDIT.set(null); if (LOG.isDebugEnabled()) { LOG.debug("logSync " + edit); } http://git-wip-us.apache.org/repos/asf/hadoop/blob/6becb3de/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogOp.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogOp.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogOp.java index c0daaf1..8293a82 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogOp.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogOp.java @@ -157,7 +157,7 @@ public abstract class FSEditLogOp { int rpcCallId; public static class OpInstanceCache { -private static ThreadLocal cache = +private static final ThreadLocal CACHE = new ThreadLocal() { @Override protected OpInstanceCacheMap initialValue() { @@ -188,7 +188,7 @@ public abstract class FSEditLogOp { @SuppressWarnings("unchecked") public T get(FSEditLogOpCodes opCode) { - return useCache ? (T)cache.get().get(opCode) : (T)newInstance(opCode); + return useCache ? (T)CACHE.get().get(opCode) : (T)newInstance(opCode); } private static FSEditLogOp newInstance(FSEditLogOpCodes opCode) { - To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org
hadoop git commit: HDFS-10183. Prevent race condition during class initialization. Contributed by Pavel Avgustinov.
Repository: hadoop Updated Branches: refs/heads/branch-2.9 a32c05e0a -> 6c885edac HDFS-10183. Prevent race condition during class initialization. Contributed by Pavel Avgustinov. (cherry picked from commit f40969a141ec6aff254c41e4185cc61ea9e4e554) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/6c885eda Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/6c885eda Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/6c885eda Branch: refs/heads/branch-2.9 Commit: 6c885edacd6fa247ca9cdea5033f053aa27fb09a Parents: a32c05e Author: Sangjin Lee Authored: Fri Apr 20 20:33:10 2018 -0700 Committer: Sangjin Lee Committed: Fri Apr 20 21:13:29 2018 -0700 -- .../apache/hadoop/hdfs/server/namenode/FSEditLogAsync.java | 8 .../org/apache/hadoop/hdfs/server/namenode/FSEditLogOp.java | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/6c885eda/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogAsync.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogAsync.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogAsync.java index c14a310..5990c22 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogAsync.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogAsync.java @@ -40,7 +40,7 @@ class FSEditLogAsync extends FSEditLog implements Runnable { // use separate mutex to avoid possible deadlock when stopping the thread. private final Object syncThreadLock = new Object(); private Thread syncThread; - private static ThreadLocal threadEdit = new ThreadLocal(); + private static final ThreadLocal THREAD_EDIT = new ThreadLocal(); // requires concurrent access from caller threads and syncing thread. private final BlockingQueue editPendingQ = @@ -114,16 +114,16 @@ class FSEditLogAsync extends FSEditLog implements Runnable { @Override void logEdit(final FSEditLogOp op) { Edit edit = getEditInstance(op); -threadEdit.set(edit); +THREAD_EDIT.set(edit); enqueueEdit(edit); } @Override public void logSync() { -Edit edit = threadEdit.get(); +Edit edit = THREAD_EDIT.get(); if (edit != null) { // do NOT remove to avoid expunge & rehash penalties. - threadEdit.set(null); + THREAD_EDIT.set(null); if (LOG.isDebugEnabled()) { LOG.debug("logSync " + edit); } http://git-wip-us.apache.org/repos/asf/hadoop/blob/6c885eda/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogOp.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogOp.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogOp.java index 1ea2b81..33bc1c3 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogOp.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogOp.java @@ -148,7 +148,7 @@ public abstract class FSEditLogOp { int rpcCallId; public static class OpInstanceCache { -private static ThreadLocal cache = +private static final ThreadLocal CACHE = new ThreadLocal() { @Override protected OpInstanceCacheMap initialValue() { @@ -179,7 +179,7 @@ public abstract class FSEditLogOp { @SuppressWarnings("unchecked") public T get(FSEditLogOpCodes opCode) { - return useCache ? (T)cache.get().get(opCode) : (T)newInstance(opCode); + return useCache ? (T)CACHE.get().get(opCode) : (T)newInstance(opCode); } private static FSEditLogOp newInstance(FSEditLogOpCodes opCode) { - To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org
hadoop git commit: HDFS-10183. Prevent race condition during class initialization. Contributed by Pavel Avgustinov.
Repository: hadoop Updated Branches: refs/heads/branch-2.8 e3a49fe1d -> ac2bea815 HDFS-10183. Prevent race condition during class initialization. Contributed by Pavel Avgustinov. (cherry picked from commit f40969a141ec6aff254c41e4185cc61ea9e4e554) Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/ac2bea81 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/ac2bea81 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/ac2bea81 Branch: refs/heads/branch-2.8 Commit: ac2bea815fae9aff0ed08118228af65164d9171a Parents: e3a49fe Author: Sangjin Lee Authored: Fri Apr 20 20:33:10 2018 -0700 Committer: Sangjin Lee Committed: Fri Apr 20 21:14:46 2018 -0700 -- .../apache/hadoop/hdfs/server/namenode/FSEditLogAsync.java | 8 .../org/apache/hadoop/hdfs/server/namenode/FSEditLogOp.java | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) -- http://git-wip-us.apache.org/repos/asf/hadoop/blob/ac2bea81/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogAsync.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogAsync.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogAsync.java index c14a310..5990c22 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogAsync.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogAsync.java @@ -40,7 +40,7 @@ class FSEditLogAsync extends FSEditLog implements Runnable { // use separate mutex to avoid possible deadlock when stopping the thread. private final Object syncThreadLock = new Object(); private Thread syncThread; - private static ThreadLocal threadEdit = new ThreadLocal(); + private static final ThreadLocal THREAD_EDIT = new ThreadLocal(); // requires concurrent access from caller threads and syncing thread. private final BlockingQueue editPendingQ = @@ -114,16 +114,16 @@ class FSEditLogAsync extends FSEditLog implements Runnable { @Override void logEdit(final FSEditLogOp op) { Edit edit = getEditInstance(op); -threadEdit.set(edit); +THREAD_EDIT.set(edit); enqueueEdit(edit); } @Override public void logSync() { -Edit edit = threadEdit.get(); +Edit edit = THREAD_EDIT.get(); if (edit != null) { // do NOT remove to avoid expunge & rehash penalties. - threadEdit.set(null); + THREAD_EDIT.set(null); if (LOG.isDebugEnabled()) { LOG.debug("logSync " + edit); } http://git-wip-us.apache.org/repos/asf/hadoop/blob/ac2bea81/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogOp.java -- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogOp.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogOp.java index ae9bfe1..7531ae6 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogOp.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSEditLogOp.java @@ -148,7 +148,7 @@ public abstract class FSEditLogOp { int rpcCallId; public static class OpInstanceCache { -private static ThreadLocal cache = +private static final ThreadLocal CACHE = new ThreadLocal() { @Override protected OpInstanceCacheMap initialValue() { @@ -179,7 +179,7 @@ public abstract class FSEditLogOp { @SuppressWarnings("unchecked") public T get(FSEditLogOpCodes opCode) { - return useCache ? (T)cache.get().get(opCode) : (T)newInstance(opCode); + return useCache ? (T)CACHE.get().get(opCode) : (T)newInstance(opCode); } private static FSEditLogOp newInstance(FSEditLogOpCodes opCode) { - To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-commits-h...@hadoop.apache.org