Changeset 7900


Ignore:
Timestamp:
04/03/11 17:07:40 (8 years ago)
Author:
mnagni
Message:

There was a leaking transaction (the PresentAgent?.doPresent() is called twice: from the skeleton and the doSearch)

Location:
RevitalizationWS/ws/DiscoveryService/trunk/src/main/java/ndg/services
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • RevitalizationWS/ws/DiscoveryService/trunk/src/main/java/ndg/services/discovery/model/CommonMethods.java

    r7773 r7900  
    153153        void commitOrRollback(Connection conn, boolean commit) { 
    154154                try { 
    155                         if (!conn.isClosed() && conn != null) { 
     155                        if (conn != null && !conn.isClosed()) { 
    156156                                if (commit) { 
    157157                                        conn.commit(); 
  • RevitalizationWS/ws/DiscoveryService/trunk/src/main/java/ndg/services/discovery/model/PresentAgent.java

    r7773 r7900  
    220220                        fillSpatialTemporalData(conn, searchResult);                             
    221221                } 
    222  
     222                return searchResult; 
     223        } 
     224 
     225        /** 
     226         * Executes the search and returns a SearchSummary object 
     227         *  
     228         * @return SearchSummary object containing result of search 
     229         * @throws NdgException  
     230         */ 
     231        public List<OriginalDocument> doPresent(List<String> documentsId, RetrieveCriteriaType type) 
     232                        throws NdgSQLException, AssembleQueryException, ResourceNotAvailable { 
     233                 
     234                Connection conn = DiscoveryBasic.getInstance().getDiscoveryConnection(); 
     235                List<OriginalDocument> searchResult = null; 
     236                boolean commit = false; 
     237                try { 
     238                        conn.setAutoCommit(false); 
     239                        searchResult = doPresent(conn, documentsId, type); 
     240                        commit = true; 
     241                } catch (SQLException e) { 
     242                        // NdgMessage msg = new NdgMessage("sql.resultset.parsing.error", 
     243                        // new Object[] { sqlQuery }); 
     244                } finally { 
     245                        commitOrRollback(conn, commit); 
     246                } 
    223247                if (conn != null) { 
    224248                        try { 
    225                                 conn.close(); 
    226                         } catch (Exception e) { 
    227                                 logHelper.logMessage("closeConnectionError", Level.ERROR, e); 
    228                         }        
    229                 } 
    230                 return searchResult; 
    231         } 
    232  
     249                                if (!conn.isClosed()) 
     250                                        conn.close(); 
     251                        } catch (SQLException e) { 
     252                                logHelper.logMessage(e, Level.ERROR); 
     253                        } 
     254                } 
     255                return searchResult;             
     256        } 
     257         
     258         
    233259        private boolean columnExist(ResultSet rs, String columnName) { 
    234260                boolean columnExist = false; 
  • RevitalizationWS/ws/DiscoveryService/trunk/src/main/java/ndg/services/discovery/model/SearchAgent.java

    r7899 r7900  
    3131import ndg.services.schemas.discovery.TermSearchType; 
    3232 
     33import org.apache.log4j.Level; 
    3334import org.apache.log4j.Logger; 
    3435 
     
    123124                } 
    124125 
    125                 toFilter = toFilter.subList((int) start - 1, (int) howMany); 
    126                 doUpdateVal(conn, toFilter); 
     126                toFilter = toFilter.subList((int) start - 1, (int) howMany);             
    127127                PresentAgent present = new PresentAgent();               
    128128                res = present.doPresent(conn, toFilter, searchType.getRetrieveCriteria()); 
     129                doUpdateVal(conn, toFilter); 
    129130                return res; 
    130131        } 
  • RevitalizationWS/ws/DiscoveryService/trunk/src/main/java/ndg/services/schemas/discovery/DiscoveryServiceSkeleton.java

    r7653 r7900  
    161161                PresentAgent agent = new PresentAgent(); 
    162162                List<String> documentsId = new ArrayList<String>(); 
    163                 Connection conn = null; 
    164163                try { 
    165164                        for (SimpleDocument1 doc : doPresent.getDoPresent().getDocumentsArray()) { 
     
    167166                        } 
    168167                        RetrieveCriteriaType retrieveType = doPresent.getDoPresent().getRetrieveCriteria(); 
    169                         List<OriginalDocument> result = agent.doPresent(conn, documentsId, retrieveType); 
     168                        List<OriginalDocument> result = agent.doPresent(documentsId, retrieveType); 
    170169                        String recDetail = retrieveType == null ? null : retrieveType.getRecordDetail(); 
    171170                        DiscoveryDictionary.RecordDetail detail = DiscoveryDictionary.getRecordDetails(recDetail); 
     
    181180                        responseContent.setStatus(status); 
    182181                        responseContent.setStatusMessage(statusMsg); 
    183                         if (conn != null) 
    184                                 try { 
    185                                         conn.close(); 
    186                                 } catch (SQLException e) { 
    187                                         // TODO Auto-generated catch block 
    188                                         e.printStackTrace(); 
    189                                 } 
    190182                } 
    191183                return response; 
Note: See TracChangeset for help on using the changeset viewer.