[ 
https://issues.apache.org/jira/browse/ASTERIXDB-2161?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16264009#comment-16264009
 ] 

ASF subversion and git services commented on ASTERIXDB-2161:
------------------------------------------------------------

Commit 98b9d603e8531139a4668af48092e9c961ee41fb in asterixdb's branch 
refs/heads/master from [~luochen01]
[ https://git-wip-us.apache.org/repos/asf?p=asterixdb.git;h=98b9d60 ]

[ASTERIXDB-2161] Fix component id manage lifecycle

- user model changes: no
- storage format changes: no
- interface changes: yes. The interface of LMSIOOperationCallback
is changed

Details:
- The current way of management component ids is not correct,
in presence of that multiple partitions sharing the same primary op
tracker. It's possible when a partition is empty/being flushed,
the next flush is scheduled by another partition, which
will disturb the partition. This patch fixes this by
using the same logic of maintaining flushed LSNs to maintain
component id.
- Extend recycle memory component interface to indicate whether it
switches the new component or not.
- Also fixes [ASTERIXDB-2168] to ensure we do not miss latest flushed
LSNs by advancing io callback before finishing flush

Change-Id: Ifc35184c4d431db9af71cab302439e165ee55f54
Reviewed-on: https://asterix-gerrit.ics.uci.edu/2153
Integration-Tests: Jenkins <jenk...@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenk...@fulliautomatix.ics.uci.edu>
Contrib: Jenkins <jenk...@fulliautomatix.ics.uci.edu>
Reviewed-by: abdullah alamoudi <bamou...@gmail.com>


> java.lang.IllegalStateException when set LSM Memory Component Id
> ----------------------------------------------------------------
>
>                 Key: ASTERIXDB-2161
>                 URL: https://issues.apache.org/jira/browse/ASTERIXDB-2161
>             Project: Apache AsterixDB
>          Issue Type: Bug
>          Components: STO - Storage
>            Reporter: Chen Luo
>            Assignee: Chen Luo
>
> On one NC with multiple partitions, it may through IllegalStateException when 
> we reset the memory component Id. The memory component should receive a 
> larger Id, but for some reason it still receives the old one.
> {code}
> 16:25:40 SEVERE: SEARCH failed to enter components on {"class" : "LSMBTree", 
> "dir" : 
> "/home/jenkins/jenkins/workspace/asterix-gerrit-verify-asterix-app/asterixdb/asterix-app/target/io/dir/asterix_nc1/iodevice1/storage/partition_1/test/LineID_idx_idx_LineID_suppkey",
>  "memory" : 2, "disk" : 1}
> 16:25:40 java.lang.IllegalStateException: LSM memory component receives 
> illegal id. Old id [1510360027993,1510360027993], new id 
> [1510360027993,1510360027993]
> 16:25:40      at 
> org.apache.hyracks.storage.am.lsm.common.impls.AbstractLSMMemoryComponent.resetId(AbstractLSMMemoryComponent.java:276)
> 16:25:40      at 
> org.apache.asterix.common.ioopcallbacks.AbstractLSMIOOperationCallback.recycled(AbstractLSMIOOperationCallback.java:205)
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to