async def _sync_revoc(self, rr_id: str, rr_size: int = None) -> None:
LOGGER.debug('<STR_LIT>', rr_id, rr_size)<EOL>(cd_id, tag) = rev_reg_id2cred_def_id__tag(rr_id)<EOL>try:<EOL><INDENT>await self.get_cred_def(cd_id)<EOL><DEDENT>except AbsentCredDef:<EOL><INDENT>LOGGER.debug(<EOL>'<STR_LIT>',<EOL>self._dir_tails,<EOL>cd_id)<EOL>raise AbsentCredDef('<STR_LIT>'.format(<EOL>self._dir_tails,<EOL>cd_id))<EOL><DEDENT>with REVO_CACHE.lock:<EOL><INDENT>revo_cache_entry = REVO_CACHE.get(rr_id, None)<EOL>tails = None if revo_cache_entry is None else revo_cache_entry.tails<EOL>if tails is None:  <EOL><INDENT>try:<EOL><INDENT>tails = await Tails(self._dir_tails, cd_id, tag).open()<EOL><DEDENT>except AbsentTails:<EOL><INDENT>await self._create_rev_reg(rr_id, rr_size)   <EOL>tails = await Tails(self._dir_tails, cd_id, tag).open()  <EOL><DEDENT>if revo_cache_entry is None:<EOL><INDENT>REVO_CACHE[rr_id] = RevoCacheEntry(None, tails)<EOL><DEDENT>else:<EOL><INDENT>REVO_CACHE[rr_id].tails = tails<EOL><DEDENT><DEDENT><DEDENT>LOGGER.debug('<STR_LIT>')<EOL>
Create revoc registry if need be for input revocation registry identifier;
open and cache tails file reader.

:param rr_id: revocation registry identifier
:param rr_size: if new revocation registry necessary, its size (default as per _create_rev_reg())