Blatta 9986: Rebroadcast simple hearsay, embargo simple hearsay, more...

Version 9986 includes:

- rebroadcast simple hearsay messages
- embargo simple hearsay messages
- more granular db write locking that should eliminate occasional slqite3.Programming error exceptions
- Pass broadcast message bytes straight through instead of recompiling them before rebroadcast
- Better handling of AT entries with empty addresses
- Fix erroneous references to 'logger' that should have been 'logging'

9986-rebroadcast-simple-hearsay-and-more.vpatch

9986-rebroadcast-simple-hearsay-and-more.vpatch.thimbronion.sig

5 Responses to “Blatta 9986: Rebroadcast simple hearsay, embargo simple hearsay, more...”

  1. PeterL says:

    Crashed with something about threadding:

    $ Exception in thread Thread-1171:
    Traceback (most recent call last):
    File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner
    self.run()
    File "/usr/lib/python2.7/threading.py", line 754, in run
    self.__target(*self.__args, **self.__kwargs)
    File "/home/Lambert/alcuin/blatta-9986/blatta/lib/station.py", line 183, in send_rubbish
    "body": self.infosec.gen_rubbish_body()
    File "/home/Lambert/alcuin/blatta-9986/blatta/lib/infosec.py", line 81, in message
    for peer in self.state.get_keyed_peers():
    File "/home/Lambert/alcuin/blatta-9986/blatta/lib/state.py", line 246, in get_keyed_peers
    peer_ids = self.listify(self.cursor.execute("select peer_id from keys").fetchall())
    ProgrammingError: Recursive use of cursors not allowed.

    Exception in thread Thread-6876:
    Traceback (most recent call last):
    File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner
    self.run()
    File "/usr/lib/python2.7/threading.py", line 754, in run
    self.__target(*self.__args, **self.__kwargs)
    File "/home/Lambert/alcuin/blatta-9986/blatta/lib/station.py", line 99, in check_embargo_queue
    self.flush_hearsay_messages()
    File "/home/Lambert/alcuin/blatta-9986/blatta/lib/station.py", line 153, in flush_hearsay_messages
    self.rebroadcast(message)
    File "/home/Lambert/alcuin/blatta-9986/blatta/lib/station.py", line 170, in rebroadcast
    self.infosec.message(message)
    File "/home/Lambert/alcuin/blatta-9986/blatta/lib/infosec.py", line 70, in message
    self.state.log(message.speaker, message_bytes, target_peer)
    File "/home/Lambert/alcuin/blatta-9986/blatta/lib/state.py", line 128, in log
    (handle, peer_id, buffer(message_bytes)))
    ProgrammingError: Recursive use of cursors not allowed.

  2. thimbronion says:

    Traceback (most recent call last):
    File "/home/awt/bin/blatta-dev", line 149, in
    main(sys.argv)
    File "/home/awt/bin/blatta-dev", line 144, in main
    server.start()
    File "/home/awt/src/blatta/lib/server.py", line 169, in start
    self.station.handle_udp_data(bytes_address_pair)
    File "/home/awt/src/blatta/lib/station.py", line 72, in handle_udp_data
    self.conditionally_update_at(peer, message, address)
    File "/home/awt/src/blatta/lib/station.py", line 163, in conditionally_update_at
    "port": address[1]
    File "/home/awt/src/blatta/lib/state.py", line 173, in update_at
    (handle_id, peer["address"], peer["port"]))
    sqlite3.DatabaseError: unknown error

  3. thimbronion says:

    Exception in thread Thread-31142:
    Traceback (most recent call last):
    File "/home/awt/.pyenv/versions/2.7.14/lib/python2.7/threading.py", line 801, in __bootstrap_inner
    self.run()
    File "/home/awt/.pyenv/versions/2.7.14/lib/python2.7/threading.py", line 754, in run
    self.__target(*self.__args, **self.__kwargs)
    File "/home/awt/src/blatta/lib/station.py", line 188, in send_rubbish
    "body": self.infosec.gen_rubbish_body()
    File "/home/awt/src/blatta/lib/infosec.py", line 63, in message
    message_bytes = self.get_message_bytes(message, target_peer)
    File "/home/awt/src/blatta/lib/infosec.py", line 110, in get_message_bytes
    speaker = self._pad(message.speaker, MAX_SPEAKER_SIZE)
    File "/home/awt/src/blatta/lib/infosec.py", line 263, in _pad
    return text.ljust(size, "\x00")
    AttributeError: 'NoneType' object has no attribute 'ljust'

  4. PeterL says:

    I just noticed that in blatta/lib/server.py you "import sys" twice, you can probably take one of those out

  5. thimbronion says:

    PeterL, fixed in upcoming release, ty

Leave a Reply