[
https://issues.apache.org/jira/browse/OOZIE-2501?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15400259#comment-15400259
]
Hadoop QA commented on OOZIE-2501:
----------------------------------
Testing JIRA OOZIE-2501
Cleaning local git workspace
----------------------------
{color:green}+1 PATCH_APPLIES{color}
{color:green}+1 CLEAN{color}
{color:green}+1 RAW_PATCH_ANALYSIS{color}
. {color:green}+1{color} the patch does not introduce any @author tags
. {color:green}+1{color} the patch does not introduce any tabs
. {color:green}+1{color} the patch does not introduce any trailing spaces
. {color:green}+1{color} the patch does not introduce any line longer than
132
. {color:green}+1{color} the patch does adds/modifies 2 testcase(s)
{color:green}+1 RAT{color}
. {color:green}+1{color} the patch does not seem to introduce new RAT
warnings
{color:green}+1 JAVADOC{color}
. {color:green}+1{color} the patch does not seem to introduce new Javadoc
warnings
{color:red}-1 COMPILE{color}
. {color:red}-1{color} HEAD does not compile
. {color:red}-1{color} patch does not compile
. {color:green}+1{color} the patch does not seem to introduce new javac
warnings
{color:green}+1 BACKWARDS_COMPATIBILITY{color}
. {color:green}+1{color} the patch does not change any JPA
Entity/Colum/Basic/Lob/Transient annotations
. {color:green}+1{color} the patch does not modify JPA files
{color:red}-1 TESTS{color}
. Tests run: 1795
. Tests failed: 130
. Tests errors: 323
. The patch failed the following testcases:
.
testCoordKillXCommandUniqueness(org.apache.oozie.command.coord.TestCoordKillXCommand)
.
testCoordKillRemovePushMissingDeps(org.apache.oozie.command.coord.TestCoordKillXCommand)
.
testTimeoutTimingOutWriteLockThreads(org.apache.oozie.service.TestZKLocksService)
.
testTimeoutTimingOutWriteLockOozies(org.apache.oozie.service.TestZKLocksService)
. testReadLockThreads(org.apache.oozie.service.TestZKLocksService)
. testReadLockOozies(org.apache.oozie.service.TestZKLocksService)
. testReadWriteLockThreads(org.apache.oozie.service.TestZKLocksService)
. testReadWriteLockOozies(org.apache.oozie.service.TestZKLocksService)
. testWriteReadLockThreads(org.apache.oozie.service.TestZKLocksService)
. testWriteReadLockOozies(org.apache.oozie.service.TestZKLocksService)
. testReentrantMultipleCall(org.apache.oozie.service.TestZKLocksService)
. testWaitWriteLockThreads(org.apache.oozie.service.TestZKLocksService)
. testWaitWriteLockOozies(org.apache.oozie.service.TestZKLocksService)
. testNoWaitWriteLockThreads(org.apache.oozie.service.TestZKLocksService)
. testNoWaitWriteLockOozies(org.apache.oozie.service.TestZKLocksService)
.
testTimeoutWaitingWriteLockThreads(org.apache.oozie.service.TestZKLocksService)
.
testTimeoutWaitingWriteLockOozies(org.apache.oozie.service.TestZKLocksService)
. testInterrupt(org.apache.oozie.service.TestCallableQueueService)
.
testInterruptsWithCompositeCallable(org.apache.oozie.service.TestCallableQueueService)
.
testInterruptsInCompositeCallable(org.apache.oozie.service.TestCallableQueueService)
.
testInterruptsWithDistinguishedLockKeys(org.apache.oozie.service.TestCallableQueueService)
.
testMaxInterruptMapSize(org.apache.oozie.service.TestCallableQueueService)
. testFsFailover(org.apache.oozie.action.TestActionFailover)
.
testTimeOutWithException1(org.apache.oozie.command.coord.TestCoordPushDependencyCheckXCommand)
.
testRequeueOnException(org.apache.oozie.command.coord.TestCoordPushDependencyCheckXCommand)
. testEngine(org.apache.oozie.command.coord.TestFutureActionsTimeOut)
.
testCoordStatusTransitServiceSuspendedBottomUp(org.apache.oozie.service.TestStatusTransitService)
.
testCoordStatusTransitServiceBackwardSupport(org.apache.oozie.service.TestStatusTransitService)
.
testCoordStatusTransitServiceRunning3(org.apache.oozie.service.TestStatusTransitService)
.
testBundleStatusTransitServiceForTerminalStates(org.apache.oozie.service.TestStatusTransitService)
.
testCoordStatusTransitServiceSuspendedByUser(org.apache.oozie.service.TestStatusTransitService)
.
testCoordStatusTransitServiceRunning1(org.apache.oozie.service.TestStatusTransitService)
.
testCoordStatusTransitServiceKilledByUser2(org.apache.oozie.service.TestStatusTransitService)
.
testBundleStatusTransitServicePausedWithError(org.apache.oozie.service.TestStatusTransitService)
.
testBundleStatusTransitServiceKilled2(org.apache.oozie.service.TestStatusTransitService)
.
testBundleStatusTransitServiceSucceeded1(org.apache.oozie.service.TestStatusTransitService)
.
testCoordStatusTransitServicePaused(org.apache.oozie.service.TestStatusTransitService)
.
testBundleStatusTransitServicePaused(org.apache.oozie.service.TestStatusTransitService)
.
testBundleStatusTransitServiceSuspendedWithError(org.apache.oozie.service.TestStatusTransitService)
.
testCoordStatusTransitServiceRunning2(org.apache.oozie.service.TestStatusTransitService)
.
testBundleStatusTransitServiceSucceeded2(org.apache.oozie.service.TestStatusTransitService)
.
testCoordStatusTransitServicePausedWithError(org.apache.oozie.service.TestStatusTransitService)
.
testCoordStatusTransitServiceSucceeded(org.apache.oozie.service.TestStatusTransitService)
.
testCoordStatusTransitServiceDoneWithError(org.apache.oozie.service.TestStatusTransitService)
.
testCoordStatusTransitServiceSuspendedWithError(org.apache.oozie.service.TestStatusTransitService)
.
testCoordStatusTransitServiceForTimeout(org.apache.oozie.service.TestStatusTransitService)
.
testCoordStatusTransitServiceStaleCoordActions(org.apache.oozie.service.TestStatusTransitService)
.
testBundleStatusTransitRunningFromKilled(org.apache.oozie.service.TestStatusTransitService)
.
testBundleStatusTransitRunningWithError(org.apache.oozie.service.TestStatusTransitService)
.
testBundleStatusCoordSubmitFails(org.apache.oozie.service.TestStatusTransitService)
. testSLAUpdateWithHA(org.apache.oozie.service.TestHASLAService)
. testOnJobEvent(org.apache.oozie.sla.TestSLAJobEventListener)
.
testXCommandLifecycleLockingFailingToLock(org.apache.oozie.command.TestXCommand)
.
testActionCheckerServiceCoord(org.apache.oozie.service.TestActionCheckerService)
.
testBundleChangeReport(org.apache.oozie.command.bundle.TestBundleChangeXCommand)
.
testCheckBundleActionStatus(org.apache.oozie.command.bundle.TestBundleChangeXCommand)
. testLoadOnRestart(org.apache.oozie.sla.TestSLACalculatorMemory)
.
testWorkflowJobSLAStatusOnRestart(org.apache.oozie.sla.TestSLACalculatorMemory)
. testEventMissOnRestart(org.apache.oozie.sla.TestSLACalculatorMemory)
. testSLAEvents1(org.apache.oozie.sla.TestSLACalculatorMemory)
. testSLAEvents2(org.apache.oozie.sla.TestSLACalculatorMemory)
. testDuplicateStartMiss(org.apache.oozie.sla.TestSLACalculatorMemory)
. testDuplicateEndMiss(org.apache.oozie.sla.TestSLACalculatorMemory)
. testDisablingAlertsEvents(org.apache.oozie.sla.TestSLACalculatorMemory)
. testEventOutOfOrder(org.apache.oozie.sla.TestSLACalculatorMemory)
.
testChangeTimeDeleteRunning(org.apache.oozie.command.coord.TestCoordChangeXCommand)
.
testCoordStatus_Failed(org.apache.oozie.command.coord.TestCoordChangeXCommand)
.
testCoordStatus_Killed(org.apache.oozie.command.coord.TestCoordChangeXCommand)
.
testCoordStatus_Changefailed(org.apache.oozie.command.coord.TestCoordChangeXCommand)
.
testCoord_throwException(org.apache.oozie.command.coord.TestCoordChangeXCommand)
.
testCoordChangeEndTime3(org.apache.oozie.command.coord.TestCoordChangeXCommand)
.
testWorkflowActionRecoveryUserRetry(org.apache.oozie.service.TestRecoveryService)
.
testBundleRecoveryCoordCreate(org.apache.oozie.service.TestRecoveryService)
.
testCoordCreateNotifyParentFailed(org.apache.oozie.service.TestRecoveryService)
.
testCoordActionRecoveryServiceForSubmitted(org.apache.oozie.service.TestRecoveryService)
.
testCoordActionRecoveryServiceForWaiting(org.apache.oozie.service.TestRecoveryService)
.
testCoordActionRecoveryServiceForSuspended(org.apache.oozie.service.TestRecoveryService)
.
testCoordActionRecoveryServiceForKilled(org.apache.oozie.service.TestRecoveryService)
.
testCoordActionRecoveryServiceForResume(org.apache.oozie.service.TestRecoveryService)
.
testBundleEngineResume(org.apache.oozie.servlet.TestV1JobServletBundleEngine)
.
testBundleEngineSuspend(org.apache.oozie.servlet.TestV1JobServletBundleEngine)
.
testBundleEngineStart(org.apache.oozie.servlet.TestV1JobServletBundleEngine)
.
testBundleEngineKill(org.apache.oozie.servlet.TestV1JobServletBundleEngine)
.
testBundleEngineChange(org.apache.oozie.servlet.TestV1JobServletBundleEngine)
.
testCoordActionInputCheckXCommandUniqueness(org.apache.oozie.command.coord.TestCoordActionInputCheckXCommandNonUTC)
.
testResolveCoordConfiguration(org.apache.oozie.command.coord.TestCoordActionInputCheckXCommandNonUTC)
.
testTimeoutWithException(org.apache.oozie.command.coord.TestCoordActionInputCheckXCommandNonUTC)
. testKill(org.apache.oozie.command.coord.TestAbandonedCoordChecker)
. testStartTime(org.apache.oozie.command.coord.TestAbandonedCoordChecker)
. testCatchupJob(org.apache.oozie.command.coord.TestAbandonedCoordChecker)
. testPauseUnpause1(org.apache.oozie.service.TestPauseTransitService)
. testPauseUnpause2(org.apache.oozie.service.TestPauseTransitService)
.
testPauseBundleAndCoordinator(org.apache.oozie.service.TestPauseTransitService)
.
testUnpauseBundleAndCoordinator(org.apache.oozie.service.TestPauseTransitService)
. testStart1(org.apache.oozie.service.TestPauseTransitService)
. testStart2(org.apache.oozie.service.TestPauseTransitService)
.
testCoordDefinitionChangeError(org.apache.oozie.command.coord.TestCoordUpdateXCommand)
.
testCoordDefUnsupportedChange(org.apache.oozie.command.coord.TestCoordUpdateXCommand)
.
testActionMaterForHcatalogIncorrectURI(org.apache.oozie.command.coord.TestCoordMaterializeTransitionXCommand)
.
testResetSequence_withMultiThread(org.apache.oozie.service.TestZKUUIDService)
. testResetSequence(org.apache.oozie.service.TestZKUUIDService)
. testEngine(org.apache.oozie.command.coord.TestPastActionsTimeOut)
.
testCoordMaterializeTriggerService2(org.apache.oozie.service.TestCoordMaterializeTriggerService)
.
testCoordMaterializeTriggerService3(org.apache.oozie.service.TestCoordMaterializeTriggerService)
.
testCoordMaterializeTriggerService1(org.apache.oozie.service.TestCoordMaterializeTriggerService)
. testWaitWriteLock(org.apache.oozie.lock.TestMemoryLocks)
. testNoWaitWriteLock(org.apache.oozie.lock.TestMemoryLocks)
. testTimeoutWaitingWriteLock(org.apache.oozie.lock.TestMemoryLocks)
. testTimeoutTimingOutWriteLock(org.apache.oozie.lock.TestMemoryLocks)
. testReadLock(org.apache.oozie.lock.TestMemoryLocks)
. testReadWriteLock(org.apache.oozie.lock.TestMemoryLocks)
. testWriteReadLock(org.apache.oozie.lock.TestMemoryLocks)
. testWriteLockSameThreadNoWait(org.apache.oozie.lock.TestMemoryLocks)
. testWriteLockSameThreadWait(org.apache.oozie.lock.TestMemoryLocks)
. testLockReentrant(org.apache.oozie.lock.TestMemoryLocks)
.
testCoordRerunActionsNeg2(org.apache.oozie.command.coord.TestCoordRerunXCommand)
.
testCoordRerunDateNeg(org.apache.oozie.command.coord.TestCoordRerunXCommand)
.
testCoordRerunKilledCoord(org.apache.oozie.command.coord.TestCoordRerunXCommand)
.
testCoordRerunFailedCoordAction(org.apache.oozie.command.coord.TestCoordRerunXCommand)
. testCustomDoneFlag(org.apache.oozie.TestCoordinatorEngine)
. testEngine(org.apache.oozie.TestCoordinatorEngine)
. testDoneFlag(org.apache.oozie.TestCoordinatorEngine)
. testEmptyDoneFlag(org.apache.oozie.TestCoordinatorEngine)
. testDoneFlagCreation(org.apache.oozie.TestCoordinatorEngine)
. testUpdateSLA(org.apache.oozie.sla.TestSLAService)
. testEndMissDBConfirm(org.apache.oozie.sla.TestSLAService)
.
testCoordActionInputCheckXCommandUniqueness(org.apache.oozie.command.coord.TestCoordActionInputCheckXCommand)
.
testResolveCoordConfiguration(org.apache.oozie.command.coord.TestCoordActionInputCheckXCommand)
.
testTimeoutWithException(org.apache.oozie.command.coord.TestCoordActionInputCheckXCommand)
. testLocalOozieExampleEnd(org.apache.oozie.example.TestLocalOozieExample)
{color:green}+1 DISTRO{color}
. {color:green}+1{color} distro tarball builds with the patch
----------------------------
{color:red}*-1 Overall result, please check the reported -1(s)*{color}
The full output of the test-patch run is available at
. https://builds.apache.org/job/oozie-trunk-precommit-build/3167/
> ZK reentrant lock doesn't work for few cases
> --------------------------------------------
>
> Key: OOZIE-2501
> URL: https://issues.apache.org/jira/browse/OOZIE-2501
> Project: Oozie
> Issue Type: Bug
> Reporter: Purshotam Shah
> Assignee: Purshotam Shah
> Attachments: OOZIE-2501-V1.patch
>
>
> We will have an issue when oozie trying to acquire a lock and at the same
> time, some other thread is releasing the same lock .
> acquireLock will wait for 5 sec to acquire the lock. It will bypass the
> synchronized block and get lockEntry from the hashmap.
> While it waiting for 5 sec to acquire the lock, other thread releases the
> lock and may execute the release code which will remove lockEntry from the
> map.
> If some other command from same thread tries to acquire the lock, it will
> create a new InterProcessReadWriteLock object and use that for acquiring the
> lock.
> Logic for lock acquiring.
> {code}
> public LockToken getWriteLock(String resource, long wait) throws
> InterruptedException {
> InterProcessReadWriteLock lockEntry;
> synchronized (zkLocks) {
> if (zkLocks.containsKey(resource)) {
> lockEntry = zkLocks.get(resource);
> }
> else {
> lockEntry = new InterProcessReadWriteLock(zk.getClient(),
> LOCKS_NODE + "/" + resource);
> zkLocks.put(resource, lockEntry);
> }
> }
> InterProcessMutex writeLock = lockEntry.writeLock();
> return acquireLock(wait, writeLock, resource);
> }
> {code}
> Logic for lock releasing
> {code}
> public void release() {
> try {
> lock.release();
> if (zkLocks.get(resource) == null) {
> return;
> }
> if (!isLockHeld()) {
> synchronized (zkLocks) {
> if (zkLocks.get(resource) != null) {
> if (!isLockHeld()) {
> zkLocks.remove(resource);
> }
> }
> }
> }
> }
> catch (Exception ex) {
> LOG.warn("Could not release lock: " + ex.getMessage(), ex);
> }
> }
> {code}
> Curator code to acquire lock.
> {code}
> private boolean internalLock(long time, TimeUnit unit) throws Exception
> {
> /*
> Note on concurrency: a given lockData instance
> can be only acted on by a single thread so locking isn't necessary
> */
> Thread currentThread = Thread.currentThread();
> LockData lockData = threadData.get(currentThread);
> if ( lockData != null )
> {
> // re-entering
> lockData.lockCount.incrementAndGet();
> return true;
> }
> String lockPath = internals.attemptLock(time, unit,
> getLockNodeBytes());
> if ( lockPath != null )
> {
> LockData newLockData = new LockData(currentThread,
> lockPath);
> threadData.put(currentThread, newLockData);
> return true;
> }
> return false;
> }
> {code}
> The approach we have followed is to use map with weakvalue. Once the lock is
> unreachable. GC will remove it from the map. We don't have to explicitly
> remove it.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)