Skip to content

DistributedObjectUD.generateWithRequired*() broken #6

@kestred

Description

@kestred

Issue as reported by @TheCheapestPixels at Astron/Astron#281.


I updated Astrons Panda3D fork. Since then my code (https://github.com/TheCheapestPixels/astron_examples/tree/master/01_simple_example) won't run anymore, crashing on simple_example.py line 45 when trying to generate DistributedMaprootUD.

When using self.maproot.generateWithRequiredAndId(self.maproot, 0), I now get informed that:
TypeError: generateWithRequiredAndId() takes at least 4 arguments (3 given)
(Then again, I don't know why it worked in the first place.)

When using:

> self.maproot.generateWithRequiredAndId(self.maproot, 0, 0):
Traceback (most recent call last):
  File "./simple_example_server.py", line 102, in <module>
    simple_server.run()
  File "/usr/share/panda3d/direct/showbase/ShowBase.py", line 2932, in run
    self.taskMgr.run()
  File "/usr/share/panda3d/direct/task/Task.py", line 502, in run
    self.step()
  File "/usr/share/panda3d/direct/task/Task.py", line 460, in step
    self.mgr.poll()
  File "/usr/share/panda3d/direct/distributed/ConnectionRepository.py", line 613, in readerPollUntilEmpty
    while self.readerPollOnce():
  File "/usr/share/panda3d/direct/distributed/ConnectionRepository.py", line 618, in readerPollOnce
    if self.checkDatagram():
  File "/home/baribal/src/astron_examples/01_simple_example/simple_example.py", line 45, in set_maproot
    self.maproot.generateWithRequiredAndId(self.maproot, 0, 0)
  File "/usr/share/panda3d/direct/distributed/DistributedObjectUD.py", line 321, in generateWithRequiredAndId
    self.air.generateWithRequiredAndId(self, doId, parentId, zoneId, optionalFields)
  File "/usr/share/panda3d/direct/distributed/AstronInternalRepository.py", line 429, in generateWithRequiredAndId
    do.sendGenerateWithRequired(self, parentId, zoneId, optionalFields)
  File "/usr/share/panda3d/direct/distributed/DistributedObjectUD.py", line 381, in sendGenerateWithRequired
    optionalFields)
AttributeError: DistributedMaprootUD instance has no attribute '__trunc__'

Of course, that'd not be the right thing to do, either, as I do want an autogenerated doId, but still.

When using self.maproot.generateWithRequiredAndId(self.maproot, 123456, 0) (the doId is now in the StateServers range):

Traceback (most recent call last):
  File "./simple_example_server.py", line 102, in <module>
    simple_server.run()
  File "/usr/share/panda3d/direct/showbase/ShowBase.py", line 2932, in run
    self.taskMgr.run()
  File "/usr/share/panda3d/direct/task/Task.py", line 502, in run
    self.step()
  File "/usr/share/panda3d/direct/task/Task.py", line 460, in step
    self.mgr.poll()
  File "/usr/share/panda3d/direct/distributed/ConnectionRepository.py", line 613, in readerPollUntilEmpty
    while self.readerPollOnce():
  File "/usr/share/panda3d/direct/distributed/ConnectionRepository.py", line 618, in readerPollOnce
    if self.checkDatagram():
  File "/home/baribal/src/astron_examples/01_simple_example/simple_example.py", line 45, in set_maproot
    self.maproot.generateWithRequiredAndId(self.maproot, 123456, 0)
  File "/usr/share/panda3d/direct/distributed/DistributedObjectUD.py", line 321, in generateWithRequiredAndId
    self.air.generateWithRequiredAndId(self, doId, parentId, zoneId, optionalFields)
  File "/usr/share/panda3d/direct/distributed/AstronInternalRepository.py", line 428, in generateWithRequiredAndId
    self.addDOToTables(do, location=(parentId, zoneId))
  File "/usr/share/panda3d/direct/distributed/DoCollectionManager.py", line 402, in addDOToTables
    self.storeObjectLocation(do, location[0], location[1])
  File "/usr/share/panda3d/direct/showbase/PythonUtil.py", line 3543, in _exceptionLogged
    return f(*args, **kArgs)
  File "/usr/share/panda3d/direct/distributed/DoCollectionManager.py", line 360, in storeObjectLocation
    elif parentId not in (None, 0, self.getGameDoId()):
  File "/usr/share/panda3d/direct/distributed/DoCollectionManager.py", line 27, in getGameDoId
    return self.GameGlobalsId
AttributeError: 'AstronInternalRepository' object has no attribute 'GameGlobalsId'

Finally, the code that I actually do want to have and that IMO should work:

> self.maproot.generateWithRequired(self.maproot, 0)
Traceback (most recent call last):
  File "./simple_example_server.py", line 102, in <module>
    simple_server.run()
  File "/usr/share/panda3d/direct/showbase/ShowBase.py", line 2932, in run
    self.taskMgr.run()
  File "/usr/share/panda3d/direct/task/Task.py", line 502, in run
    self.step()
  File "/usr/share/panda3d/direct/task/Task.py", line 460, in step
    self.mgr.poll()
  File "/usr/share/panda3d/direct/distributed/ConnectionRepository.py", line 613, in readerPollUntilEmpty
    while self.readerPollOnce():
  File "/usr/share/panda3d/direct/distributed/ConnectionRepository.py", line 618, in readerPollOnce
    if self.checkDatagram():
  File "/home/baribal/src/astron_examples/01_simple_example/simple_example.py", line 46, in set_maproot
    self.maproot.generateWithRequired(self.maproot, 0)
  File "/usr/share/panda3d/direct/distributed/DistributedObjectUD.py", line 308, in generateWithRequired
    self.air.generateWithRequired(self, parentId, zoneId, optionalFields)
  File "/usr/share/panda3d/direct/distributed/AstronInternalRepository.py", line 418, in generateWithRequired
    self.generateWithRequiredAndId(do, doId, parentId, zoneId, optionalFields)
  File "/usr/share/panda3d/direct/distributed/AstronInternalRepository.py", line 429, in generateWithRequiredAndId
    do.sendGenerateWithRequired(self, parentId, zoneId, optionalFields)
  File "/usr/share/panda3d/direct/distributed/DistributedObjectUD.py", line 381, in sendGenerateWithRequired
    optionalFields)
AttributeError: DistributedMaprootUD instance has no attribute '__trunc__'

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions