~didrocks/ubuntuone-client/use_result_var

« back to all changes in this revision

Viewing changes to ubuntuone/syncdaemon/main.py

  • Committer: Bazaar Package Importer
  • Author(s): Rodney Dawes
  • Date: 2011-01-07 10:36:49 UTC
  • mfrom: (1.1.42 upstream)
  • Revision ID: james.westby@ubuntu.com-20110107103649-wy7te58dl47kwfgs
Tags: 1.5.2-0ubuntu1
* New upstream release.
  - ImportError: No module named tools (LP: #692566)
  - Preferences doesn't display info properly (LP: #657850)
  - Ubuntu One crashes in scan() (LP: #692496)A
  - Provide a specific login D-Bus service (LP: #697211)

Show diffs side-by-side

added added

removed removed

Lines of Context:
30
30
    event_queue,
31
31
    filesystem_manager,
32
32
    hash_queue,
33
 
    event_logging,
34
33
    events_nanny,
35
34
    local_rescan,
36
35
    sync,
 
36
    tritcask,
37
37
    volume_manager,
38
38
)
39
39
from ubuntuone import syncdaemon
40
40
import ubuntuone.platform
41
41
 
 
42
from ubuntuone.platform import event_logging
42
43
from ubuntuone.syncdaemon.states import StateManager, QueueManager
43
44
 
44
45
 
84
85
        self.shares_dir_link = os.path.join(self.root_dir, shares_symlink_name)
85
86
        self.data_dir = data_dir
86
87
        self.partials_dir = partials_dir
 
88
        self.tritcask_dir = os.path.join(self.data_dir, 'tritcask')
87
89
        self.logger = logging.getLogger('ubuntuone.SyncDaemon.Main')
88
90
        user_config = config.get_user_config()
89
91
        if read_limit is None:
93
95
        if not throttling_enabled:
94
96
            throttling_enabled = user_config.get_throttling()
95
97
 
 
98
        self.db = tritcask.Tritcask(self.tritcask_dir)
96
99
        self.vm = volume_manager.VolumeManager(self)
97
 
        self.fs = filesystem_manager.FileSystemManager(data_dir,
98
 
                                                       partials_dir, self.vm)
 
100
        self.fs = filesystem_manager.FileSystemManager(
 
101
            data_dir, partials_dir, self.vm, self.db)
99
102
        self.event_q = event_queue.EventQueue(self.fs, ignore_files)
100
103
        self.fs.register_eq(self.event_q)
101
104
 
128
131
 
129
132
        self.action_q.content_queue.set_change_notification_cb(
130
133
            self.external.change_notification)
131
 
        self.zg_listener = event_logging.ZeitgeistListener(self.fs, self.vm)
132
 
        self.event_q.subscribe(self.zg_listener)
 
134
 
 
135
        self.eventlog_listener = None
 
136
        self.start_event_logger()
133
137
        self.logger.info("Using %r as root dir", self.root_dir)
134
138
        self.logger.info("Using %r as data dir", self.data_dir)
135
139
        self.logger.info("Using %r as shares root dir", self.shares_dir)
136
140
        self.mark = task.LoopingCall(self.log_mark)
137
141
        self.mark.start(mark_interval)
138
142
 
 
143
    def start_event_logger(self):
 
144
        """Start the event logger if it's available for this platform."""
 
145
        self.eventlog_listener = event_logging.get_listener(self.fs, self.vm)
 
146
        if self.eventlog_listener:
 
147
            self.event_q.subscribe(self.eventlog_listener)
 
148
 
139
149
    def log_mark(self):
140
150
        """Log a "mark" that includes the current AQ state and queue size."""
141
151
        self.logger.note("---- MARK (state: %s; queues: metadata: %d; content:"
142
 
                         " %d; hash: %d, fsm-cache: hit=%d miss=%d) ----",
 
152
                         " %d; hash: %d) ----",
143
153
                         self.state_manager, len(self.action_q.meta_queue),
144
 
                         len(self.action_q.content_queue), len(self.hash_q),
145
 
                         self.fs.fs.cache_hits, self.fs.fs.cache_misses)
 
154
                         len(self.action_q.content_queue), len(self.hash_q))
146
155
 
147
156
    def wait_for_nirvana(self, last_event_interval=0.5):
148
157
        """Get a deferred that will fire on Nirvana.
192
201
        self.event_q.push('SYS_USER_DISCONNECT')
193
202
        self.event_q.shutdown()
194
203
        self.hash_q.shutdown()
 
204
        self.db.shutdown()
195
205
        self.state_manager.shutdown()
196
206
        self.external.shutdown(with_restart)
197
207
        self.mark.stop()