Merge branch ignite-db-x into ignite-db-2
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/cf5ad2bc Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/cf5ad2bc Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/cf5ad2bc Branch: refs/heads/ignite-db-x-10884 Commit: cf5ad2bc7139d58364eccfe302d07b8943e28fbd Parents: d67fa20 6d68db9 Author: Alexey Goncharuk <[email protected]> Authored: Wed Apr 27 00:49:06 2016 -0700 Committer: Alexey Goncharuk <[email protected]> Committed: Wed Apr 27 00:49:06 2016 -0700 ---------------------------------------------------------------------- .../internal/pagemem/DirectMemoryUtils.java | 10 + .../ignite/internal/pagemem/FullPageId.java | 44 +++- .../ignite/internal/pagemem/PageIdUtils.java | 89 +++++--- .../ignite/internal/pagemem/PageMemory.java | 3 +- .../internal/pagemem/impl/FullPageIdTable.java | 111 +++++++-- .../ignite/internal/pagemem/impl/PageImpl.java | 9 + .../internal/pagemem/impl/PageMemoryImpl.java | 225 ++++++++++++++++++- .../pagemem/impl/PageIdUtilsSelfTest.java | 39 ++++ .../IgniteDbMultiNodePutGetSelfTest.java | 5 + .../IgniteDbSingleNodePutGetSelfTest.java | 120 ++++++++++ 10 files changed, 578 insertions(+), 77 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/cf5ad2bc/modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageImpl.java ---------------------------------------------------------------------- diff --cc modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageImpl.java index 1e1fb78,28d4a19..91e7798 --- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageImpl.java @@@ -161,12 -165,16 +165,14 @@@ class PageImpl extends AbstractQueuedSy /** {@inheritDoc} */ @Override public ByteBuffer getForWrite() { - Thread th = Thread.currentThread(); + acquire(1); // This call is not reentrant. - if (getExclusiveOwnerThread() != th) { - acquire(1); + assert getExclusiveOwnerThread() == null: fullId(); - setExclusiveOwnerThread(th); + setExclusiveOwnerThread(Thread.currentThread()); - pageMem.writeCurrentTimestamp(ptr); - } ++ pageMem.writeCurrentTimestamp(ptr); + return reset(buf); } http://git-wip-us.apache.org/repos/asf/ignite/blob/cf5ad2bc/modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageMemoryImpl.java ---------------------------------------------------------------------- diff --cc modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageMemoryImpl.java index 09e0df8,4422962..7611675 --- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageMemoryImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageMemoryImpl.java @@@ -214,16 -223,18 +229,21 @@@ public class PageMemoryImpl implement break; } + // Assign page ID according to flags and partition ID. + pageId = PageIdUtils.pageId(partId, flags, pageId); + relPtr = allocateFreePage(); + if (relPtr == INVALID_REL_PTR) + throw new OutOfMemoryException(); + absPtr = absolute(relPtr); - - writePageId(absPtr, pageId); - writePageCacheId(absPtr, cacheId); - writeCurrentTimestamp(absPtr); } + writePageId(absPtr, pageId); ++ writePageCacheId(absPtr, cacheId); ++ writeCurrentTimestamp(absPtr); + // TODO pass an argument to decide whether the page should be cleaned. mem.setMemory(absPtr + PAGE_OVERHEAD, sysPageSize - PAGE_OVERHEAD, (byte)0); http://git-wip-us.apache.org/repos/asf/ignite/blob/cf5ad2bc/modules/indexing/src/test/java/org/apache/ignite/internal/processors/database/IgniteDbSingleNodePutGetSelfTest.java ----------------------------------------------------------------------
