Source:
<code><START> protected List<PFunction> createFunctionRef(List<String> functionNames, boolean updateCacheImmediately) throws SQLException { <END> long timeStamp = QueryConstants.UNSET_TIMESTAMP; int numFunctions = functionNames.size(); List<PFunction> functionsFound = new ArrayList<PFunction>(functionNames.size()); if (updateCacheImmediately || connection.getAutoCommit()) { getFunctionFromCache(functionNames, functionsFound, true); if(functionNames.isEmpty()) { return functionsFound; } MetaDataMutationResult result = client.updateCache(functionNames); timeStamp = result.getMutationTime(); functionsFound = result.getFunctions(); if(functionNames.size() != functionsFound.size()){ throw new FunctionNotFoundException("Some of the functions in "+functionNames.toString()+" are not found"); } } else { getFunctionFromCache(functionNames, functionsFound, false); MetaDataMutationResult result = null; if (!functionNames.isEmpty()) { result = client.updateCache(functionNames); } if(result!=null) { if (!result.getFunctions().isEmpty()) { functionsFound.addAll(result.getFunctions()); } if(result.wasUpdated()) { timeStamp = result.getMutationTime(); } } if (functionsFound.size()!=numFunctions) { throw new FunctionNotFoundException("Some of the functions in "+functionNames.toString()+" are not found", timeStamp); } } if (timeStamp != QueryConstants.UNSET_TIMESTAMP) { timeStamp += tsAddition; } if (logger.isDebugEnabled() && timeStamp != QueryConstants.UNSET_TIMESTAMP) { logger.debug(LogUtil.addCustomAnnotations("Re-resolved stale function " + functionNames.toString() + "at timestamp " + timeStamp, connection)); } return functionsFound; }</code><technical_language>Minor nit: is this function overriden somewhere? If not, private</technical_language>

Target:
private List<PFunction> createFunctionRef(List<String> functionNames, boolean updateCacheImmediately) throws SQLException { long timeStamp = QueryConstants.UNSET_TIMESTAMP; int numFunctions = functionNames.size(); List<PFunction> functionsFound = new ArrayList<PFunction>(functionNames.size()); if (updateCacheImmediately || connection.getAutoCommit()) { getFunctionFromCache(functionNames, functionsFound, true); if(functionNames.isEmpty()) { return functionsFound; } MetaDataMutationResult result = client.updateCache(functionNames); timeStamp = result.getMutationTime(); functionsFound = result.getFunctions(); if(functionNames.size() != functionsFound.size()){ throw new FunctionNotFoundException("Some of the functions in "+functionNames.toString()+" are not found"); } } else { getFunctionFromCache(functionNames, functionsFound, false); MetaDataMutationResult result = null; if (!functionNames.isEmpty()) { result = client.updateCache(functionNames); } if(result!=null) { if (!result.getFunctions().isEmpty()) { functionsFound.addAll(result.getFunctions()); } if(result.wasUpdated()) { timeStamp = result.getMutationTime(); } } if (functionsFound.size()!=numFunctions) { throw new FunctionNotFoundException("Some of the functions in "+functionNames.toString()+" are not found", timeStamp); } } if (timeStamp != QueryConstants.UNSET_TIMESTAMP) { timeStamp += tsAddition; } if (logger.isDebugEnabled() && timeStamp != QueryConstants.UNSET_TIMESTAMP) { logger.debug(LogUtil.addCustomAnnotations("Re-resolved stale function " + functionNames.toString() + "at timestamp " + timeStamp, connection)); } return functionsFound; }