Vivek Khera <[EMAIL PROTECTED]> writes:
> On Apr 8, 2008, at 4:29 PM, Jeff Frost wrote:
>> I think if the default event node wasn't always 1, but in fact the
>> current master, then things would be less painful when you end up
>> with a master that isn't node id 1.
>
> I think it would be even better if there was NO default event node. I
> intentionally avoid node number 1 just for this reason -- I can debug
> my scripts much more easily.

Reviewing the parser, there only seem to be the following slonik
commands that use a default of 1:

  INIT CLUSTER has default ID = 1
  STORE NODE has default EVENT NODE = 1
  DROP NODE has default EVENT NODE = 1
  FAILOVER has default BACKUP NODE = 1
  EXECUTE SCRIPT has default EVENT NODE = 1
  UPDATE FUNCTIONS has default ID = 1
  REPAIR CONFIG has default EVENT NODE = 1
  WAIT FOR EVENT has default WAIT ON = 1

It doesn't take a very big patch to implement the requirement that these:
a) Default to -1, and
b) Error out if left as -1

Index: parser.y
===================================================================
RCS file: /home/cvsd/slony1/slony1-engine/src/slonik/parser.y,v
retrieving revision 1.31
diff -c -u -r1.31 parser.y
--- parser.y    14 Feb 2008 22:21:42 -0000      1.31
+++ parser.y    9 Apr 2008 18:41:05 -0000
@@ -149,6 +149,7 @@
 %type <statement>      stmt_set_move_sequence
 %type <statement>      stmt_subscribe_set
 %type <statement>      stmt_unsubscribe_set
 %type <statement>      stmt_lock_set
 %type <statement>      stmt_unlock_set
 %type <statement>      stmt_move_set
@@ -174,6 +175,7 @@
 %token K_ADMIN
 %token K_ALL
 %token K_BACKUP
 %token K_CLIENT
 %token K_CLONE
 %token K_CLUSTER
@@ -229,6 +231,7 @@
 %token K_SET
 %token K_STORE
 %token K_SUBSCRIBE
 %token K_SUCCESS
 %token K_SWITCH
 %token K_TABLE
