[ 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)