Changeset 445

Show
Ignore:
Timestamp:
02/26/10 01:41:24 (8 years ago)
Author:
vanlamle
Message:

+ Remove setting lower case in URLs
+ Fix ConcurrentModificationException?: Happen if VMWare machine gets
Error and reverted
while Capture-Server goes the list of VMWare
machines to ping them.
+ Fix openning many database connections which can slowdown the system.
+ Decode size error when collecting files from clients

Location:
capture-hpc/branches/3.0.1/capture-server
Files:
13 modified

Legend:

Unmodified
Added
Removed
  • capture-hpc/branches/3.0.1/capture-server/capture/Client.java

    r390 r445  
    254254            for (Iterator<Element> iterator = items.iterator(); iterator.hasNext();) { 
    255255                Element item = iterator.next(); 
    256                 String uri = item.attributes.get("url").toLowerCase(); 
     256                String uri = item.attributes.get("url");//.toLowerCase(); 
    257257                Url url = visitingUrlGroup.getUrl(uri); 
    258258                url.setVisitStartTime(item.attributes.get("time")); 
     
    271271            for (Iterator<Element> iterator = items.iterator(); iterator.hasNext();) { 
    272272                Element item = iterator.next(); 
    273                 String uri = item.attributes.get("url").toLowerCase(); 
     273                String uri = item.attributes.get("url");//.toLowerCase(); 
    274274                Url url = visitingUrlGroup.getUrl(uri); 
    275275                int processId = Integer.parseInt(item.attributes.get("processId")); 
     
    314314            for (Iterator<Element> iterator = items.iterator(); iterator.hasNext();) { 
    315315                Element item = iterator.next(); 
    316                 String uri = item.attributes.get("url").toLowerCase(); 
     316                String uri = item.attributes.get("url");//.toLowerCase(); 
    317317                Url url = visitingUrlGroup.getUrl(uri); 
    318318                int processId = Integer.parseInt(item.attributes.get("processId")); 
  • capture-hpc/branches/3.0.1/capture-server/capture/ClientEventController.java

    r367 r445  
    255255 
    256256    public void characters(char ch[], int start, int length) { 
    257         currentElement.data = new String(ch, start, length); 
     257        currentElement.data = currentElement.data + new String(ch, start, length); 
    258258        currentElement.data.trim(); 
    259259    } 
  • capture-hpc/branches/3.0.1/capture-server/capture/ClientsPinger.java

    r330 r445  
    1212 
    1313    public void addClient(Client c) { 
    14         clients.add(c); 
     14            clients.add(c); 
    1515    } 
    1616 
    1717    public void removeClient(Client c) { 
    18         clients.remove(c); 
     18            clients.remove(c); 
    1919    } 
    2020 
     
    3030 
    3131    public void run() { 
     32        try { 
    3233        for (Iterator<Client> clientIterator = clients.iterator(); clientIterator.hasNext();) { 
    3334            Client client = clientIterator.next(); 
     
    3839            } 
    3940 
    40         } 
     41            } 
     42        } catch (ConcurrentModificationException e) { System.out.println("Known ConcurrentModificationException!");} 
    4143    } 
    42  
    4344} 
  • capture-hpc/branches/3.0.1/capture-server/capture/Database.java

    r424 r445  
    4242        public abstract void loadInputUrlFromDatabase(); 
    4343        //import urls from text file without operation 
    44     public abstract void importUrlFromFile();  
     44        public abstract void importUrlFromFile(); 
    4545        public abstract String getCurrentOperation(); 
    4646        public abstract void setCurrentOperation(String operationid); 
     
    5050        public abstract void storeEvent(String urlid, String event); 
    5151        // store info about error urls 
    52         public abstract void storeErrorUrl(String urlid, String majorError, String minorError); 
     52        public abstract void storeErrorUrl(String urlid, String time, String majorError, String minorError); 
    5353    // set system status: True: running, False: stopping 
    5454    public abstract void setSystemStatus(boolean status); 
  • capture-hpc/branches/3.0.1/capture-server/capture/MySQLDatabase.java

    r441 r445  
    101101                        //Add client program values into memory 
    102102                        stmt.executeQuery("SELECT clientprogram_id, name FROM clientprogram"); 
     103                        rs.close(); 
    103104                        rs = stmt.getResultSet(); 
    104105                        while (rs.next())  
     
    265266                                                        EventsController.getInstance().notifyEventObservers(element); 
    266267                                                        count++; 
     268                                                        rs.close(); 
     269                                                        ps.close(); 
    267270                                                } 
    268271                                        } 
     
    281284                                                        if (!rs.next())  
    282285                                                        { 
     286                                                            ps.close(); 
    283287                                                            ps = con.prepareStatement("INSERT INTO url(url) Values (?)", Statement.RETURN_GENERATED_KEYS); 
    284288                                                            ps.setString(1, line); 
     
    292296                                                        ps.setLong(1, Long.parseLong(url_id)); 
    293297                                                        ps.setLong(2, Long.parseLong(operationid)); 
     298                                                        rs.close(); 
    294299                                                        rs=ps.executeQuery(); 
    295300                                                        if (!rs.next()) 
     
    303308                                                            EventsController.getInstance().notifyEventObservers(element); 
    304309                                                        } 
     310                                                        ps.close(); 
    305311                                                } 
    306312                                        } 
     
    483489                                                    ps.executeUpdate(); 
    484490                                                    count++; 
     491                                                    ps.close(); 
    485492                                                } 
    486493                                        } 
     
    499506                                                        if (!rs.next())  
    500507                                                        { 
     508                                                            ps.close(); 
    501509                                                            ps = con.prepareStatement("INSERT INTO url(url) Values (?)"); 
    502510                                                            ps.setString(1, line); 
    503511                                                            ps.executeUpdate(); 
    504512                                                            count++; 
     513                                                            ps.close(); 
    505514                                                        }  
    506515                                                } 
     
    569578 
    570579        // store info about error urls 
    571         public void storeErrorUrl(String urlid, String majorError, String minorError) 
    572         { 
    573                 Connection con=this.getConnection(); 
    574                 Statement       stmt; 
    575                 ResultSet rs; 
    576  
    577                 try 
    578                 { 
    579  
    580                         PreparedStatement ps = con.prepareStatement("INSERT INTO error(url_id, operation_id,  majorerror, minorerror) VALUES ("+urlid+", "+getCurrentOperation()+", ?, ?)"); 
    581                         ps.setString(1, majorError); 
    582                         ps.setString(2, minorError); 
     580        public void storeErrorUrl(String urlid, String time, String majorError, String minorError) 
     581        { 
     582                Connection con=this.getConnection(); 
     583                Statement       stmt; 
     584                ResultSet rs; 
     585 
     586                try 
     587                { 
     588 
     589                        SimpleDateFormat sf1 = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss.S"); 
     590                        SimpleDateFormat sf2 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.S"); 
     591                        //convert dates into new format "yyyy/MM/dd HH:mm:ss.S" 
     592                        Date date = sf1.parse(time); 
     593                        time = sf2.format(date); 
     594                        PreparedStatement ps = con.prepareStatement("INSERT INTO error(url_id, operation_id,  time, majorerror, minorerror) VALUES ("+urlid+", "+getCurrentOperation()+", ?, ?, ?)"); 
     595                        ps.setString(1, time); 
     596                        ps.setString(2, majorError); 
     597                        ps.setString(3, minorError); 
    583598                        ps.executeUpdate(); 
    584599                        ps.close(); 
  • capture-hpc/branches/3.0.1/capture-server/capture/PostgreSQLDatabase.java

    r441 r445  
    9999                        //Add client program values into memory 
    100100                        stmt.executeQuery("SELECT clientprogram_id, name FROM clientprogram"); 
     101                        rs.close(); 
    101102                        rs = stmt.getResultSet(); 
    102103                        while (rs.next())  
     
    252253                                                        element.attributes.put("url", line); 
    253254                                                        EventsController.getInstance().notifyEventObservers(element); 
    254                                                          
     255                                                        rs.close(); 
     256                                                        ps.close(); 
    255257                                                } 
    256258                                        } 
     
    269271                                                        if (!rs.next())  
    270272                                                        { 
     273                                                                ps.close(); 
    271274                                                                ps = con.prepareStatement("INSERT INTO url(url) Values (?)"+" RETURNING url_id"); 
    272275                                                                ps.setString(1, line); 
     
    280283                                                        ps.setLong(1, Long.parseLong(url_id)); 
    281284                                                        ps.setLong(2, Long.parseLong(operationid)); 
     285                                                        rs.close(); 
    282286                                                        rs=ps.executeQuery(); 
    283287                                                        if (!rs.next()) 
     
    292296                                                             
    293297                                                        } 
     298                                                        ps.close(); 
    294299                                                } 
    295300                                        } 
     
    466471                                                    ps.executeUpdate(); 
    467472                                                    count++; 
     473                                                    ps.close(); 
    468474                                                } 
    469475                                        } 
     
    482488                                                        if (!rs.next())  
    483489                                                        { 
     490                                                            ps.close(); 
    484491                                                            ps = con.prepareStatement("INSERT INTO url(url) Values (?)"); 
    485492                                                            ps.setString(1, line); 
    486493                                                            ps.executeUpdate(); 
    487494                                                            count++; 
     495                                                            ps.close(); 
    488496                                                        }  
    489497                                                } 
     
    545553 
    546554        // store info about error urls 
    547         public void storeErrorUrl(String urlid, String majorError, String minorError) 
     555        public void storeErrorUrl(String urlid, String time, String majorError, String minorError) 
    548556        { 
    549557                Connection con=this.getConnection(); 
     
    555563                { 
    556564         
    557                         PreparedStatement ps = con.prepareStatement("INSERT INTO error(url_id, operation_id,  majorerror, minorerror) VALUES ("+urlid+", "+getCurrentOperation()+", ?, ?)"); 
     565                        PreparedStatement ps = con.prepareStatement("INSERT INTO error(url_id, operation_id, time, majorerror, minorerror) VALUES ("+urlid+", "+getCurrentOperation()+", to_timestamp(\'" +time+"\','DD/MM/YYYY HH24:MI:SS.MS\'), "+", ?, ?)"); 
    558566                        ps.setString(1, majorError); 
    559567                        ps.setString(2, minorError); 
  • capture-hpc/branches/3.0.1/capture-server/capture/StateChangeHandler.java

    r365 r445  
    100100        Set<String> urls = urlProcessIdMap.keySet(); 
    101101        for (Iterator<String> stringIterator = urls.iterator(); stringIterator.hasNext();) { 
    102             String url = stringIterator.next().toLowerCase(); 
     102            //String url = stringIterator.next().toLowerCase(); 
     103            String url = stringIterator.next(); 
    103104            int processId = urlProcessIdMap.get(url); 
    104105            String csv = getStateChangesCSV(processId); 
  • capture-hpc/branches/3.0.1/capture-server/capture/Url.java

    r441 r445  
    8989    public String getVisitStartTime() { 
    9090        SimpleDateFormat sf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss.S"); 
    91         return sf.format(visitStartTime); 
     91        if (visitStartTime!=null) 
     92            return sf.format(visitStartTime); 
     93        else return sf.format( new Date(1900, 1, 1, 1, 1, 1)); 
    9294    } 
    9395 
     
    129131 
    130132            setMalicious(true); 
     133            try { 
    131134            logFile.write(event); 
    132135            logFile.flush(); 
    133  
     136            } catch (IOException e) {System.out.println("Known stream closed exception!");} 
    134137                        //store in database 
    135138                        if (ConfigManager.getInstance().getConfigOption("database-url")!=null) 
     
    224227                String finishDate = getVisitFinishTime(); 
    225228                Logger.getInstance().writeToProgressLog("\"" + finishDate  + "\",\"error" + ":" + majorErrorCode + "-" + minorErrorCode + "\",\"" + groupID + "\",\"" + url + "\",\"" + clientProgram + "\",\"" + visitTime + "\""); 
    226                 Stats.urlError++; 
    227                                 //logged in error table 
    228                                 if (ConfigManager.getInstance().getConfigOption("database-url")!=null) 
    229                                 { 
    230                                         Database.getInstance().storeErrorUrl(this.getId(), majorErrorCode.toString(), String.valueOf(minorErrorCode)); 
    231                                 }        
     229                Stats.urlError++;                                
    232230            }  
    233231                        if (status==null) 
     
    255253    public String getEscapedUrl() { 
    256254        try { 
    257             return URLEncoder.encode(url.toString(), "UTF-8").toLowerCase(); 
     255            //return URLEncoder.encode(url.toString(), "UTF-8").toLowerCase(); 
     256            return URLEncoder.encode(url.toString(), "UTF-8"); 
    258257        } catch (UnsupportedEncodingException e) { 
    259258            e.printStackTrace(System.out); 
     
    267266     
    268267    public String getUrl() { 
    269         return url.toString().toLowerCase(); 
     268        //return url.toString().toLowerCase(); 
     269        return url.toString(); 
    270270    } 
    271271 
  • capture-hpc/branches/3.0.1/capture-server/capture/UrlFactory.java

    r424 r445  
    1212        //int visitTime = ((Integer) ConfigManager.getInstance().getConfigOption("client_default_visit_time")).intValue(); 
    1313 
    14         return getUrl(event.attributes.get("id"), event.attributes.get("url").toLowerCase()); 
     14        //return getUrl(event.attributes.get("id"), event.attributes.get("url").toLowerCase()); 
     15        return getUrl(event.attributes.get("id"), event.attributes.get("url")); 
    1516    } 
    1617 
  • capture-hpc/branches/3.0.1/capture-server/capture/UrlGroupsController.java

    r424 r445  
    3030 
    3131            while(true) { 
    32                                 if (ConfigManager.getInstance().getConfigOption("database-url")!=null) 
     32                if (ConfigManager.getInstance().getConfigOption("database-url")!=null) 
    3333                                { 
    3434                    if (!Database.getInstance().getSystemStatus()) { 
     
    3636                        System.exit(0); 
    3737                    } 
    38                                 } 
     38 
     39                } 
    3940                if(visitingList.size()==0 && urlGroupQueue.size()==0 && UrlsController.getInstance().getQueueSize()==0 && (PostprocessorFactory.getActivePostprocessor()!=null && !PostprocessorFactory.getActivePostprocessor().processing())) { 
    4041                    System.out.println("No more urls in the current operation."); 
  • capture-hpc/branches/3.0.1/capture-server/capture/UrlsController.java

    r400 r445  
    6262            ERROR_CODES majorErrorCode = ERROR_CODES.INVALID_URL; 
    6363            Logger.getInstance().writeToErrorLog("\"" + date + "\",\"error:" + majorErrorCode + "\",\"nogroup\",\"" + url + "\",\"unkown\",\"unknown\""); 
     64            if (ConfigManager.getInstance().getConfigOption("database-url")!=null) 
     65                { 
     66                        date = currentTime("yyyy/MM/dd HH:mm:ss.S"); 
     67                        Database.getInstance().storeErrorUrl(event.attributes.get("id"), date, majorErrorCode.toString(), "unknown"); 
     68                } 
    6469            System.out.println(e.getMessage()); 
    6570        } 
    6671 
     72    } 
     73 
     74    private String currentTime(String format) { 
     75        long current = System.currentTimeMillis(); 
     76        Date currentDate = new Date(current); 
     77        SimpleDateFormat sdf = new SimpleDateFormat(format); 
     78        String strDate = sdf.format(currentDate); 
     79        return strDate; 
    6780    } 
    6881 
     
    137150                Logger.getInstance().writeToErrorLog("\"" + date + "\",\"error:" + majorErrorCode + "-" + minorErrorCode + "\",\"" + url.getGroupID() + "\",\"" + urlString + "\",\""  + clientProgram + "\",\"" + visitTime + "\""); 
    138151                errorUrlList.add(url); 
     152            if (ConfigManager.getInstance().getConfigOption("database-url")!=null) 
     153                { 
     154                        Database.getInstance().storeErrorUrl(url.getId(), date, majorErrorCode.toString(), String.valueOf(minorErrorCode)); 
     155                } 
    139156            } 
    140157        } 
  • capture-hpc/branches/3.0.1/capture-server/utilities/create_mysql_database.sh

    r441 r445  
    105105 
    106106 
    107 create table error (  
     107create table error ( 
    108108       url_id        integer references url(url_id),  
    109        operation_id   integer references operation(operation_id),  
     109       operation_id   integer references operation(operation_id), 
     110       time         varchar(23), 
    110111       majorerror  varchar(50), 
    111112       minorerror  varchar(50),  
    112        PRIMARY KEY(url_id, operation_id)  
     113       PRIMARY KEY(url_id, operation_id, time) 
    113114 ); 
    114115 
  • capture-hpc/branches/3.0.1/capture-server/utilities/create_postgresql_database.sh

    r441 r445  
    107107create table error (  
    108108       url_id        integer references url(url_id),  
    109        operation_id   integer references operation(operation_id),  
     109       operation_id   integer references operation(operation_id), 
     110       time         timestamp, 
    110111       majorerror  varchar(50), 
    111112       minorerror  varchar(50),  
    112        CONSTRAINT error_pk PRIMARY KEY(url_id, operation_id)  
     113       CONSTRAINT error_pk PRIMARY KEY(url_id, operation_id, time) 
    113114 ); 
    114115