Update RecycleApplication function (#634)
removing hostingmodel input from recycleapplication call and fix memory leak in recycle out of process application
This commit is contained in:
parent
0e28f34c1a
commit
f32addd408
|
|
@ -142,12 +142,6 @@ public:
|
||||||
pApplication->DereferenceApplication();
|
pApplication->DereferenceApplication();
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
|
||||||
ClearApplication()
|
|
||||||
{
|
|
||||||
m_pApplication = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
HRESULT
|
HRESULT
|
||||||
EnsureApplicationCreated();
|
EnsureApplicationCreated();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -58,8 +58,7 @@ public:
|
||||||
static
|
static
|
||||||
VOID
|
VOID
|
||||||
RecycleApplication(
|
RecycleApplication(
|
||||||
_In_ APPLICATION_INFO * pEntry,
|
_In_ APPLICATION_INFO * pEntry
|
||||||
_In_ APP_HOSTING_MODEL hostingModel
|
|
||||||
);
|
);
|
||||||
|
|
||||||
static
|
static
|
||||||
|
|
|
||||||
|
|
@ -174,7 +174,7 @@ APPLICATION_INFO::UpdateAppOfflineFileHandle()
|
||||||
strEventMsg.QueryStr());
|
strEventMsg.QueryStr());
|
||||||
}
|
}
|
||||||
|
|
||||||
APPLICATION_MANAGER::RecycleApplication(this, m_pConfiguration->QueryHostingModel());
|
APPLICATION_MANAGER::RecycleApplication(this);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -370,7 +370,7 @@ APPLICATION_MANAGER::RecycleApplicationFromManager(
|
||||||
DBG_ASSERT(pRecord != NULL);
|
DBG_ASSERT(pRecord != NULL);
|
||||||
|
|
||||||
// RecycleApplication is called on a separate thread.
|
// RecycleApplication is called on a separate thread.
|
||||||
RecycleApplication(pRecord, m_hostingModel);
|
RecycleApplication(pRecord);
|
||||||
pRecord->DereferenceApplicationInfo();
|
pRecord->DereferenceApplicationInfo();
|
||||||
path = context.MultiSz.Next(path);
|
path = context.MultiSz.Next(path);
|
||||||
}
|
}
|
||||||
|
|
@ -480,19 +480,21 @@ APPLICATION_MANAGER::DoRecycleApplication(
|
||||||
// static
|
// static
|
||||||
VOID
|
VOID
|
||||||
APPLICATION_MANAGER::RecycleApplication(
|
APPLICATION_MANAGER::RecycleApplication(
|
||||||
_In_ APPLICATION_INFO * pEntry,
|
_In_ APPLICATION_INFO * pEntry
|
||||||
_In_ APP_HOSTING_MODEL hostingModel
|
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
|
||||||
APPLICATION* pApplication = pEntry->QueryApplication();
|
APPLICATION* pApplication = pEntry->QueryApplication();
|
||||||
|
DBG_ASSERT(pApplication != NULL);
|
||||||
|
|
||||||
// Reference the application first
|
// Reference the application first
|
||||||
pApplication->ReferenceApplication();
|
pApplication->ReferenceApplication();
|
||||||
|
|
||||||
if (hostingModel == APP_HOSTING_MODEL::HOSTING_OUT_PROCESS)
|
if (pApplication->QueryConfig()->QueryHostingModel() == HOSTING_OUT_PROCESS)
|
||||||
{
|
{
|
||||||
pEntry->ClearApplication();
|
// Need to set m_pApplication to NULL first
|
||||||
|
// to avoid mapping new request to the recycled application
|
||||||
|
// A new application instance will be created for new request
|
||||||
|
pEntry->ClearAndDereferenceApplication();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reset application pointer to NULL
|
// Reset application pointer to NULL
|
||||||
|
|
@ -505,6 +507,5 @@ APPLICATION_MANAGER::RecycleApplication(
|
||||||
0, // default creation flags
|
0, // default creation flags
|
||||||
NULL); // receive thread identifier
|
NULL); // receive thread identifier
|
||||||
|
|
||||||
|
|
||||||
CloseHandle(hThread);
|
CloseHandle(hThread);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue