4 new revisions:

Revision: 2ab6848a2e23
Author:   Gary Dusbabek <gdusba...@gmail.com>
Date:     Fri Nov 11 08:28:13 2011
Log: Use a different route for logging CQL queries. Patch by Tomaz Muraus (...
http://code.google.com/a/apache-extras.org/p/cassandra-node/source/detail?r=2ab6848a2e23

Revision: e08994af7783
Author:   Gary Dusbabek <gdusba...@gmail.com>
Date:     Fri Nov 11 08:40:52 2011
Log: Fix race condition in driver test. Patch by Tomaz Muraus (tomaz.muraus...
http://code.google.com/a/apache-extras.org/p/cassandra-node/source/detail?r=e08994af7783

Revision: 1f91baccc2b6
Author:   Gary Dusbabek <gdusba...@gmail.com>
Date:     Fri Nov 11 08:48:27 2011
Log: test for logging and new timing. Patch by Tomaz Muraus (tomaz.muraus@g...
http://code.google.com/a/apache-extras.org/p/cassandra-node/source/detail?r=1f91baccc2b6

Revision: 452d56cdf40c
Author:   Gary Dusbabek <gdusba...@gmail.com>
Date:     Fri Nov 11 08:57:42 2011
Log:      convert cql query to a string prior to logging it
http://code.google.com/a/apache-extras.org/p/cassandra-node/source/detail?r=452d56cdf40c

==============================================================================
Revision: 2ab6848a2e23
Author:   Gary Dusbabek <gdusba...@gmail.com>
Date:     Fri Nov 11 08:28:13 2011
Log: Use a different route for logging CQL queries. Patch by Tomaz Muraus (tomaz.mur...@gmail.com)

http://code.google.com/a/apache-extras.org/p/cassandra-node/source/detail?r=2ab6848a2e23

Modified:
 /lib/driver.js

=======================================
--- /lib/driver.js      Fri Nov 11 07:49:04 2011
+++ /lib/driver.js      Fri Nov 11 08:28:13 2011
@@ -18,6 +18,9 @@
 /** node.js driver for Cassandra-CQL. */

 var log = require('logmagic').local('node-cassandra-client.driver');
+var logCql = require('logmagic').local('node-cassandra-client.driver.cql');
+var logTiming = require('logmagic').local('node-cassandra-client.driver.timing');
+
 var sys = require('sys');
 var Buffer = require('buffer').Buffer;
 var EventEmitter = require('events').EventEmitter;
@@ -185,6 +188,7 @@
   this.holdFor = 10000;
   this.current_node = 0;
   this.use_bigints = config.use_bigints ? true : false;
+  this.log_time = config.log_time || false;

   // Construct a list of nodes from hosts in <host>:<port> form
   for (var i = 0; i < config.hosts.length; i++) {
@@ -234,7 +238,8 @@
                                    keyspace: config.keyspace,
                                    user: config.user,
                                    pass: config.pass,
-                                   use_bigints: self.use_bigints});
+                                   use_bigints: self.use_bigints,
+                                   log_time: self.log_time});

              conn.connect(function(err) {
                if (!err) {                   // Success, we're connected
@@ -324,7 +329,7 @@

 /**
  * @param options: valid parts are:
- *  user, pass, host, port, keyspace, use_bigints
+ *  user, pass, host, port, keyspace, use_bigints, log_time
  */
 Connection = module.exports.Connection = function(options) {
   log.info('connecting ' + options.host + ':' + options.port);
@@ -452,9 +457,20 @@
   if (cql === nullBindError) {
     callback(new Error(nullBindError.message));
   } else {
-    var self = this;
-    log.trace1('CQL QUERY: ' + cql);
+    var self = this,
+        start, end, diff;
+
+    start = new Date().getTime();
+ logCql.trace('CQL QUERY', {'query': query, 'parameterized_query': cql, 'args': args});
+
this.client.execute_cql_query(cql, ttypes.Compression.NONE, function(err, res) {
+      end = new Date().getTime();
+      diff = (end - start);
+      if (self.connectionInfo.log_time) {
+ logTiming.trace('CQL QUERY TIMING', {'query': query, 'parameterized_query': cql, 'args': args,
+                                             'time': diff});
+      }
+
       if (err) {
         amendError(err);
         callback(err, null);

==============================================================================
Revision: e08994af7783
Author:   Gary Dusbabek <gdusba...@gmail.com>
Date:     Fri Nov 11 08:40:52 2011
Log: Fix race condition in driver test. Patch by Tomaz Muraus (tomaz.mur...@gmail.com)

http://code.google.com/a/apache-extras.org/p/cassandra-node/source/detail?r=e08994af7783

Modified:
 /test/test_driver.js

=======================================
--- /test/test_driver.js        Fri Nov 11 07:49:04 2011
+++ /test/test_driver.js        Fri Nov 11 08:40:52 2011
@@ -19,6 +19,7 @@
 var assert = require('assert');
 var console = require('console');
 var EventEmitter = require('events').EventEmitter;
+var async = require('async');

 var BigInteger = require('../lib/bigint').BigInteger;

@@ -777,21 +778,26 @@
   var hosts = ["127.0.0.1:19170"];
var conn = new PooledConnection({'hosts': hosts, 'keyspace': 'Keyspace1', use_bigints: true});

+  var range = new Array(100).join(' ').split(' ');
+
   // Hammer time...
   conn.execute('UPDATE CfUgly SET A=1 WHERE KEY=1', [], function(err) {
     if (err) { bail(conn, err); }
-
-    for (var i = 0; i < 100; i++) {
+
+    async.forEach(range, function (_, callback) {
conn.execute('SELECT A FROM CfUgly WHERE KEY=1', [], function(err, rows) {
         if (err) { bail(conn, err); }
         assert.strictEqual(rows.rowCount(), 1);
         var row = rows[0];
         assert.strictEqual(row.cols[0].name.toString(), 'A');
+        callback();
       });
-    }
-
-    conn.shutdown();
-    test.finish();
+    },
+
+    function(err) {
+      conn.shutdown();
+      test.finish();
+    });
   });
 };


==============================================================================
Revision: 1f91baccc2b6
Author:   Gary Dusbabek <gdusba...@gmail.com>
Date:     Fri Nov 11 08:48:27 2011
Log: test for logging and new timing. Patch by Tomaz Muraus (tomaz.mur...@gmail.com)

http://code.google.com/a/apache-extras.org/p/cassandra-node/source/detail?r=1f91baccc2b6

Modified:
 /test/test_driver.js

=======================================
--- /test/test_driver.js        Fri Nov 11 08:40:52 2011
+++ /test/test_driver.js        Fri Nov 11 08:48:27 2011
@@ -19,6 +19,8 @@
 var assert = require('assert');
 var console = require('console');
 var EventEmitter = require('events').EventEmitter;
+
+var logmagic = require('logmagic');
 var async = require('async');

 var BigInteger = require('../lib/bigint').BigInteger;
@@ -801,4 +803,63 @@
   });
 };

-
+exports.testTimeLogging = function(test, assert) {
+  var hosts = ["127.0.0.1:19170"];
+ var baseOptions = {'hosts': hosts, 'keyspace': 'Keyspace1', use_bigints: true};
+  var options1 = merge(baseOptions, {});
+  var options2 = merge(baseOptions, {'log_time': true});
+  var conn1 = new PooledConnection(options1);
+  var conn2 = new PooledConnection(options2);
+
+  var logObjsCql = [];
+  var logObjsTime = [];
+
+  logmagic.registerSink('cql_sink', function(module, level, message, obj) {
+    logObjsCql.push(arguments);
+  });
+
+ logmagic.registerSink('timing_sink', function(module, level, message, obj) {
+    logObjsTime.push(arguments);
+  });
+
+ logmagic.route('node-cassandra-client.driver.cql', logmagic.TRACE1, 'cql_sink'); + logmagic.route('node-cassandra-client.driver.timing', logmagic.TRACE1, 'timing_sink');
+
+  conn1.execute('UPDATE CfUgly SET A=1 WHERE KEY=1', [], function(err) {
+    var logObj;
+    assert.ifError(err);
+
+    // Timing log is disabled, logObjs should be empty.
+    assert.equal(logObjsCql.length, 1);
+    assert.equal(logObjsTime.length, 0);
+
+    logObj = logObjsCql[0];
+    assert.ok(logObj[3].hasOwnProperty('query'));
+    assert.ok(logObj[3].hasOwnProperty('parameterized_query'));
+    assert.ok(logObj[3].hasOwnProperty('args'));
+    assert.ok(!logObj[3].hasOwnProperty('time'));
+
+ conn2.execute('SELECT A FROM CfUgly WHERE KEY=1', [], function(err, rows) {
+      var logObj;
+      assert.ifError(err);
+      assert.strictEqual(rows.rowCount(), 1);
+
+      // Timing log is enabled, logObjs should have 1 item
+      assert.equal(logObjsCql.length, 2);
+      assert.equal(logObjsTime.length, 1);
+      logObj = logObjsTime[0];
+
+      assert.ok(logObj[3].hasOwnProperty('query'));
+      assert.ok(logObj[3].hasOwnProperty('parameterized_query'));
+      assert.ok(logObj[3].hasOwnProperty('args'));
+      assert.ok(logObj[3].hasOwnProperty('time'));
+
+      conn1.shutdown();
+      conn2.shutdown();
+      test.finish();
+    });
+  });
+};
+
+
+

==============================================================================
Revision: 452d56cdf40c
Author:   Gary Dusbabek <gdusba...@gmail.com>
Date:     Fri Nov 11 08:57:42 2011
Log:      convert cql query to a string prior to logging it

http://code.google.com/a/apache-extras.org/p/cassandra-node/source/detail?r=452d56cdf40c

Modified:
 /lib/driver.js

=======================================
--- /lib/driver.js      Fri Nov 11 08:28:13 2011
+++ /lib/driver.js      Fri Nov 11 08:57:42 2011
@@ -458,16 +458,17 @@
     callback(new Error(nullBindError.message));
   } else {
     var self = this,
+        cqlString = cql.toString(),
         start, end, diff;

     start = new Date().getTime();
- logCql.trace('CQL QUERY', {'query': query, 'parameterized_query': cql, 'args': args}); + logCql.trace('CQL QUERY', {'query': query, 'parameterized_query': cqlString, 'args': args});

this.client.execute_cql_query(cql, ttypes.Compression.NONE, function(err, res) {
       end = new Date().getTime();
       diff = (end - start);
       if (self.connectionInfo.log_time) {
- logTiming.trace('CQL QUERY TIMING', {'query': query, 'parameterized_query': cql, 'args': args, + logTiming.trace('CQL QUERY TIMING', {'query': query, 'parameterized_query': cqlString, 'args': args,
                                              'time': diff});
       }

Reply via email to