-
Notifications
You must be signed in to change notification settings - Fork 21
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
add force operation to delete all zero compaction stat ranges; add aс…
…tion to write specified data to compaction map table (#1690) * add force operation to delete all zero compaction stat ranges; add action to write specified data to compaction map table * fix-issues * fix issues * fix
- Loading branch information
Showing
24 changed files
with
679 additions
and
13 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
138 changes: 138 additions & 0 deletions
138
cloud/filestore/libs/storage/service/service_actor_actions_write_compaction_map.cpp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,138 @@ | ||
#include "service_actor.h" | ||
|
||
#include <cloud/filestore/libs/storage/api/service.h> | ||
#include <cloud/filestore/libs/storage/api/tablet.h> | ||
#include <cloud/filestore/libs/storage/api/tablet_proxy.h> | ||
#include <cloud/filestore/libs/storage/core/public.h> | ||
#include <cloud/filestore/private/api/protos/tablet.pb.h> | ||
|
||
#include <contrib/ydb/library/actors/core/actor_bootstrapped.h> | ||
|
||
#include <google/protobuf/util/json_util.h> | ||
|
||
namespace NCloud::NFileStore::NStorage { | ||
|
||
using namespace NActors; | ||
|
||
using namespace NKikimr; | ||
|
||
namespace { | ||
|
||
//////////////////////////////////////////////////////////////////////////////// | ||
|
||
class TWriteCompactionMapActionActor final | ||
: public TActorBootstrapped<TWriteCompactionMapActionActor> | ||
{ | ||
private: | ||
const TRequestInfoPtr RequestInfo; | ||
const TString Input; | ||
|
||
public: | ||
TWriteCompactionMapActionActor( | ||
TRequestInfoPtr requestInfo, | ||
TString input); | ||
|
||
void Bootstrap(const TActorContext& ctx); | ||
|
||
private: | ||
void ReplyAndDie( | ||
const TActorContext& ctx, | ||
const NProtoPrivate::TWriteCompactionMapResponse& response); | ||
private: | ||
STFUNC(StateWork); | ||
|
||
void HandleWriteCompactionMapResponse( | ||
const TEvIndexTablet::TEvWriteCompactionMapResponse::TPtr& ev, | ||
const TActorContext& ctx); | ||
}; | ||
|
||
//////////////////////////////////////////////////////////////////////////////// | ||
|
||
TWriteCompactionMapActionActor::TWriteCompactionMapActionActor( | ||
TRequestInfoPtr requestInfo, | ||
TString input) | ||
: RequestInfo(std::move(requestInfo)) | ||
, Input(std::move(input)) | ||
{} | ||
|
||
void TWriteCompactionMapActionActor::Bootstrap(const TActorContext& ctx) | ||
{ | ||
NProtoPrivate::TWriteCompactionMapRequest request; | ||
if (!google::protobuf::util::JsonStringToMessage(Input, &request).ok()) { | ||
ReplyAndDie( | ||
ctx, | ||
TErrorResponse(E_ARGUMENT, "Failed to parse input")); | ||
return; | ||
} | ||
|
||
if (!request.GetFileSystemId()) { | ||
ReplyAndDie( | ||
ctx, | ||
TErrorResponse(E_ARGUMENT, "FileSystem id should be supplied")); | ||
return; | ||
} | ||
|
||
auto requestToTablet = | ||
std::make_unique<TEvIndexTablet::TEvWriteCompactionMapRequest>(); | ||
|
||
requestToTablet->Record = std::move(request); | ||
|
||
NCloud::Send( | ||
ctx, | ||
MakeIndexTabletProxyServiceId(), | ||
std::move(requestToTablet)); | ||
|
||
Become(&TThis::StateWork); | ||
} | ||
|
||
void TWriteCompactionMapActionActor::ReplyAndDie( | ||
const TActorContext& ctx, | ||
const NProtoPrivate::TWriteCompactionMapResponse& response) | ||
{ | ||
auto msg = std::make_unique<TEvService::TEvExecuteActionResponse>( | ||
response.GetError()); | ||
|
||
google::protobuf::util::MessageToJsonString( | ||
response, | ||
msg->Record.MutableOutput()); | ||
|
||
NCloud::Reply(ctx, *RequestInfo, std::move(msg)); | ||
Die(ctx); | ||
} | ||
|
||
//////////////////////////////////////////////////////////////////////////////// | ||
|
||
void TWriteCompactionMapActionActor::HandleWriteCompactionMapResponse( | ||
const TEvIndexTablet::TEvWriteCompactionMapResponse::TPtr& ev, | ||
const TActorContext& ctx) | ||
{ | ||
ReplyAndDie(ctx, ev->Get()->Record); | ||
} | ||
|
||
//////////////////////////////////////////////////////////////////////////////// | ||
|
||
STFUNC(TWriteCompactionMapActionActor::StateWork) | ||
{ | ||
switch (ev->GetTypeRewrite()) { | ||
HFunc( | ||
TEvIndexTablet::TEvWriteCompactionMapResponse, | ||
HandleWriteCompactionMapResponse); | ||
|
||
default: | ||
HandleUnexpectedEvent(ev, TFileStoreComponents::SERVICE); | ||
break; | ||
} | ||
} | ||
|
||
} // namespace | ||
|
||
IActorPtr TStorageServiceActor::CreateWriteCompactionMapActionActor( | ||
TRequestInfoPtr requestInfo, | ||
TString input) | ||
{ | ||
return std::make_unique<TWriteCompactionMapActionActor>( | ||
std::move(requestInfo), | ||
std::move(input)); | ||
} | ||
|
||
} // namespace NCloud::NFileStore::NStorage |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.