public override void onCanCommit(CanCommitMessage message) { try { this.cohort.setTableName(message.getTableName()); this.cohort.setQueryString(message.getQueryString()); this.cohort.setCreate(message.isCreate()); int coordinatorTableVersion = message.getTableVersion(); String tableName = message.getTableName(); int localTableVersion = this.cohort.getDatabaseState().getTableVersion(tableName); if (coordinatorTableVersion < localTableVersion) { throw new LessTableVersionException(tableName, coordinatorTableVersion, localTableVersion); } this.cohort.getDatabaseState().lockTable(message.getTableName()); this.cohort.replyToCoordinator(new YesForCommitMessage()); this.cohort.changeState(new PreparedState()); } catch (Exception e) { Logger.getInstance().log(e.Message, "KOHORT", Logger.Level.WARNING); this.cohort.replyToCoordinator(new NoForCommitMessage()); this.cohort.endTransaction(); this.cohort.setState(new AbortState()); } }
public override void onTransaction(TransactionMessage message) { Logger.getInstance().log("Processing transaction", LOGGING_NAME, Logger.Level.INFO); coordinator.setNodeCount(TcpSender.getInstance().getServerNodesCount()); SqlParser parser = new SqlParserImpl(); if(!parser.parse(message.QueryString)) { Logger.getInstance().log("Unparsable query - send back error and end transaction", LOGGING_NAME, Logger.Level.INFO); TcpSender.getInstance().sendToNode(new RBD.Msg.Client.ErrorMessage("Bad query"), message.Sender); coordinator.endTransaction(); return; } coordinator.setQueryString( parser.getQueryString() ); coordinator.TableName = parser.getTableName(); if(parser.getOperationType().Equals(SqlOperationType.SELECT)) { Logger.getInstance().log("Select query detected", LOGGING_NAME, Logger.Level.INFO); coordinator.processSelect(); } else { CanCommitMessage msg = new CanCommitMessage(); msg.TableName = parser.getTableName(); msg.QueryString = parser.getQueryString(); msg.TableVersion = coordinator.DatabaseState.getTableVersion(msg.TableName); if(parser.getOperationType().Equals(SqlOperationType.CREATE)) { msg.IsCreate = true; } else { msg.IsCreate = false; } Logger.getInstance().log("Changing state to waiting", LOGGING_NAME, Logger.Level.INFO); coordinator.broadcastMessage(msg); coordinator.changeState(new WaitingState()); } }
/** * <!-- begin-UML-doc --> * <!-- end-UML-doc --> * @generated "UML to Java (com.ibm.xtools.transform.uml2.java5.internal.UML2JavaTransform)" */ virtual public void onCanCommit(CanCommitMessage message) { Logger.getInstance().log("Nie oczekiwano wiadomosci: CanCommit", LOGGER_NAME, Logger.Level.WARNING); }
public void onCanCommit(CanCommitMessage message) { state.onCanCommit(message); }