.build()); mInodeTree.updateInode(journalContext, UpdateInodeEntry.newBuilder() .setId(inode.getId()) .setPersistenceState(PersistenceState.PERSISTED.name()) .build()); propagatePersistedInternal(journalContext, inodePath); Metrics.FILES_PERSISTED.inc();
.setId(dir.getId()) .setPersistenceState(PersistenceState.TO_BE_PERSISTED.name()) .build()); UpdateInodeEntry.Builder entry = UpdateInodeEntry.newBuilder() .setId(dir.getId()); syncPersistDirectory(dir).ifPresent(status -> { if (isRootId(dir.getId())) { entry.setOwner(status.getOwner()) .setGroup(status.getGroup()) .setMode(status.getMode()); entry.setLastModificationTimeMs(lastModificationTime) .setOverwriteModificationTime(true); entry.setPersistenceState(PersistenceState.PERSISTED.name()); mState.applyAndJournal(context, entry.build()); return;
.build()); mState.applyAndJournal(rpcContext, UpdateInodeEntry.newBuilder() .setId(inode.getId()) .setPinned(newMin > 0) .setLastModificationTimeMs(opTimeMs) .build()); } else { for (Inode child : mInodeStore.getChildren(inode.asDirectory())) {
subBuilder.mergeFrom(updateInode_); updateInode_ = subBuilder.buildPartial();
if (updatedLastModified < context.getOperationTimeMs()) { mState.applyAndJournal(rpcContext, UpdateInodeEntry.newBuilder() .setId(currentId) .setLastModificationTimeMs(context.getOperationTimeMs()) .build());
UpdateInodeEntry.Builder entry = UpdateInodeEntry.newBuilder().setId(inode.getId()); if (protoOptions.hasReplicationMax() || protoOptions.hasReplicationMin()) { Integer replicationMax = if (inode.getTtl() != ttl || inode.getTtlAction() != protoOptions.getTtlAction()) { if (inode.getTtl() != ttl) { entry.setTtl(ttl); entry.setLastModificationTimeMs(opTimeMs); entry.setTtlAction(ProtobufUtils.toProtobuf(protoOptions.getTtlAction())); .checkArgument(protoOptions.getPersisted(), PreconditionMessage.ERR_SET_STATE_UNPERSIST); if (!inode.asFile().isPersisted()) { entry.setPersistenceState(PersistenceState.PERSISTED.name()); entry.setLastModificationTimeMs(context.getOperationTimeMs()); propagatePersistedInternal(rpcContext, inodePath); Metrics.FILES_PERSISTED.inc(); entry.setUfsFingerprint(context.getUfsFingerprint()); entry.setOwner(protoOptions.getOwner()); entry.setGroup(protoOptions.getGroup()); entry.setMode(ModeUtils.protoToShort(protoOptions.getMode())); mInodeTree.updateInode(rpcContext, entry.build());
.setId(inode.getId()) .setUfsFingerprint(ufsFingerprint) .setLastModificationTimeMs(opTimeMs) .setOverwriteModificationTime(true) .build()); mInodeTree.updateInodeFile(rpcContext, entry.build());
public Builder mergeFrom(alluxio.proto.journal.File.UpdateInodeEntry other) { if (other == alluxio.proto.journal.File.UpdateInodeEntry.getDefaultInstance()) return this; if (other.hasId()) { setId(other.getId()); setParentId(other.getParentId()); onChanged(); onChanged(); setPinned(other.getPinned()); setCreationTimeMs(other.getCreationTimeMs()); setLastModificationTimeMs(other.getLastModificationTimeMs()); setOverwriteModificationTime(other.getOverwriteModificationTime()); onChanged(); onChanged(); setMode(other.getMode()); setTtl(other.getTtl()); setTtlAction(other.getTtlAction()); mergeAcl(other.getAcl());
.setId(inode.getId()) .setTtl(Constants.NO_TTL) .setTtlAction(ProtobufUtils.toProtobuf(TtlAction.DELETE)) .build());
.setId(inodeDirectory.getId()) .setUfsFingerprint(ufsFingerprint) .build());
case TO_BE_PERSISTED: mInodeTree.updateInode(journalContext, UpdateInodeEntry.newBuilder() .setId(inode.getId()) .setPersistenceState(PersistenceState.NOT_PERSISTED.name()) .build()); mInodeTree.updateInodeFile(journalContext, UpdateInodeFileEntry.newBuilder() .setId(inode.getId())
private void apply(SetAttributeEntry entry) { Builder builder = UpdateInodeEntry.newBuilder(); builder.setId(entry.getId()); if (entry.hasGroup()) { builder.setGroup(entry.getGroup()); builder.setLastModificationTimeMs(entry.getOpTimeMs()); builder.setOwner(entry.getOwner()); builder.setMode((short) entry.getPermission()); builder.setPersistenceState(PersistenceState.PERSISTED.name()); } else { builder.setPersistenceState(PersistenceState.NOT_PERSISTED.name()); builder.setPinned(entry.getPinned()); builder.setTtl(entry.getTtl()); builder.setTtlAction(entry.getTtlAction()); builder.setUfsFingerprint(entry.getUfsFingerprint()); apply(builder.build());
.setId(inode.getId()) .setPinned(pinned) .setLastModificationTimeMs(opTimeMs) .build());
.setId(ancestor.getId()) .setPersistenceState(PersistenceState.PERSISTED.name()) .build());
/** * <code>optional .alluxio.proto.journal.UpdateInodeEntry update_inode = 35;</code> */ public Builder mergeUpdateInode(alluxio.proto.journal.File.UpdateInodeEntry value) { if (updateInodeBuilder_ == null) { if (((bitField0_ & 0x00400000) == 0x00400000) && updateInode_ != null && updateInode_ != alluxio.proto.journal.File.UpdateInodeEntry.getDefaultInstance()) { updateInode_ = alluxio.proto.journal.File.UpdateInodeEntry.newBuilder(updateInode_).mergeFrom(value).buildPartial(); } else { updateInode_ = value; } onChanged(); } else { updateInodeBuilder_.mergeFrom(value); } bitField0_ |= 0x00400000; return this; } /**
@Override public void heartbeat() { for (long fileId : mFileSystemMaster.getLostFiles()) { // update the state try (JournalContext journalContext = mFileSystemMaster.createJournalContext(); LockedInodePath inodePath = mInodeTree.lockFullInodePath(fileId, LockPattern.WRITE_INODE)) { Inode inode = inodePath.getInode(); if (inode.getPersistenceState() != PersistenceState.PERSISTED) { mInodeTree.updateInode(journalContext, UpdateInodeEntry.newBuilder() .setId(inode.getId()) .setPersistenceState(PersistenceState.LOST.name()) .build()); } } catch (FileDoesNotExistException e) { LOG.debug("Exception trying to get inode from inode tree", e); } catch (UnavailableException e) { LOG.warn("Failed to run lost file detector: {}", e.toString()); } } }
@Override public void scheduleAsyncPersistence(AlluxioURI path) throws AlluxioException, UnavailableException { // We retry an async persist request until ufs permits the operation try (RpcContext rpcContext = createRpcContext(); LockedInodePath inodePath = mInodeTree.lockFullInodePath(path, LockPattern.WRITE_INODE)) { mInodeTree.updateInode(rpcContext, UpdateInodeEntry.newBuilder() .setId(inodePath.getInode().getId()) .setPersistenceState(PersistenceState.TO_BE_PERSISTED.name()) .build()); mPersistRequests.put(inodePath.getInode().getId(), new alluxio.time.ExponentialTimer( ServerConfiguration.getMs(PropertyKey.MASTER_PERSISTENCE_INITIAL_INTERVAL_MS), ServerConfiguration.getMs(PropertyKey.MASTER_PERSISTENCE_MAX_INTERVAL_MS), ServerConfiguration.getMs(PropertyKey.MASTER_PERSISTENCE_INITIAL_WAIT_TIME_MS), ServerConfiguration.getMs(PropertyKey.MASTER_PERSISTENCE_MAX_TOTAL_WAIT_TIME_MS))); } }
/** * <code>optional .alluxio.proto.journal.UpdateInodeEntry update_inode = 35;</code> */ public Builder setUpdateInode( alluxio.proto.journal.File.UpdateInodeEntry.Builder builderForValue) { if (updateInodeBuilder_ == null) { updateInode_ = builderForValue.build(); onChanged(); } else { updateInodeBuilder_.setMessage(builderForValue.build()); } bitField0_ |= 0x00400000; return this; } /**
private void apply(CompleteFileEntry entry) { apply(UpdateInodeEntry.newBuilder() .setId(entry.getId()) .setLastModificationTimeMs(entry.getOpTimeMs()) .setOverwriteModificationTime(true) .setUfsFingerprint(entry.getUfsFingerprint()) .build()); apply(UpdateInodeFileEntry.newBuilder() .setId(entry.getId()) .setLength(entry.getLength()) .addAllSetBlocks(entry.getBlockIdsList()) .build()); }