Throwing light on the Statement "When you use the callback function, disable automatic heartbeat and execute with manual heartbeat to avoid deadlocks "mentioned in the Product Documentation of FNP (fnp_PR-LF.pdf/pg.135 )
The function pointer LM_A_CHECKOUTFILTER (or the extended version, LM_A_CHECKOUTFILTER_EX) is set to point to a checkout filter callback function. This filter function is invoked each time lc_checkout finds a FEATURE/INCREMENT line that is a candidate for fulfilling the license request.
Candidates are selected based on the feature name. This filter provides the application the opportunity to examine the FEATURE/INCREMENT line before lc_checkout processes it, and either allows lc_checkout to proceed processing the line or rejects this particular line. lc_checkout may still reject the line even though the filter function allows processing to proceed.
The LM_A_CHECKOUTFILTER routine is called as follows: status = (*myCheckoutFilter)(config); or, with LM_A_CHECKOUTFILTER_EX: status = (*myCheckoutFilterEx)(job, config, vendor_data);
Explanation of the Note
The statement here is an historical update made in the document.
In the past there were issues seen in and around deadlock scenarios where automatic heartbeat had been executed before the checkout procedure could get completed .
Checkout filter callback is part of checkout request code flow.
Having these apprehension in mind it is proposed to use manual heartbeat with Checkout filter.