From bb1f97d10315f7e14060886587bba52a3652d1c4 Mon Sep 17 00:00:00 2001 From: Dominic Watson Date: Mon, 13 May 2019 12:13:46 +0100 Subject: [PATCH] PRESIDECMS-1562 disable query caching (by default) during running of ad-hoc tasks --- .../AdHocTaskManagerServiceTest.cfc | 25 +++++++++++++++++++ .../taskmanager/AdHocTaskManagerService.cfc | 2 ++ 2 files changed, 27 insertions(+) diff --git a/support/tests/integration/api/taskmanager/AdHocTaskManagerServiceTest.cfc b/support/tests/integration/api/taskmanager/AdHocTaskManagerServiceTest.cfc index a2da5a7ca1..41a02486f7 100644 --- a/support/tests/integration/api/taskmanager/AdHocTaskManagerServiceTest.cfc +++ b/support/tests/integration/api/taskmanager/AdHocTaskManagerServiceTest.cfc @@ -138,6 +138,29 @@ component extends="testbox.system.BaseSpec" { expect( log[1].error.type ?: "" ).toBe( "AdHoTaskManagerService.task.already.running" ); expect( log[1].error.message ?: "" ).toBe( "Task not run. The task with ID, [#taskId#], is already running." ); } ); + + it( "should set useQueryCache to false for the request to ensure query caching is not used throughout the process (by default)", function(){ + var service = _getService(); + var taskId = CreateUUId(); + var event = "some.handler.action"; + var args = { test=CreateUUId(), fubar=123 }; + var taskDef = QueryNew( 'event,event_args,status', 'varchar,varchar,varchar', [ [ event, SerializeJson( args ), "pending" ] ] ); + + _mockGetTask( taskId, taskDef ); + mockColdbox.$( "runEvent" ); + var mockProgress = _mockProgress( service, taskId ); + var mockLogger = _mockLogger( service, taskId ); + + service.$( "completeTask" ); + service.$( "failTask" ); + service.$( "markTaskAsRunning" ); + + service.runTask( taskId ); + + log = mockRequestContext.$callLog().setUseQueryCache; + expect( log.len() ).toBe( 1 ); + expect( log[1] ).toBe( [ false ] ); + } ); } ); describe( "createTask()", function(){ @@ -725,6 +748,8 @@ component extends="testbox.system.BaseSpec" { , threadUtil = mockThreadUtil ) ); + mockRequestContext.$( "setUseQueryCache" ); + service.$( "$getPresideObject" ).$args( "taskmanager_adhoc_task" ).$results( mockTaskDao ); service.$( "$getColdbox", mockColdbox ); service.$( "$getRequestContext", mockRequestContext ); diff --git a/system/services/taskmanager/AdHocTaskManagerService.cfc b/system/services/taskmanager/AdHocTaskManagerService.cfc index a3ec65de98..cb4283a6c3 100644 --- a/system/services/taskmanager/AdHocTaskManagerService.cfc +++ b/system/services/taskmanager/AdHocTaskManagerService.cfc @@ -94,6 +94,8 @@ component displayName="Ad-hoc Task Manager Service" { */ public boolean function runTask( required string taskId ) { lock timeout="1" name="adhocRunTask#arguments.taskId#" { + $getRequestContext().setUseQueryCache( false ); + var task = getTask( arguments.taskId ); var event = task.event ?: ""; var args = IsJson( task.event_args ?: "" ) ? DeserializeJson( task.event_args ) : {};