示例#1
0
                            raise sys.exc_info()[0](err_str + str(e))

                        if not new_entry:
                            old_metadata = NetInfMetaData()
                            old_metadata.set_json_val(js)
                            if not old_metadata.merge_latest_details(metadata):
                                err_str = "put_cache: Mismatched information in metadata update: %s" % \
                                          ni_url
                                self.logerror(err_str)
                                if content_added:
                                    os.remove(cfn)
                                raise ValueError(err_str)
                            
                        err_str = "put_cache: problem storing metadata record %s: " % mfk
                        try:
                            new_metadata_str = json.dumps(old_metadata.json_val())
                        except Exception, e:
                            self.logerror(err_str + str(e))
                            if content_added:
                                os.remove(cfn)
                            raise sys.exc_info()[0](err_str + str(e))

                        cfs = "yes" if content_exists else "no"

                        # Write back into Redis
                        val_dict = {}
                        val_dict["metadata"] = new_metadata_str
                        val_dict["content_file_exists"] = cfs
                        # Start a transaction
                        redis_pipe.multi()
                        # Push the data update
示例#2
0
                old_metadata.set_json_val(js)
                if not old_metadata.merge_latest_details(metadata):
                    err_str = "put_cache: Mismatched information in metadata update: %s" % \
                              ni_url
                    self.logerror(err_str)
                    if content_added:
                        os.remove(cfn)
                    raise ValueError(err_str)
                
            err_str = "put_cache: problem writing metadata file %s: " % mfn
            try:
                # Empty existing file (might be empty already but don't care)
                f.seek(0, os.SEEK_SET)
                f.truncate(0)

                json.dump(old_metadata.json_val(), f)
                fcntl.flock(mfd, fcntl.LOCK_UN)
                f.close()
            except Exception, e:
                self.logerror(err_str + str(e))
                if content_added:
                    os.remove(cfn)
                raise sys.exc_info()[0](err_str + str(e))

            # End of with self.cache_write_lock
        return (old_metadata, cfn if content_exists else None,
                new_entry, ignore_duplicate)

    #--------------------------------------------------------------------------#
    def cache_get(self, ni_name):
        """