You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@asterixdb.apache.org by "ASF subversion and git services (JIRA)" <ji...@apache.org> on 2017/09/30 03:28:03 UTC

[jira] [Commented] (ASTERIXDB-2118) Older Memory Component gets flushed to disk first

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

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

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

[ASTERIXDB-2118][STO] Ensure flush ordering of memory components

- user model changes: no
- storage format changes: no
- interface changes: no

- Fix the bug of AsynchronousScheduler by waking up the next
flush only when the current operation is a FLUSH operation

Change-Id: I7de4a1625fdd3faaa07f65be2ebc714ec7564b29
Reviewed-on: https://asterix-gerrit.ics.uci.edu/2038
Reviewed-by: Ian Maxon <im...@apache.org>
Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
Contrib: Jenkins <je...@fulliautomatix.ics.uci.edu>
Integration-Tests: Jenkins <je...@fulliautomatix.ics.uci.edu>


> Older Memory Component gets flushed to disk first
> -------------------------------------------------
>
>                 Key: ASTERIXDB-2118
>                 URL: https://issues.apache.org/jira/browse/ASTERIXDB-2118
>             Project: Apache AsterixDB
>          Issue Type: Bug
>          Components: STO - Storage
>            Reporter: Chen Luo
>            Assignee: Chen Luo
>
> Currently we have two memory components, say M1 and M2, as double buffering. The AysnchronousScheduler needs to guarantee M1 and M2 are flushed in a proper order. However, the current scheduler is buggy. Consider the following event sequences.
> 1. M1 is full
> 2. schedule flush M1
> 3. activate M2
> 4. M2 is full
> 5. schedule flush M2 (cannot be scheduled since M1 is flushing)
> 6. A merge operation is finished
> At this moment, line 59 of AysnchronousScheduler is executed, and it schedules M2.
> Thus, M2 could be finished earlier before M1, resulting in wrong order of flushed disk components on disk.



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