# Buggy code
def __init__(self, *args, **kwargs):
    # Free-for-all entries require special treatment
    if "public_key" in kwargs and kwargs["public_key"] == NULL_KEY:
        # To produce a relatively unique id_ we take a few bytes of the infohash and convert it to a number.
        # abs is necessary as the conversion can produce a negative value, and we do not support that.
        kwargs["id_"] = (
            kwargs["id_"] if "id_" in kwargs else infohash_to_id(kwargs["infohash"])
        )

    if "health" not in kwargs and "infohash" in kwargs:
        kwargs["health"] = db.TorrentState.get(
            infohash=kwargs["infohash"]
        ) or db.TorrentState(infohash=kwargs["infohash"])
    if "xxx" not in kwargs:
        kwargs["xxx"] = default_xxx_filter.isXXXTorrentMetadataDict(kwargs)

    super(TorrentMetadata, self).__init__(*args, **kwargs)

    if "tracker_info" in kwargs:
        self.add_tracker(kwargs["tracker_info"])


# Traceback (RuntimeError)
Traceback (most recent call last):
File "TriblerGUI\event_request_manager.py", line 114, in on_read_data
RuntimeError: [Failure instance: Traceback: <class 'pony.orm.core.TransactionIntegrityError'>: Object TorrentMetadata[new:47] cannot be stored in the database. IntegrityError: UNIQUE constraint failed: ChannelNode.public_key, ChannelNode.id_
Tribler\Core\Modules\restapi\torrentinfo_endpoint.py:135:render_GET
Tribler\Core\Modules\restapi\torrentinfo_endpoint.py:109:on_file
lib\site-packages\twisted\internet\defer.py:459:callback
lib\site-packages\twisted\internet\defer.py:567:_startRunCallbacks
--- <exception caught here> ---
lib\site-packages\twisted\internet\defer.py:653:_runCallbacks
Tribler\Core\Modules\restapi\torrentinfo_endpoint.py:70:on_got_metainfo
<auto generated wrapper of add_ffa_from_tdef() function>:2:add_ffa_from_tdef
lib\site-packages\pony\orm\core.py:543:new_func
lib\site-packages\pony\orm\core.py:528:new_func
Tribler\Core\Modules\MetadataStore\OrmBindings\torrent_metadata.py:98:add_ffa_from_tdef
Tribler\Core\Modules\MetadataStore\OrmBindings\channel_node.py:213:from_dict
Tribler\Core\Modules\MetadataStore\OrmBindings\torrent_metadata.py:77:__init__
Tribler\Core\Modules\MetadataStore\OrmBindings\torrent_metadata.py:82:add_tracker
lib\site-packages\pony\orm\core.py:3950:get
lib\site-packages\pony\orm\core.py:4053:_find_one_
lib\site-packages\pony\orm\core.py:4112:_find_in_db_
lib\site-packages\pony\orm\core.py:934:_exec_sql
lib\site-packages\pony\orm\core.py:1797:prepare_connection_for_query_execution
lib\site-packages\pony\orm\core.py:1883:flush
lib\site-packages\pony\orm\core.py:5357:_save_
lib\site-packages\pony\orm\core.py:5201:_save_created_
lib\site-packages\pony\utils\utils.py:106:throw
]

# Fixed code
def __init__(self, *args, **kwargs):
    if "health" not in kwargs and "infohash" in kwargs:
        kwargs["health"] = db.TorrentState.get(
            infohash=kwargs["infohash"]
        ) or db.TorrentState(infohash=kwargs["infohash"])
    if "xxx" not in kwargs:
        kwargs["xxx"] = default_xxx_filter.isXXXTorrentMetadataDict(kwargs)

    super(TorrentMetadata, self).__init__(*args, **kwargs)

    if "tracker_info" in kwargs:
        self.add_tracker(kwargs["tracker_info"])