Ejemplo n.º 1
0
 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());
         }
 }
Ejemplo n.º 2
0
        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());
            }
        }
Ejemplo n.º 3
0
 /** 
  * <!-- 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);
 }
Ejemplo n.º 4
0
 public void onCanCommit(CanCommitMessage message)
 {
     state.onCanCommit(message);
 }