Changeset 4405

Show
Ignore:
Timestamp:
10/03/06 10:02:48 (2 years ago)
Author:
morris
Message:

Check count before doing anything

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trackerd/trunk/trackerd/servers.c

    r4404 r4405  
    241241        wi_boolean_t            changed = false; 
    242242 
    243         interval = wi_time_interval(); 
    244  
    245         wi_hash_wrlock(wt_servers); 
    246          
    247         enumerator = wi_array_data_enumerator(wi_hash_all_keys(wt_servers)); 
    248          
    249         while((key = wi_enumerator_next_data(enumerator))) { 
    250                 server = wi_hash_data_for_key(wt_servers, key); 
    251                 update = server->update_time > 0.0 ? server->update_time : server->register_time; 
     243        if(wi_hash_count(wt_servers) > 0) { 
     244                interval = wi_time_interval(); 
     245 
     246                wi_hash_wrlock(wt_servers); 
    252247                 
    253                 if(interval - update > wt_settings.minupdatetime) { 
    254                         wi_log_warn(WI_STR("Deleting \"%@\" with URL %@: Last update %.0f seconds ago considered too slow"), 
    255                                                 server->name, server->url, interval - update); 
    256  
    257                         wt_servers_remove_stats_for_server(server); 
    258                         wi_hash_remove_data_for_key(wt_servers, key); 
     248                enumerator = wi_array_data_enumerator(wi_hash_all_keys(wt_servers)); 
     249                 
     250                while((key = wi_enumerator_next_data(enumerator))) { 
     251                        server = wi_hash_data_for_key(wt_servers, key); 
     252                        update = server->update_time > 0.0 ? server->update_time : server->register_time; 
    259253                         
    260                         changed = true; 
    261                 } 
    262         } 
    263          
    264         wi_hash_unlock(wt_servers); 
    265  
    266         if(changed) { 
    267                 wi_lock_lock(wt_status_lock); 
    268                 wt_write_status(true); 
    269                 wi_lock_unlock(wt_status_lock); 
    270  
    271                 wt_write_servers(); 
     254                        if(interval - update > wt_settings.minupdatetime) { 
     255                                wi_log_warn(WI_STR("Deleting \"%@\" with URL %@: Last update %.0f seconds ago considered too slow"), 
     256                                                        server->name, server->url, interval - update); 
     257 
     258                                wt_servers_remove_stats_for_server(server); 
     259                                wi_hash_remove_data_for_key(wt_servers, key); 
     260                                 
     261                                changed = true; 
     262                        } 
     263                } 
     264                 
     265                wi_hash_unlock(wt_servers); 
     266 
     267                if(changed) { 
     268                        wi_lock_lock(wt_status_lock); 
     269                        wt_write_status(true); 
     270                        wi_lock_unlock(wt_status_lock); 
     271 
     272                        wt_write_servers(); 
     273                } 
    272274        } 
    273275}