View | Details | Raw Unified | Return to bug 34648 | Differences between
and this patch

Collapse All | Expand All

(-)a/services/univention-s4-connector/modules/univention/s4connector/__init__.py (-10 / +14 lines)
 Lines 569-576   class ucs: Link Here 
569
		_d = ud.function('ldap._get_config_items')
569
		_d = ud.function('ldap._get_config_items')
570
		return self.config.items(section)
570
		return self.config.items(section)
571
571
572
	def _save_rejected_ucs(self, filename, dn):
572
	def _save_rejected_ucs(self, filename, dn, resync=True):
573
		_d = ud.function('ldap._save_rejected_ucs')
573
		_d = ud.function('ldap._save_rejected_ucs')
574
		if not resync:
575
			# Note that unescaped <> are invalid in DNs. See also:
576
			# `_list_rejected_ucs()`.
577
			dn = '<NORESYNC>' + dn
574
		modstring_dn = univention.s4connector.s4.compatible_modstring(dn)
578
		modstring_dn = univention.s4connector.s4.compatible_modstring(dn)
575
		self._set_config_option('UCS rejected', filename, modstring_dn)
579
		self._set_config_option('UCS rejected', filename, modstring_dn)
576
580
 Lines 584-593   class ucs: Link Here 
584
588
585
	def _list_rejected_ucs(self):
589
	def _list_rejected_ucs(self):
586
		_d = ud.function('ldap._list_rejected_ucs')
590
		_d = ud.function('ldap._list_rejected_ucs')
587
		result = []
591
		rejected = self._get_config_items('UCS rejected')
588
		for i in self._get_config_items('UCS rejected'):
592
		# Note that unescaped <> are invalid in DNs. See also:
589
			result.append(i)
593
		# `_save_rejected_ucs()`.
590
		return result
594
		return [(fn, dn) for (fn, dn) in rejected
595
			if not dn.startswith('<NORESYNC>')]
591
596
592
	def _list_rejected_filenames_ucs(self):
597
	def _list_rejected_filenames_ucs(self):
593
		_d = ud.function('ldap._list_rejected_filenames_ucs')
598
		_d = ud.function('ldap._list_rejected_filenames_ucs')
 Lines 748-757   class ucs: Link Here 
748
			return True  # file not found so there's nothing to sync
753
			return True  # file not found so there's nothing to sync
749
		except (cPickle.UnpicklingError, EOFError) as e:
754
		except (cPickle.UnpicklingError, EOFError) as e:
750
			message = 'file emtpy' if isinstance(e, EOFError) else e.message
755
			message = 'file emtpy' if isinstance(e, EOFError) else e.message
751
			ud.debug(ud.LDAP, ud.WARN,
756
			ud.debug(ud.LDAP, ud.ERROR,
752
				'__sync_file_from_ucs: invalid pickle file {}: {}'.format(filename, message))
757
				'__sync_file_from_ucs: invalid pickle file {}: {}'.format(filename, message))
753
			# ignore corrupted pickle file, but save as rejected to not try again
758
			# ignore corrupted pickle file, but save as rejected to not try again
754
			self._save_rejected_ucs(filename, 'unknown')
759
			self._save_rejected_ucs(filename, 'unknown', resync=False)
755
			return False
760
			return False
756
761
757
		if dn == 'cn=Subschema':
762
		if dn == 'cn=Subschema':
 Lines 1098-1107   class ucs: Link Here 
1098
						continue  # file not found so there's nothing to sync
1103
						continue  # file not found so there's nothing to sync
1099
					except (cPickle.UnpicklingError, EOFError) as e:
1104
					except (cPickle.UnpicklingError, EOFError) as e:
1100
						message = 'file emtpy' if isinstance(e, EOFError) else e.message
1105
						message = 'file emtpy' if isinstance(e, EOFError) else e.message
1101
						ud.debug(ud.LDAP, ud.WARN,
1106
						ud.debug(ud.LDAP, ud.ERROR,
1102
							'poll_ucs: invalid pickle file {}: {}'.format(filename, message))
1107
							'poll_ucs: invalid pickle file {}: {}'.format(filename, message))
1103
						# ignore corrupted pickle file, but save as rejected to not try again
1108
						# ignore corrupted pickle file, but save as rejected to not try again
1104
						self._save_rejected_ucs(filename, 'unknown')
1109
						self._save_rejected_ucs(filename, 'unknown', resync=False)
1105
						continue
1110
						continue
1106
1111
1107
					for i in [0, 1]:  # do it twice if the LDAP connection was closed
1112
					for i in [0, 1]:  # do it twice if the LDAP connection was closed
1108
- 

Return to bug 34648