# cleanup.
kill `cat ovsdb-server.pid`
AT_CLEANUP
+
+dnl ----------------------------------------------------------------------
+AT_SETUP([ovs-vswitchd -- invalid database path])
+
+# start an ovs-vswitchd process with invalid db path.
+ovs-vswitchd unix:invalid.db.sock --log-file=fakelog --enable-dummy --unixctl="`pwd`"/unixctl &
+
+# sleep for a while.
+sleep 10
+
+# stop the process.
+ovs-appctl -t `pwd`/unixctl exit
+
+# should not see this log (which indicates high cpu utilization).
+AT_CHECK([grep "wakeup due to" fakelog], [ignore])
+
+# check the fakelog, should not see any WARN/ERR/EMER log.
+AT_CHECK([sed -n "
+/|WARN|/p
+/|ERR|/p
+/|EMER|/p" fakelog
+])
+
+AT_CLEANUP
* with the current situation of multiple ovs-vswitchd daemons,
* disable system stats collection. */
system_stats_enable(false);
- /* This prevents the process from constantly waking up on
- * connectivity seq. */
- connectivity_seqno = seq_read(connectivity_seq_get());
return;
} else if (!ovsdb_idl_has_lock(idl)) {
return;
poll_timer_wait_until(stats_timer);
}
- /* If the status database transaction is 'TXN_INCOMPLETE' or is
- * unsuccessful, register a timeout in 'STATUS_CHECK_AGAIN_MSEC'. Else,
- * wait on the global connectivity sequence number. Note, this also helps
- * batch multiple status changes into one transaction. */
- if (force_status_commit) {
- poll_timer_wait_until(time_msec() + STATUS_CHECK_AGAIN_MSEC);
- } else {
- seq_wait(connectivity_seq_get(), connectivity_seqno);
+ /* This prevents the process from constantly waking up on
+ * connectivity seq, when there is no connection to ovsdb. */
+ if (ovsdb_idl_has_lock(idl)) {
+ /* If the status database transaction is 'TXN_INCOMPLETE' or is
+ * unsuccessful, register a timeout in 'STATUS_CHECK_AGAIN_MSEC'.
+ * Else, wait on the global connectivity sequence number. Note,
+ * this also helps batch multiple status changes into one
+ * transaction. */
+ if (force_status_commit) {
+ poll_timer_wait_until(time_msec() + STATUS_CHECK_AGAIN_MSEC);
+ } else {
+ seq_wait(connectivity_seq_get(), connectivity_seqno);
+ }
}
system_stats_wait();