- Timestamp:
- 01/12/09 08:49:34 (20 months ago)
- Author:
- jmoore
- Message:
-
OmeroClustering : Cleaning sessions in jdbc ring and protecting NPEs
(cherry picked from commit bcafc11e48d911ccb405680477e40d66332241d8)
- Files:
-
Legend:
- Unmodified
- Added
- Removed
-
|
r3269
|
r3270
|
|
| 11 | 11 | import java.sql.SQLException; |
| 12 | 12 | import java.util.ArrayList; |
| | 13 | import java.util.HashMap; |
| 13 | 14 | import java.util.HashSet; |
| 14 | 15 | import java.util.List; |
| | 16 | import java.util.Map; |
| 15 | 17 | import java.util.Set; |
| 16 | 18 | import java.util.UUID; |
| … |
… |
|
| 213 | 215 | } |
| 214 | 216 | remove(MANAGERS + uuid); |
| 215 | | int count = jdbc.update("delete from session_ring where value = ?", uuid); |
| 216 | | log.info("Removed "+count+" entries for "+uuid); |
| | 217 | int count = jdbc.update("delete from session_ring where value = ?", |
| | 218 | uuid); |
| | 219 | log.info("Removed " + count + " entries for " + uuid); |
| 217 | 220 | log.info("Disconnected from OMERO.cluster"); |
| 218 | 221 | } catch (Exception e) { |
| … |
… |
|
| 359 | 362 | } |
| 360 | 363 | } |
| | 364 | // Now removing any stale sessions |
| | 365 | StringBuilder sb = new StringBuilder(); |
| | 366 | sb.append("delete from session_ring "); |
| | 367 | sb.append("where key like 'session-%' "); |
| | 368 | sb.append("and ("); |
| | 369 | sb.append(" value != "); |
| | 370 | sb.append(" '"); |
| | 371 | sb.append(uuid); // Self |
| | 372 | sb.append("' "); |
| | 373 | for (String nodeUuid : nodeUuids) { |
| | 374 | sb.append(" and "); |
| | 375 | sb.append("value != '"); |
| | 376 | sb.append(nodeUuid); |
| | 377 | sb.append("' "); |
| | 378 | } |
| | 379 | sb.append(")"); |
| | 380 | int count = jdbc.update(sb.toString()); |
| | 381 | if (count != 0) { |
| | 382 | log.info("Removed " + count + " stale sessions"); |
| | 383 | } |
| 361 | 384 | } |
| 362 | 385 | |
| 363 | 386 | protected void purgeNode(String manager) { |
| 364 | 387 | log.info("Purging node: " + manager); |
| 365 | | int count = jdbc.update("delete from session_ring where key like '" |
| 366 | | + SESSIONS + "' and value = ?", manager); |
| 367 | | log.info("Removed " + count + " sessions with value " + manager); |
| | 388 | int count = jdbc.update("delete from session_ring where value = ?", |
| | 389 | manager); |
| | 390 | log.info("Removed " + count + " entries with value " + manager); |
| 368 | 391 | count = jdbc.update("delete from session_ring where key = ?", MANAGERS |
| 369 | 392 | + manager); |
| 370 | 393 | log.info("Removed " + MANAGERS + manager); |
| 371 | | count = jdbc.update( |
| 372 | | "delete from session_ring where key = ? and value = ?", CONFIG |
| 373 | | + "redirect", manager); |
| 374 | | if (count != 0) { |
| 375 | | log.info("Removed redirect to " + manager); |
| 376 | | } |
| 377 | | putRedirect(uuid); |
| | 394 | putIfAbsent(CONFIG + "redirect", uuid); |
| 378 | 395 | } |
| 379 | 396 | |
| … |
… |
|
| 384 | 401 | if (arg0 instanceof CreateSessionMessage) { |
| 385 | 402 | String session = ((CreateSessionMessage) arg0).getSessionId(); |
| | 403 | log.info("Adding session " + session + " to manager " + uuid); |
| 386 | 404 | put(SESSIONS + session, uuid); // Use our uuid rather than proxy |
| 387 | 405 | } else if (arg0 instanceof DestroySessionMessage) { |
| 388 | 406 | String session = ((DestroySessionMessage) arg0).getSessionId(); |
| 389 | 407 | remove(SESSIONS + session); |
| | 408 | log.info("Removing session " + session + " from manager " + uuid); |
| 390 | 409 | } else if (arg0 instanceof ContextClosedEvent) { |
| 391 | 410 | // This happens 3 times for each nested context. Perhaps we |
Download in other formats:
1.2.1-PRO © 2008-2009
agile42 all
rights reserved
(this page was served in: 0.54219 sec.)