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

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

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

[ASTERIXDB-2130][TX] Prevent Dropping Index Pending Txn Completion

- user model changes: no
- storage format changes: no
- interface changes: yes
  Added resource id to ITransactionOperationTracker
  before/after txn operations.

Details:
 - Currently, an index could be evicted/dropped while a transaction
   waiting for its completion (commit/rollback). This change prevents
   that by incrementing the reference counter of the indexes registered
   in the transaction.
 - Add test case.

Change-Id: If6a938cbb5a9c3b7f5cc59505c07ae45b3425223
Reviewed-on: https://asterix-gerrit.ics.uci.edu/2132
Sonar-Qube: Jenkins <jenk...@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenk...@fulliautomatix.ics.uci.edu>
Contrib: Jenkins <jenk...@fulliautomatix.ics.uci.edu>
Integration-Tests: Jenkins <jenk...@fulliautomatix.ics.uci.edu>
Reviewed-by: Michael Blow <mb...@apache.org>


> NPE in RecoveryManager.undo
> ---------------------------
>
>                 Key: ASTERIXDB-2130
>                 URL: https://issues.apache.org/jira/browse/ASTERIXDB-2130
>             Project: Apache AsterixDB
>          Issue Type: Bug
>          Components: TX - Transactions
>            Reporter: Till
>            Assignee: Murtadha Hubail
>
> RecoveryManager.undo throws an NPE, as the result of 
> DatasetLifecycleManager.getIndex is not checked:
> {noformat}
> 12:29:41 Oct 11, 2017 7:30:38 PM 
> org.apache.hyracks.control.cc.executor.JobExecutor notifyTaskComplete
> 12:29:41 WARNING: Spurious task complete notification: 
> TAID:TID:ANID:ODID:2:0:1:0 Current state = ABORTED
> 12:29:41 Oct 11, 2017 7:30:38 PM org.apache.asterix.app.nc.RecoveryManager 
> rollbackTransaction
> 12:29:41 INFO: undoing loser transaction's effect
> 12:29:41 Oct 11, 2017 7:30:38 PM 
> org.apache.asterix.transaction.management.service.transaction.TransactionManager
>  abortTransaction
> 12:29:41 SEVERE: Could not complete rollback! System is in an inconsistent 
> state
> 12:29:41 java.lang.IllegalStateException: Failed to undo
> 12:29:41      at 
> org.apache.asterix.app.nc.RecoveryManager.undo(RecoveryManager.java:690)
> 12:29:41      at 
> org.apache.asterix.app.nc.RecoveryManager.rollbackTransaction(RecoveryManager.java:630)
> 12:29:41      at 
> org.apache.asterix.transaction.management.service.transaction.TransactionManager.abortTransaction(TransactionManager.java:65)
> 12:29:41      at 
> org.apache.asterix.transaction.management.service.transaction.TransactionManager.completedTransaction(TransactionManager.java:132)
> 12:29:41      at 
> org.apache.asterix.runtime.job.listener.JobEventListenerFactory$1.jobletFinish(JobEventListenerFactory.java:58)
> 12:29:41 Oct 11, 2017 7:30:38 PM org.apache.asterix.app.nc.RecoveryManager 
> rollbackTransaction
> 12:29:41 INFO: rollbacking transaction log records from 341833971 to 342015311
> 12:29:41      at 
> org.apache.hyracks.control.nc.Joblet.performCleanup(Joblet.java:317)
> 12:29:41      at 
> org.apache.hyracks.control.nc.Joblet.removeTask(Joblet.java:152)
> 12:29:41      at 
> org.apache.hyracks.control.nc.work.NotifyTaskCompleteWork.run(NotifyTaskCompleteWork.java:49)
> 12:29:41 Oct 11, 2017 7:30:38 PM org.apache.asterix.app.nc.RecoveryManager 
> rollbackTransaction
> 12:29:41 INFO: collecting loser transaction's LSNs from 341833971 to 342015311
> 12:29:41      at 
> org.apache.hyracks.control.common.work.WorkQueue$WorkerThread.run(WorkQueue.java:127)
> 12:29:41 Caused by: java.lang.NullPointerException
> 12:29:41      at 
> org.apache.asterix.app.nc.RecoveryManager.undo(RecoveryManager.java:666)
> 12:29:41      ... 8 more
> 12:29:41 Oct 11, 2017 7:30:38 PM org.apache.asterix.app.nc.RecoveryManager 
> rollbackTransaction
> 12:29:41 INFO: undoing loser transaction's effect
> 12:29:41 Oct 11, 2017 7:30:38 PM 
> org.apache.hyracks.control.common.work.WorkQueue$WorkerThread 
> auditWaitsAndBlocks
> 12:29:41 WARNING: Work NotifyTaskCompleteWork:TAID:TID:ANID:ODID:2:0:3:0 
> waited 1 times (~0ms), blocked 3 times (~0ms)
> 12:29:41 Exception in thread "Worker:asterix_nc2" java.lang.Error: 
> org.apache.asterix.common.exceptions.ACIDException: Could not complete 
> rollback! System is in an inconsistent state
> 12:29:41      at 
> org.apache.asterix.runtime.job.listener.JobEventListenerFactory$1.jobletFinish(JobEventListenerFactory.java:61)
> 12:29:41      at 
> org.apache.hyracks.control.nc.Joblet.performCleanup(Joblet.java:317)
> 12:29:41      at 
> org.apache.hyracks.control.nc.Joblet.removeTask(Joblet.java:152)
> 12:29:41      at 
> org.apache.hyracks.control.nc.work.NotifyTaskCompleteWork.run(NotifyTaskCompleteWork.java:49)
> 12:29:41      at 
> org.apache.hyracks.control.common.work.WorkQueue$WorkerThread.run(WorkQueue.java:127)
> 12:29:41 Caused by: org.apache.asterix.common.exceptions.ACIDException: Could 
> not complete rollback! System is in an inconsistent state
> 12:29:41      at 
> org.apache.asterix.transaction.management.service.transaction.TransactionManager.abortTransaction(TransactionManager.java:73)
> 12:29:41      at 
> org.apache.asterix.transaction.management.service.transaction.TransactionManager.completedTransaction(TransactionManager.java:132)
> 12:29:41      at 
> org.apache.asterix.runtime.job.listener.JobEventListenerFactory$1.jobletFinish(JobEventListenerFactory.java:58)
> 12:29:41      ... 4 more
> 12:29:41 Caused by: java.lang.IllegalStateException: Failed to undo
> 12:29:41      at 
> org.apache.asterix.app.nc.RecoveryManager.undo(RecoveryManager.java:690)
> 12:29:41      at 
> org.apache.asterix.app.nc.RecoveryManager.rollbackTransaction(RecoveryManager.java:630)
> 12:29:41      at 
> org.apache.asterix.transaction.management.service.transaction.TransactionManager.abortTransaction(TransactionManager.java:65)
> 12:29:41      ... 6 more
> 12:29:41 Caused by: java.lang.NullPointerException
> 12:29:41      at 
> org.apache.asterix.app.nc.RecoveryManager.undo(RecoveryManager.java:666)
> 12:29:41      ... 8 more
> 12:29:41 Oct 11, 2017 7:30:38 PM org.apache.asterix.app.nc.RecoveryManager 
> rollbackTransaction
> 12:29:41 INFO: undone loser transaction's effect
> 12:29:41 Oct 11, 2017 7:30:38 PM org.apache.asterix.app.nc.RecoveryManager 
> rollbackTransaction
> 12:29:41 INFO: [RecoveryManager's rollback log count] 
> update/entityCommit/undo:761/0/761
> {noformat}



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

Reply via email to