1. Connection connection = null;
  2. boolean deadlock = false;
  3. ISFSObject outData = null;
  4. int retries = 0;
  5. int userId = sender.getVariable("userId").getIntValue();
  6. PreparedStatement psSelectUsersSettings = null;
  7. ResultSet rsSelectUsersSettings = null;
  8. do
  9. {
  10. deadlock = false;
  11. outData = new SFSObject();
  12. try
  13. {
  14. connection = this.getParentExtension().getParentZone().getDBManager().getConnection();
  15. connection.setAutoCommit(true);
  16. psSelectUsersSettings = connection.prepareStatement("SELECT * FROM users_settings WHERE user_id = ?");
  17. psSelectUsersSettings.setInt(1, userId);
  18. rsSelectUsersSettings = psSelectUsersSettings.executeQuery();
  19. if(rsSelectUsersSettings.first())
  20. {
  21. outData.putUtfString("icon_bar_order", rsSelectUsersSettings.getString("icon_bar_order"));
  22. }
  23. else
  24. {
  25. this.trace(ExtensionLogLevel.ERROR, "User settings do not exist for user id: " + userId);
  26. return;
  27. }
  28. this.send(ClientRequestHandlerID.USER_SETTINGS, outData, sender);
  29. }
  30. catch(SQLException e)
  31. {
  32. this.trace(ExtensionLogLevel.ERROR, e.getMessage());
  33. if(e.getErrorCode() == MySQLExceptionErrorCode.ER_LOCK_DEADLOCK.getErrorCode())
  34. {
  35. deadlock = true;
  36. }
  37. }
  38. finally
  39. {
  40. if(rsSelectUsersSettings != null)
  41. {
  42. try
  43. {
  44. rsSelectUsersSettings.close();
  45. }
  46. catch (SQLException e)
  47. {
  48. this.trace(ExtensionLogLevel.ERROR, e.getMessage());
  49. }
  50. }
  51. if(psSelectUsersSettings != null)
  52. {
  53. try
  54. {
  55. psSelectUsersSettings.close();
  56. }
  57. catch (SQLException e)
  58. {
  59. this.trace(ExtensionLogLevel.ERROR, e.getMessage());
  60. }
  61. }
  62. if(connection != null)
  63. {
  64. try
  65. {
  66. connection.close();
  67. }
  68. catch (SQLException e)
  69. {
  70. this.trace(ExtensionLogLevel.ERROR, e.getMessage());
  71. }
  72. }
  73. }
  74. }
  75. while(deadlock && retries++ < 3);
  76. if(retries == 3)
  77. {
  78. this.trace(ExtensionLogLevel.ERROR, "Maximum MySQL transaction retries reached");
  79. }