@@ -59,6 +59,7 @@ class TModificationActorImpl: public NActors::TActorBootstrapped<TModificationAc
59
59
std::vector<NInternal::TTableRecord> Patches;
60
60
NInternal::TTableRecords RestoreObjectIds;
61
61
const NACLib::TUserToken UserToken = NACLib::TSystemUsers::Metadata();
62
+ const bool NewObjectsAllowed;
62
63
virtual bool PrepareRestoredObjects (std::vector<TObject>& objects) const = 0;
63
64
virtual bool ProcessPreparedObjects (NInternal::TTableRecords&& records) const = 0;
64
65
virtual void InitState () = 0;
@@ -67,39 +68,47 @@ class TModificationActorImpl: public NActors::TActorBootstrapped<TModificationAc
67
68
TModificationActorImpl (NInternal::TTableRecord&& patch,
68
69
IAlterController::TPtr controller,
69
70
const typename IObjectOperationsManager<TObject>::TPtr& manager,
70
- const IOperationsManager::TInternalModificationContext& context)
71
+ const IOperationsManager::TInternalModificationContext& context,
72
+ bool newObjectsAllowed = true )
71
73
: ExternalController(controller)
72
74
, Manager(manager)
73
- , Context(context) {
75
+ , Context(context)
76
+ , NewObjectsAllowed(newObjectsAllowed) {
74
77
Patches.emplace_back (std::move (patch));
75
78
}
76
79
77
80
TModificationActorImpl (const NInternal::TTableRecord& patch, IAlterController::TPtr controller,
78
81
const typename IObjectOperationsManager<TObject>::TPtr& manager,
79
- const IOperationsManager::TInternalModificationContext& context)
82
+ const IOperationsManager::TInternalModificationContext& context,
83
+ bool newObjectsAllowed = true )
80
84
: ExternalController(controller)
81
85
, Manager(manager)
82
- , Context(context) {
86
+ , Context(context)
87
+ , NewObjectsAllowed(newObjectsAllowed) {
83
88
Patches.emplace_back (patch);
84
89
}
85
90
86
91
TModificationActorImpl (std::vector<NInternal::TTableRecord>&& patches, IAlterController::TPtr controller,
87
92
const typename IObjectOperationsManager<TObject>::TPtr& manager,
88
- const IOperationsManager::TInternalModificationContext& context)
93
+ const IOperationsManager::TInternalModificationContext& context,
94
+ bool newObjectsAllowed = true )
89
95
: ExternalController(controller)
90
96
, Manager(manager)
91
97
, Context(context)
92
- , Patches(std::move(patches)) {
98
+ , Patches(std::move(patches))
99
+ , NewObjectsAllowed(newObjectsAllowed) {
93
100
94
101
}
95
102
96
103
TModificationActorImpl (const std::vector<NInternal::TTableRecord>& patches, IAlterController::TPtr controller,
97
104
const typename IObjectOperationsManager<TObject>::TPtr& manager,
98
- const IOperationsManager::TInternalModificationContext& context)
105
+ const IOperationsManager::TInternalModificationContext& context,
106
+ bool newObjectsAllowed = true )
99
107
: ExternalController(controller)
100
108
, Manager(manager)
101
109
, Context(context)
102
- , Patches(patches) {
110
+ , Patches(patches)
111
+ , NewObjectsAllowed(newObjectsAllowed) {
103
112
104
113
}
105
114
@@ -255,6 +264,10 @@ class TModificationActor: public TModificationActorImpl<TObject> {
255
264
}
256
265
}
257
266
if (!found) {
267
+ if (!TBase::NewObjectsAllowed) {
268
+ TBase::ExternalController->OnAlteringProblem (" object with specified key not found" );
269
+ return false ;
270
+ }
258
271
TObject object;
259
272
if (!TObject::TDecoder::DeserializeFromRecord (object, p)) {
260
273
TBase::ExternalController->OnAlteringProblem (" cannot parse new object" );
0 commit comments