@@ -565,8 +568,8 @@
                                        {
                                                SlonikStmt_init_cluster *new;
                                                statement_option opt[] = {
-                                                       STMT_OPTION_INT( O_ID, 
1 ),
-                                                       STMT_OPTION_STR( 
O_COMMENT, "Primary Node 1" ),
+                                                       STMT_OPTION_INT( O_ID, 
-1 ),
+                                                       STMT_OPTION_STR( 
O_COMMENT, "Initial Node" ),
                                                        STMT_OPTION_END
                                                };
 
@@ -595,7 +598,7 @@
                                                statement_option opt[] = {
                                                        STMT_OPTION_INT( O_ID, 
-1 ),
                                                        STMT_OPTION_STR( 
O_COMMENT, NULL ),
-                                                       STMT_OPTION_INT( 
O_EVENT_NODE, 1 ),
+                                                       STMT_OPTION_INT( 
O_EVENT_NODE, -1 ),
                                                        STMT_OPTION_END
                                                };
 
@@ -624,7 +627,7 @@
                                                SlonikStmt_drop_node *new;
                                                statement_option opt[] = {
                                                        STMT_OPTION_INT( O_ID, 
-1 ),
-                                                       STMT_OPTION_INT( 
O_EVENT_NODE, 1 ),
+                                                       STMT_OPTION_INT( 
O_EVENT_NODE, -1 ),
                                                        STMT_OPTION_END
                                                };
 
@@ -652,7 +655,7 @@
                                                SlonikStmt_failed_node *new;
                                                statement_option opt[] = {
                                                        STMT_OPTION_INT( O_ID, 
-1 ),
-                                                       STMT_OPTION_INT( 
O_BACKUP_NODE, 1 ),
+                                                       STMT_OPTION_INT( 
O_BACKUP_NODE, -1 ),
                                                        STMT_OPTION_END
                                                };
                                        {
@@ -1304,7 +1331,7 @@
                                                statement_option opt[] = {
                                                        STMT_OPTION_INT( 
O_SET_ID, -1 ),
                                                        STMT_OPTION_STR( 
O_FILENAME, NULL ),
-                                                       STMT_OPTION_INT( 
O_EVENT_NODE, 1 ),
+                                                       STMT_OPTION_INT( 
O_EVENT_NODE, -1 ),
                                                        STMT_OPTION_INT( 
O_EXECUTE_ONLY_ON, -1 ),
                                                        STMT_OPTION_END
                                                };
@@ -1335,7 +1362,7 @@
                                        {
                                                SlonikStmt_update_functions 
*new;
                                                statement_option opt[] = {
-                                                       STMT_OPTION_INT( O_ID, 
1 ),
+                                                       STMT_OPTION_INT( O_ID, 
-1 ),
                                                        STMT_OPTION_END
                                                };
 
@@ -1361,7 +1388,7 @@
                                                SlonikStmt_repair_config *new;
                                                statement_option opt[] = {
                                                        STMT_OPTION_INT( 
O_SET_ID, -1 ),
-                                                       STMT_OPTION_INT( 
O_EVENT_NODE, 1 ),
+                                                       STMT_OPTION_INT( 
O_EVENT_NODE, -1 ),
                                                        STMT_OPTION_INT( 
O_EXECUTE_ONLY_ON, -1 ),
                                                        STMT_OPTION_END
                                                };
@@ -1393,7 +1420,7 @@
                                                statement_option opt[] = {
                                                        STMT_OPTION_INT( 
O_ORIGIN, -1 ),
                                                        STMT_OPTION_INT( 
O_WAIT_CONFIRMED, -1 ),
-                                                       STMT_OPTION_INT( 
O_WAIT_ON, 1 ),
+                                                       STMT_OPTION_INT( 
O_WAIT_ON, -1 ),
                                                        STMT_OPTION_INT( 
O_TIMEOUT, 600 ),
                                                        STMT_OPTION_END
                                                };
Index: slonik.c
===================================================================
RCS file: /home/cvsd/slony1/slony1-engine/src/slonik/slonik.c,v
retrieving revision 1.87
diff -c -u -r1.87 slonik.c
--- slonik.c    14 Feb 2008 22:21:42 -0000      1.87
+++ slonik.c    9 Apr 2008 18:41:05 -0000
@@ -29,6 +29,7 @@
 
 #include "postgres.h"
 #include "libpq-fe.h"
+#include "port.h"
 
 #include "slonik.h"
 #include "config.h"
@@ -315,7 +316,9 @@
 
                                        if (stmt->ev_origin < 0)
                                        {
-                                               stmt->ev_origin = 1;
+                                               printf("%s:%d: Error: require 
EVENT NODE\n", 
+                                                      hdr->stmt_filename, 
hdr->stmt_lno);
+                                               errors++;
                                        }
                                        if (stmt->no_id == stmt->ev_origin)
                                        {
@@ -335,6 +338,12 @@
                                        SlonikStmt_drop_node *stmt =
                                        (SlonikStmt_drop_node *) hdr;
 
+                                       if (stmt->ev_origin < 0)
+                                       {
+                                               printf("%s:%d: Error: require 
EVENT NODE\n", 
+                                                      hdr->stmt_filename, 
hdr->stmt_lno);
+                                               errors++;
+                                       }
                                        if (stmt->ev_origin == stmt->no_id)
                                        {
                                                printf("%s:%d: Error: "
@@ -352,6 +361,12 @@
                                        SlonikStmt_failed_node *stmt =
                                        (SlonikStmt_failed_node *) hdr;
 
+                                       if (stmt->backup_node < 0)
+                                       {
+                                               printf("%s:%d: Error: require 
BACKUP NODE\n", 
+                                                      hdr->stmt_filename, 
hdr->stmt_lno);
+                                               errors++;
+                                       }
                                        if (stmt->backup_node == stmt->no_id)
                                        {
                                                printf("%s:%d: Error: "
@@ -828,6 +843,21 @@
                                                errors++;
                                }
                                break;
+                        case STMT_CANCEL_SUBSCRIPTION:
+                               {
+                                       SlonikStmt_cancel_subscription *stmt =
+                                               (SlonikStmt_cancel_subscription 
*) hdr;
+                                       if (stmt->sub_setid < 0)
+                                       {
+                                               printf("%s:%d: Error: "
+                                                          "set id must be 
specified\n",
+                                                          hdr->stmt_filename, 
hdr->stmt_lno);
+                                               errors++;
+                                       }
+                                       if (script_check_adminfo(hdr, 
stmt->sub_node) < 0)
+                                               errors++;
+                               }
+                               break;
 
                        case STMT_LOCK_SET:
                                {
@@ -925,7 +955,9 @@
 
                                        if (stmt->ev_origin < 0)
                                        {
-                                               stmt->ev_origin = 1;
+                                               printf("%s:%d: Error: require 
EVENT NODE\n", 
+                                                      hdr->stmt_filename, 
hdr->stmt_lno);
+                                               errors++;
                                        }
                                        if (stmt->ddl_setid < 0)
                                        {
-- 
output = ("cbbrowne" "@" "acm.org")
http://www3.sympatico.ca/cbbrowne/linuxdistributions.html
Why is  it that  when you  transport something by  car, it's  called a
shipment, but when you transport something by ship, it's called cargo?
_______________________________________________
Slony1-general mailing list
[email protected]
http://lists.slony.info/mailman/listinfo/slony1-general

Reply via email to