Michael DeHaan wrote: > Ben Riggs wrote: >> Michael DeHaan wrote: >> >>> Tom Brown wrote: >>> >>>> Hi >>>> >>>> # rpm -qa | grep cobbler >>>> cobbler-1.0.3-1 >>>> >>>> I was adding some boxes to cobbler with a script but had to kill it half >>>> way through due to a box being added by mistake. I killed it but now >>>> when i run a cobbler sync or try to restart cobbler i get this >>>> >>>> Starting cobbler daemon: Traceback (most recent call last): >>>> File "/usr/bin/cobblerd", line 32, in ? >>>> api = bootapi.BootAPI() >>>> File "/usr/lib/python2.3/site-packages/cobbler/api.py", line 73, in >>>> __init__ >>>> self.deserialize() >>>> File "/usr/lib/python2.3/site-packages/cobbler/api.py", line 381, in >>>> deserialize >>>> return self._config.deserialize() >>>> File "/usr/lib/python2.3/site-packages/cobbler/config.py", line 169, >>>> in deserialize >>>> if not serializer.deserialize(x,topological=True): >>>> File "/usr/lib/python2.3/site-packages/cobbler/serializer.py", line >>>> 88, in deserialize >>>> rc = storage_module.deserialize(obj,topological) >>>> File >>>> "/usr/lib/python2.3/site-packages/cobbler/modules/serializer_yaml.py", >>>> line 103, in deserialize >>>> datastruct = yaml.load(data).next() # first record >>>> File "/usr/lib/python2.3/site-packages/cobbler/yaml/load.py", line 89, >>>> in next >>>> self.nestedDocs.nestToNextLine() >>>> File "/usr/lib/python2.3/site-packages/cobbler/yaml/stream.py", line >>>> 137, in nestToNextLine >>>> indentation = indentLevel(line) >>>> File "/usr/lib/python2.3/site-packages/cobbler/yaml/stream.py", line >>>> 12, in indentLevel >>>> while n < len(line) and line[n] == ' ': >>>> TypeError: len() of unsized object >>>> [FAILED] >>>> >>>> Anyone got any ideas how to clean this back up again? >>>> >>>> thanks >>>> >>>> _______________________________________________ >>>> cobbler mailing list >>>> [email protected] >>>> https://fedorahosted.org/mailman/listinfo/cobbler >>>> >>>> >>> You will need to either fix or delete the offending config file in >>> /var/lib/cobbler. >>> >>> This is generally a good reason to keep backups of the files in that >>> directory. >>> >>> --Michael >>> _______________________________________________ >>> cobbler mailing list >>> [email protected] >>> https://fedorahosted.org/mailman/listinfo/cobbler >>> >> This issue is one we have run into a number of times as well. It arises >> from the way the yaml module handles the files. Right now, we are just >> careful to keep good backups (and to back the files up if we are going >> to be making major changes), but a better solution is to either fix >> cobbler/modules/serializer_yaml.py's interaction with the yaml module, >> or switch to a different serializer. >> >> Ben >> _______________________________________________ >> cobbler mailing list >> [email protected] >> https://fedorahosted.org/mailman/listinfo/cobbler >> > > Currently there is locking around access to this file using flock(). > > If you clobber writing a text file in the middle of writing a text file, > I'm not sure how you would intend to solve that. > > It is true we have alternative serializers (experimental!) available for > those that want to use them. That all being said, I haven't heard this > problem reported until this email, so I am not sure the problem is > widespread. If it is, we definitely would want to look further. > > One simple option we could do it have the serializer save the config of > each object in seperate files in a directory structure... though I'd want > to do this with a modification to serializer_yaml such that we could > automatically support new users w/o having an upgrade process. > > i.e. > > /var/lib/cobbler/config/distros/* > /var/lib/cobbler/config/profiles/* > /var/lib/cobbler/config/systems/* > /var/lib/cobbler/config/repos/* > > Finding object names would be as simple as globbing the directories. > Since cobbler would still load things into RAM, however, it would > probably make things slower. > > So, ultimately, I'm more in favor of just adding a crontab.weekly entry > to do regular backups, coupled with some simple code to detect > corruption and offer to restore the backup. Backups should be forceable > with a command like "cobbler backup". > > --Michael > > > _______________________________________________ > cobbler mailing list > [email protected] > https://fedorahosted.org/mailman/listinfo/cobbler
Just as a further FYI, the only times I've encountered the problem were either due to a user generated ctrl+c or a some sort of strange versioning/python conflict that caused a traceback (and, again, due to user error, not cobbler itself). _______________________________________________ cobbler mailing list [email protected] https://fedorahosted.org/mailman/listinfo/cobbler
