RATIS-1588. Add a builder of RaftStorageImpl - #652

Merged
szetszwo merged 7 commits into
apache:masterfrom
codings-dan:1587
Jun 17, 2022
Merged

RATIS-1588. Add a builder of RaftStorageImpl#652
szetszwo merged 7 commits into
apache:masterfrom
codings-dan:1587

Conversation

@codings-dan

Copy link
Copy Markdown
Contributor

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

@szetszwo Can you help review this pull request, thanks!

@szetszwo

Copy link
Copy Markdown
Contributor

@codings-dan , sorry that it broke Alluxio. RaftStorageImpl is not a public API so that we do not have to maintain compatibility. We may consider adding a RaftStorage.Builder as a public API.

BTW, this is backward compatibility -- a new version of the software works for the existing applications. Forward compatibility means the current design of the software can work on future applications.

1 similar comment
@szetszwo

Copy link
Copy Markdown
Contributor

@codings-dan , sorry that it broke Alluxio. RaftStorageImpl is not a public API so that we do not have to maintain compatibility. We may consider adding a RaftStorage.Builder as a public API.

BTW, this is backward compatibility -- a new version of the software works for the existing applications. Forward compatibility means the current design of the software can work on future applications.

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

We may consider adding a RaftStorage.Builder as a public API.

Good idea, I will add a RaftStorage.Builder.

a new version of the software works for the existing applications. Forward compatibility means the current design of the software can work on future applications

Thanks for telling me about these, I now understand the difference!

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

@szetszwo I have added a RaftStorage.Builder, PTAL again, thx!

@codings-dancodings-dan changed the title RATIS-1588. Add a constructor of RaftStorageImpl for forward compatibilityRATIS-1588. Add a builder of RaftStorageImplJun 7, 2022

@szetszwoszetszwo left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@codings-dan , thanks for the update! Some comments inlined.

return new RaftStorageImpl.Builder();
}

public static class Builder {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Builder should be moved to RaftStorage so that it will be in raft-server-api.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

private StartupOption option;
private long storageFeeSpaceMin;

public Builder setDir(File dir) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's rename it to setDirectory.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

return this;
}

public Builder setOption(StartupOption option) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should move StartupOption from RaftStorageImpl to RaftStorage so that it becomes a public API.

Also, let's add a new StartupOption.RECOVER instead of using null.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

}

public RaftStorageImpl build() throws IOException {
return new RaftStorageImpl(dir, logCorruptionPolicy, option, storageFeeSpaceMin);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

After moved to raft-server-api, we have to use reflection to call the constructor. See RaftServer.Builder as an example.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

return this;
}

public Builder setStorageFeeSpaceMin(long storageFeeSpaceMin) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's call it setFreeSpaceMin. BTW, there is a TYPO: "Fee" should "Free".

Also, let's use SizeInBytes for the parameter.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

@szetszwo PTAL again, thank you!

@szetszwoszetszwo left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1 the change looks good.

@szetszwo

Copy link
Copy Markdown
Contributor

@codings-dan , The test failure seems related. Could you take a look?

BTW, let's remove the public RaftStorageImpl constructor below since it is no longer used.

 public RaftStorageImpl(File dir, CorruptionPolicy logCorruptionPolicy,
long storageFeeSpaceMin) throws IOException {

Also, let's use SizeInBytes for storageFreeSpaceMin? Or, we may have two setStorageFreeSpaceMin methods.

 public Builder setStorageFreeSpaceMin(SizeInBytes storageFreeSpaceMin) {
this.storageFreeSpaceMin = storageFreeSpaceMin.getSize();
return this;
}
public Builder setStorageFreeSpaceMin(long storageFreeSpaceMin) {
this.storageFreeSpaceMin = storageFreeSpaceMin;
return this;
}

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

The test failure seems related. Could you take a look

This is caused by improper handling of exceptions in reflection,I have fixed it.

let's remove the public RaftStorageImpl constructor below since it is no longer used.

I have remove the extra code.

let's use SizeInBytes for storageFreeSpaceMin

Done.

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

@szetszwo Thanks for help review the code, PTAL, thx!

@szetszwo

Copy link
Copy Markdown
Contributor

@codings-dan , thanks for the update. TestRaftStorage failed. Please take a look.
https://github.com/apache/ratis/runs/6920545804?check_suite_focus=true#step:5:562

@codings-dan

codings-dan commented Jun 17, 2022

Copy link
Copy Markdown
ContributorAuthor

TestRaftStorage failed.

Similar to the previous ut error, it was caused by improper handling of exceptions in reflection, I have fixed it

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

The ci test error seems have noting to do with this code change.

https://github.com/apache/ratis/runs/6930404226?check_suite_focus=true#step:5:611

@szetszwo

Copy link
Copy Markdown
Contributor

Sure, let's restart the failed jobs.

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

https://github.com/apache/ratis/runs/6931402074?check_suite_focus=true#step:5:611

This unit test can run locally, see as below
image

@szetszwo

Copy link
Copy Markdown
Contributor

#635 should be able to reduce the timeout problem. @codings-dan , could you review it?

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

#635 should be able to reduce the timeout problem. @codings-dan , could you review it?

Of course, happy to help review the code!

@szetszwo
szetszwo merged commit 995dce9 into apache:masterJun 17, 2022
szetszwo pushed a commit that referenced this pull request Jun 18, 2022
@codings-dan
codings-dan deleted the 1587 branch June 20, 2022 01:51
SzyWilliam pushed a commit to SzyWilliam/ratis that referenced this pull request Jul 2, 2022
symious pushed a commit to symious/ratis that referenced this pull request Mar 5, 2024
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@codings-dan@szetszwo
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

RATIS-1588. Add a builder of RaftStorageImpl - #652

Merged
szetszwo merged 7 commits into
apache:masterfrom
codings-dan:1587
Jun 17, 2022
Merged

RATIS-1588. Add a builder of RaftStorageImpl#652
szetszwo merged 7 commits into
apache:masterfrom
codings-dan:1587

Conversation

@codings-dan

Copy link
Copy Markdown
Contributor

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

@szetszwo Can you help review this pull request, thanks!

@szetszwo

Copy link
Copy Markdown
Contributor

@codings-dan , sorry that it broke Alluxio. RaftStorageImpl is not a public API so that we do not have to maintain compatibility. We may consider adding a RaftStorage.Builder as a public API.

BTW, this is backward compatibility -- a new version of the software works for the existing applications. Forward compatibility means the current design of the software can work on future applications.

1 similar comment
@szetszwo

Copy link
Copy Markdown
Contributor

@codings-dan , sorry that it broke Alluxio. RaftStorageImpl is not a public API so that we do not have to maintain compatibility. We may consider adding a RaftStorage.Builder as a public API.

BTW, this is backward compatibility -- a new version of the software works for the existing applications. Forward compatibility means the current design of the software can work on future applications.

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

We may consider adding a RaftStorage.Builder as a public API.

Good idea, I will add a RaftStorage.Builder.

a new version of the software works for the existing applications. Forward compatibility means the current design of the software can work on future applications

Thanks for telling me about these, I now understand the difference!

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

@szetszwo I have added a RaftStorage.Builder, PTAL again, thx!

@codings-dancodings-dan changed the title RATIS-1588. Add a constructor of RaftStorageImpl for forward compatibilityRATIS-1588. Add a builder of RaftStorageImplJun 7, 2022

@szetszwoszetszwo left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@codings-dan , thanks for the update! Some comments inlined.

return new RaftStorageImpl.Builder();
}

public static class Builder {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Builder should be moved to RaftStorage so that it will be in raft-server-api.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

private StartupOption option;
private long storageFeeSpaceMin;

public Builder setDir(File dir) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's rename it to setDirectory.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

return this;
}

public Builder setOption(StartupOption option) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should move StartupOption from RaftStorageImpl to RaftStorage so that it becomes a public API.

Also, let's add a new StartupOption.RECOVER instead of using null.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

}

public RaftStorageImpl build() throws IOException {
return new RaftStorageImpl(dir, logCorruptionPolicy, option, storageFeeSpaceMin);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

After moved to raft-server-api, we have to use reflection to call the constructor. See RaftServer.Builder as an example.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

return this;
}

public Builder setStorageFeeSpaceMin(long storageFeeSpaceMin) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's call it setFreeSpaceMin. BTW, there is a TYPO: "Fee" should "Free".

Also, let's use SizeInBytes for the parameter.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

@szetszwo PTAL again, thank you!

@szetszwoszetszwo left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1 the change looks good.

@szetszwo

Copy link
Copy Markdown
Contributor

@codings-dan , The test failure seems related. Could you take a look?

BTW, let's remove the public RaftStorageImpl constructor below since it is no longer used.

 public RaftStorageImpl(File dir, CorruptionPolicy logCorruptionPolicy,
long storageFeeSpaceMin) throws IOException {

Also, let's use SizeInBytes for storageFreeSpaceMin? Or, we may have two setStorageFreeSpaceMin methods.

 public Builder setStorageFreeSpaceMin(SizeInBytes storageFreeSpaceMin) {
this.storageFreeSpaceMin = storageFreeSpaceMin.getSize();
return this;
}
public Builder setStorageFreeSpaceMin(long storageFreeSpaceMin) {
this.storageFreeSpaceMin = storageFreeSpaceMin;
return this;
}

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

The test failure seems related. Could you take a look

This is caused by improper handling of exceptions in reflection,I have fixed it.

let's remove the public RaftStorageImpl constructor below since it is no longer used.

I have remove the extra code.

let's use SizeInBytes for storageFreeSpaceMin

Done.

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

@szetszwo Thanks for help review the code, PTAL, thx!

@szetszwo

Copy link
Copy Markdown
Contributor

@codings-dan , thanks for the update. TestRaftStorage failed. Please take a look.
https://github.com/apache/ratis/runs/6920545804?check_suite_focus=true#step:5:562

@codings-dan

codings-dan commented Jun 17, 2022

Copy link
Copy Markdown
ContributorAuthor

TestRaftStorage failed.

Similar to the previous ut error, it was caused by improper handling of exceptions in reflection, I have fixed it

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

The ci test error seems have noting to do with this code change.

https://github.com/apache/ratis/runs/6930404226?check_suite_focus=true#step:5:611

@szetszwo

Copy link
Copy Markdown
Contributor

Sure, let's restart the failed jobs.

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

https://github.com/apache/ratis/runs/6931402074?check_suite_focus=true#step:5:611

This unit test can run locally, see as below
image

@szetszwo

Copy link
Copy Markdown
Contributor

#635 should be able to reduce the timeout problem. @codings-dan , could you review it?

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

#635 should be able to reduce the timeout problem. @codings-dan , could you review it?

Of course, happy to help review the code!

@szetszwo
szetszwo merged commit 995dce9 into apache:masterJun 17, 2022
szetszwo pushed a commit that referenced this pull request Jun 18, 2022
@codings-dan
codings-dan deleted the 1587 branch June 20, 2022 01:51
SzyWilliam pushed a commit to SzyWilliam/ratis that referenced this pull request Jul 2, 2022
symious pushed a commit to symious/ratis that referenced this pull request Mar 5, 2024
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@codings-dan@szetszwo
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

RATIS-1588. Add a builder of RaftStorageImpl - #652

Merged
szetszwo merged 7 commits into
apache:masterfrom
codings-dan:1587
Jun 17, 2022
Merged

RATIS-1588. Add a builder of RaftStorageImpl#652
szetszwo merged 7 commits into
apache:masterfrom
codings-dan:1587

Conversation

@codings-dan

Copy link
Copy Markdown
Contributor

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

@szetszwo Can you help review this pull request, thanks!

@szetszwo

Copy link
Copy Markdown
Contributor

@codings-dan , sorry that it broke Alluxio. RaftStorageImpl is not a public API so that we do not have to maintain compatibility. We may consider adding a RaftStorage.Builder as a public API.

BTW, this is backward compatibility -- a new version of the software works for the existing applications. Forward compatibility means the current design of the software can work on future applications.

1 similar comment
@szetszwo

Copy link
Copy Markdown
Contributor

@codings-dan , sorry that it broke Alluxio. RaftStorageImpl is not a public API so that we do not have to maintain compatibility. We may consider adding a RaftStorage.Builder as a public API.

BTW, this is backward compatibility -- a new version of the software works for the existing applications. Forward compatibility means the current design of the software can work on future applications.

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

We may consider adding a RaftStorage.Builder as a public API.

Good idea, I will add a RaftStorage.Builder.

a new version of the software works for the existing applications. Forward compatibility means the current design of the software can work on future applications

Thanks for telling me about these, I now understand the difference!

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

@szetszwo I have added a RaftStorage.Builder, PTAL again, thx!

@codings-dancodings-dan changed the title RATIS-1588. Add a constructor of RaftStorageImpl for forward compatibilityRATIS-1588. Add a builder of RaftStorageImplJun 7, 2022

@szetszwoszetszwo left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@codings-dan , thanks for the update! Some comments inlined.

return new RaftStorageImpl.Builder();
}

public static class Builder {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Builder should be moved to RaftStorage so that it will be in raft-server-api.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

private StartupOption option;
private long storageFeeSpaceMin;

public Builder setDir(File dir) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's rename it to setDirectory.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

return this;
}

public Builder setOption(StartupOption option) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should move StartupOption from RaftStorageImpl to RaftStorage so that it becomes a public API.

Also, let's add a new StartupOption.RECOVER instead of using null.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

}

public RaftStorageImpl build() throws IOException {
return new RaftStorageImpl(dir, logCorruptionPolicy, option, storageFeeSpaceMin);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

After moved to raft-server-api, we have to use reflection to call the constructor. See RaftServer.Builder as an example.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

return this;
}

public Builder setStorageFeeSpaceMin(long storageFeeSpaceMin) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's call it setFreeSpaceMin. BTW, there is a TYPO: "Fee" should "Free".

Also, let's use SizeInBytes for the parameter.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

@szetszwo PTAL again, thank you!

@szetszwoszetszwo left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1 the change looks good.

@szetszwo

Copy link
Copy Markdown
Contributor

@codings-dan , The test failure seems related. Could you take a look?

BTW, let's remove the public RaftStorageImpl constructor below since it is no longer used.

 public RaftStorageImpl(File dir, CorruptionPolicy logCorruptionPolicy,
long storageFeeSpaceMin) throws IOException {

Also, let's use SizeInBytes for storageFreeSpaceMin? Or, we may have two setStorageFreeSpaceMin methods.

 public Builder setStorageFreeSpaceMin(SizeInBytes storageFreeSpaceMin) {
this.storageFreeSpaceMin = storageFreeSpaceMin.getSize();
return this;
}
public Builder setStorageFreeSpaceMin(long storageFreeSpaceMin) {
this.storageFreeSpaceMin = storageFreeSpaceMin;
return this;
}

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

The test failure seems related. Could you take a look

This is caused by improper handling of exceptions in reflection,I have fixed it.

let's remove the public RaftStorageImpl constructor below since it is no longer used.

I have remove the extra code.

let's use SizeInBytes for storageFreeSpaceMin

Done.

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

@szetszwo Thanks for help review the code, PTAL, thx!

@szetszwo

Copy link
Copy Markdown
Contributor

@codings-dan , thanks for the update. TestRaftStorage failed. Please take a look.
https://github.com/apache/ratis/runs/6920545804?check_suite_focus=true#step:5:562

@codings-dan

codings-dan commented Jun 17, 2022

Copy link
Copy Markdown
ContributorAuthor

TestRaftStorage failed.

Similar to the previous ut error, it was caused by improper handling of exceptions in reflection, I have fixed it

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

The ci test error seems have noting to do with this code change.

https://github.com/apache/ratis/runs/6930404226?check_suite_focus=true#step:5:611

@szetszwo

Copy link
Copy Markdown
Contributor

Sure, let's restart the failed jobs.

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

https://github.com/apache/ratis/runs/6931402074?check_suite_focus=true#step:5:611

This unit test can run locally, see as below
image

@szetszwo

Copy link
Copy Markdown
Contributor

#635 should be able to reduce the timeout problem. @codings-dan , could you review it?

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

#635 should be able to reduce the timeout problem. @codings-dan , could you review it?

Of course, happy to help review the code!

@szetszwo
szetszwo merged commit 995dce9 into apache:masterJun 17, 2022
szetszwo pushed a commit that referenced this pull request Jun 18, 2022
@codings-dan
codings-dan deleted the 1587 branch June 20, 2022 01:51
SzyWilliam pushed a commit to SzyWilliam/ratis that referenced this pull request Jul 2, 2022
symious pushed a commit to symious/ratis that referenced this pull request Mar 5, 2024
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@codings-dan@szetszwo
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

RATIS-1588. Add a builder of RaftStorageImpl - #652

Merged
szetszwo merged 7 commits into
apache:masterfrom
codings-dan:1587
Jun 17, 2022
Merged

RATIS-1588. Add a builder of RaftStorageImpl#652
szetszwo merged 7 commits into
apache:masterfrom
codings-dan:1587

Conversation

@codings-dan

Copy link
Copy Markdown
Contributor

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

@szetszwo Can you help review this pull request, thanks!

@szetszwo

Copy link
Copy Markdown
Contributor

@codings-dan , sorry that it broke Alluxio. RaftStorageImpl is not a public API so that we do not have to maintain compatibility. We may consider adding a RaftStorage.Builder as a public API.

BTW, this is backward compatibility -- a new version of the software works for the existing applications. Forward compatibility means the current design of the software can work on future applications.

1 similar comment
@szetszwo

Copy link
Copy Markdown
Contributor

@codings-dan , sorry that it broke Alluxio. RaftStorageImpl is not a public API so that we do not have to maintain compatibility. We may consider adding a RaftStorage.Builder as a public API.

BTW, this is backward compatibility -- a new version of the software works for the existing applications. Forward compatibility means the current design of the software can work on future applications.

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

We may consider adding a RaftStorage.Builder as a public API.

Good idea, I will add a RaftStorage.Builder.

a new version of the software works for the existing applications. Forward compatibility means the current design of the software can work on future applications

Thanks for telling me about these, I now understand the difference!

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

@szetszwo I have added a RaftStorage.Builder, PTAL again, thx!

@codings-dancodings-dan changed the title RATIS-1588. Add a constructor of RaftStorageImpl for forward compatibilityRATIS-1588. Add a builder of RaftStorageImplJun 7, 2022

@szetszwoszetszwo left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@codings-dan , thanks for the update! Some comments inlined.

return new RaftStorageImpl.Builder();
}

public static class Builder {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Builder should be moved to RaftStorage so that it will be in raft-server-api.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

private StartupOption option;
private long storageFeeSpaceMin;

public Builder setDir(File dir) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's rename it to setDirectory.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

return this;
}

public Builder setOption(StartupOption option) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should move StartupOption from RaftStorageImpl to RaftStorage so that it becomes a public API.

Also, let's add a new StartupOption.RECOVER instead of using null.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

}

public RaftStorageImpl build() throws IOException {
return new RaftStorageImpl(dir, logCorruptionPolicy, option, storageFeeSpaceMin);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

After moved to raft-server-api, we have to use reflection to call the constructor. See RaftServer.Builder as an example.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

return this;
}

public Builder setStorageFeeSpaceMin(long storageFeeSpaceMin) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's call it setFreeSpaceMin. BTW, there is a TYPO: "Fee" should "Free".

Also, let's use SizeInBytes for the parameter.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

@szetszwo PTAL again, thank you!

@szetszwoszetszwo left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1 the change looks good.

@szetszwo

Copy link
Copy Markdown
Contributor

@codings-dan , The test failure seems related. Could you take a look?

BTW, let's remove the public RaftStorageImpl constructor below since it is no longer used.

 public RaftStorageImpl(File dir, CorruptionPolicy logCorruptionPolicy,
long storageFeeSpaceMin) throws IOException {

Also, let's use SizeInBytes for storageFreeSpaceMin? Or, we may have two setStorageFreeSpaceMin methods.

 public Builder setStorageFreeSpaceMin(SizeInBytes storageFreeSpaceMin) {
this.storageFreeSpaceMin = storageFreeSpaceMin.getSize();
return this;
}
public Builder setStorageFreeSpaceMin(long storageFreeSpaceMin) {
this.storageFreeSpaceMin = storageFreeSpaceMin;
return this;
}

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

The test failure seems related. Could you take a look

This is caused by improper handling of exceptions in reflection,I have fixed it.

let's remove the public RaftStorageImpl constructor below since it is no longer used.

I have remove the extra code.

let's use SizeInBytes for storageFreeSpaceMin

Done.

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

@szetszwo Thanks for help review the code, PTAL, thx!

@szetszwo

Copy link
Copy Markdown
Contributor

@codings-dan , thanks for the update. TestRaftStorage failed. Please take a look.
https://github.com/apache/ratis/runs/6920545804?check_suite_focus=true#step:5:562

@codings-dan

codings-dan commented Jun 17, 2022

Copy link
Copy Markdown
ContributorAuthor

TestRaftStorage failed.

Similar to the previous ut error, it was caused by improper handling of exceptions in reflection, I have fixed it

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

The ci test error seems have noting to do with this code change.

https://github.com/apache/ratis/runs/6930404226?check_suite_focus=true#step:5:611

@szetszwo

Copy link
Copy Markdown
Contributor

Sure, let's restart the failed jobs.

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

https://github.com/apache/ratis/runs/6931402074?check_suite_focus=true#step:5:611

This unit test can run locally, see as below
image

@szetszwo

Copy link
Copy Markdown
Contributor

#635 should be able to reduce the timeout problem. @codings-dan , could you review it?

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

#635 should be able to reduce the timeout problem. @codings-dan , could you review it?

Of course, happy to help review the code!

@szetszwo
szetszwo merged commit 995dce9 into apache:masterJun 17, 2022
szetszwo pushed a commit that referenced this pull request Jun 18, 2022
@codings-dan
codings-dan deleted the 1587 branch June 20, 2022 01:51
SzyWilliam pushed a commit to SzyWilliam/ratis that referenced this pull request Jul 2, 2022
symious pushed a commit to symious/ratis that referenced this pull request Mar 5, 2024
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@codings-dan@szetszwo
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

RATIS-1588. Add a builder of RaftStorageImpl - #652

Merged
szetszwo merged 7 commits into
apache:masterfrom
codings-dan:1587
Jun 17, 2022
Merged

RATIS-1588. Add a builder of RaftStorageImpl#652
szetszwo merged 7 commits into
apache:masterfrom
codings-dan:1587

Conversation

@codings-dan

Copy link
Copy Markdown
Contributor

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

@szetszwo Can you help review this pull request, thanks!

@szetszwo

Copy link
Copy Markdown
Contributor

@codings-dan , sorry that it broke Alluxio. RaftStorageImpl is not a public API so that we do not have to maintain compatibility. We may consider adding a RaftStorage.Builder as a public API.

BTW, this is backward compatibility -- a new version of the software works for the existing applications. Forward compatibility means the current design of the software can work on future applications.

1 similar comment
@szetszwo

Copy link
Copy Markdown
Contributor

@codings-dan , sorry that it broke Alluxio. RaftStorageImpl is not a public API so that we do not have to maintain compatibility. We may consider adding a RaftStorage.Builder as a public API.

BTW, this is backward compatibility -- a new version of the software works for the existing applications. Forward compatibility means the current design of the software can work on future applications.

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

We may consider adding a RaftStorage.Builder as a public API.

Good idea, I will add a RaftStorage.Builder.

a new version of the software works for the existing applications. Forward compatibility means the current design of the software can work on future applications

Thanks for telling me about these, I now understand the difference!

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

@szetszwo I have added a RaftStorage.Builder, PTAL again, thx!

@codings-dancodings-dan changed the title RATIS-1588. Add a constructor of RaftStorageImpl for forward compatibilityRATIS-1588. Add a builder of RaftStorageImplJun 7, 2022

@szetszwoszetszwo left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@codings-dan , thanks for the update! Some comments inlined.

return new RaftStorageImpl.Builder();
}

public static class Builder {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Builder should be moved to RaftStorage so that it will be in raft-server-api.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

private StartupOption option;
private long storageFeeSpaceMin;

public Builder setDir(File dir) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's rename it to setDirectory.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

return this;
}

public Builder setOption(StartupOption option) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should move StartupOption from RaftStorageImpl to RaftStorage so that it becomes a public API.

Also, let's add a new StartupOption.RECOVER instead of using null.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

}

public RaftStorageImpl build() throws IOException {
return new RaftStorageImpl(dir, logCorruptionPolicy, option, storageFeeSpaceMin);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

After moved to raft-server-api, we have to use reflection to call the constructor. See RaftServer.Builder as an example.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

return this;
}

public Builder setStorageFeeSpaceMin(long storageFeeSpaceMin) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's call it setFreeSpaceMin. BTW, there is a TYPO: "Fee" should "Free".

Also, let's use SizeInBytes for the parameter.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

@szetszwo PTAL again, thank you!

@szetszwoszetszwo left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1 the change looks good.

@szetszwo

Copy link
Copy Markdown
Contributor

@codings-dan , The test failure seems related. Could you take a look?

BTW, let's remove the public RaftStorageImpl constructor below since it is no longer used.

 public RaftStorageImpl(File dir, CorruptionPolicy logCorruptionPolicy,
long storageFeeSpaceMin) throws IOException {

Also, let's use SizeInBytes for storageFreeSpaceMin? Or, we may have two setStorageFreeSpaceMin methods.

 public Builder setStorageFreeSpaceMin(SizeInBytes storageFreeSpaceMin) {
this.storageFreeSpaceMin = storageFreeSpaceMin.getSize();
return this;
}
public Builder setStorageFreeSpaceMin(long storageFreeSpaceMin) {
this.storageFreeSpaceMin = storageFreeSpaceMin;
return this;
}

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

The test failure seems related. Could you take a look

This is caused by improper handling of exceptions in reflection,I have fixed it.

let's remove the public RaftStorageImpl constructor below since it is no longer used.

I have remove the extra code.

let's use SizeInBytes for storageFreeSpaceMin

Done.

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

@szetszwo Thanks for help review the code, PTAL, thx!

@szetszwo

Copy link
Copy Markdown
Contributor

@codings-dan , thanks for the update. TestRaftStorage failed. Please take a look.
https://github.com/apache/ratis/runs/6920545804?check_suite_focus=true#step:5:562

@codings-dan

codings-dan commented Jun 17, 2022

Copy link
Copy Markdown
ContributorAuthor

TestRaftStorage failed.

Similar to the previous ut error, it was caused by improper handling of exceptions in reflection, I have fixed it

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

The ci test error seems have noting to do with this code change.

https://github.com/apache/ratis/runs/6930404226?check_suite_focus=true#step:5:611

@szetszwo

Copy link
Copy Markdown
Contributor

Sure, let's restart the failed jobs.

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

https://github.com/apache/ratis/runs/6931402074?check_suite_focus=true#step:5:611

This unit test can run locally, see as below
image

@szetszwo

Copy link
Copy Markdown
Contributor

#635 should be able to reduce the timeout problem. @codings-dan , could you review it?

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

#635 should be able to reduce the timeout problem. @codings-dan , could you review it?

Of course, happy to help review the code!

@szetszwo
szetszwo merged commit 995dce9 into apache:masterJun 17, 2022
szetszwo pushed a commit that referenced this pull request Jun 18, 2022
@codings-dan
codings-dan deleted the 1587 branch June 20, 2022 01:51
SzyWilliam pushed a commit to SzyWilliam/ratis that referenced this pull request Jul 2, 2022
symious pushed a commit to symious/ratis that referenced this pull request Mar 5, 2024
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@codings-dan@szetszwo
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

RATIS-1588. Add a builder of RaftStorageImpl - #652

Merged
szetszwo merged 7 commits into
apache:masterfrom
codings-dan:1587
Jun 17, 2022
Merged

RATIS-1588. Add a builder of RaftStorageImpl#652
szetszwo merged 7 commits into
apache:masterfrom
codings-dan:1587

Conversation

@codings-dan

Copy link
Copy Markdown
Contributor

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

@szetszwo Can you help review this pull request, thanks!

@szetszwo

Copy link
Copy Markdown
Contributor

@codings-dan , sorry that it broke Alluxio. RaftStorageImpl is not a public API so that we do not have to maintain compatibility. We may consider adding a RaftStorage.Builder as a public API.

BTW, this is backward compatibility -- a new version of the software works for the existing applications. Forward compatibility means the current design of the software can work on future applications.

1 similar comment
@szetszwo

Copy link
Copy Markdown
Contributor

@codings-dan , sorry that it broke Alluxio. RaftStorageImpl is not a public API so that we do not have to maintain compatibility. We may consider adding a RaftStorage.Builder as a public API.

BTW, this is backward compatibility -- a new version of the software works for the existing applications. Forward compatibility means the current design of the software can work on future applications.

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

We may consider adding a RaftStorage.Builder as a public API.

Good idea, I will add a RaftStorage.Builder.

a new version of the software works for the existing applications. Forward compatibility means the current design of the software can work on future applications

Thanks for telling me about these, I now understand the difference!

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

@szetszwo I have added a RaftStorage.Builder, PTAL again, thx!

@codings-dancodings-dan changed the title RATIS-1588. Add a constructor of RaftStorageImpl for forward compatibilityRATIS-1588. Add a builder of RaftStorageImplJun 7, 2022

@szetszwoszetszwo left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@codings-dan , thanks for the update! Some comments inlined.

return new RaftStorageImpl.Builder();
}

public static class Builder {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Builder should be moved to RaftStorage so that it will be in raft-server-api.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

private StartupOption option;
private long storageFeeSpaceMin;

public Builder setDir(File dir) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's rename it to setDirectory.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

return this;
}

public Builder setOption(StartupOption option) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should move StartupOption from RaftStorageImpl to RaftStorage so that it becomes a public API.

Also, let's add a new StartupOption.RECOVER instead of using null.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

}

public RaftStorageImpl build() throws IOException {
return new RaftStorageImpl(dir, logCorruptionPolicy, option, storageFeeSpaceMin);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

After moved to raft-server-api, we have to use reflection to call the constructor. See RaftServer.Builder as an example.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

return this;
}

public Builder setStorageFeeSpaceMin(long storageFeeSpaceMin) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's call it setFreeSpaceMin. BTW, there is a TYPO: "Fee" should "Free".

Also, let's use SizeInBytes for the parameter.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

@szetszwo PTAL again, thank you!

@szetszwoszetszwo left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1 the change looks good.

@szetszwo

Copy link
Copy Markdown
Contributor

@codings-dan , The test failure seems related. Could you take a look?

BTW, let's remove the public RaftStorageImpl constructor below since it is no longer used.

 public RaftStorageImpl(File dir, CorruptionPolicy logCorruptionPolicy,
long storageFeeSpaceMin) throws IOException {

Also, let's use SizeInBytes for storageFreeSpaceMin? Or, we may have two setStorageFreeSpaceMin methods.

 public Builder setStorageFreeSpaceMin(SizeInBytes storageFreeSpaceMin) {
this.storageFreeSpaceMin = storageFreeSpaceMin.getSize();
return this;
}
public Builder setStorageFreeSpaceMin(long storageFreeSpaceMin) {
this.storageFreeSpaceMin = storageFreeSpaceMin;
return this;
}

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

The test failure seems related. Could you take a look

This is caused by improper handling of exceptions in reflection,I have fixed it.

let's remove the public RaftStorageImpl constructor below since it is no longer used.

I have remove the extra code.

let's use SizeInBytes for storageFreeSpaceMin

Done.

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

@szetszwo Thanks for help review the code, PTAL, thx!

@szetszwo

Copy link
Copy Markdown
Contributor

@codings-dan , thanks for the update. TestRaftStorage failed. Please take a look.
https://github.com/apache/ratis/runs/6920545804?check_suite_focus=true#step:5:562

@codings-dan

codings-dan commented Jun 17, 2022

Copy link
Copy Markdown
ContributorAuthor

TestRaftStorage failed.

Similar to the previous ut error, it was caused by improper handling of exceptions in reflection, I have fixed it

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

The ci test error seems have noting to do with this code change.

https://github.com/apache/ratis/runs/6930404226?check_suite_focus=true#step:5:611

@szetszwo

Copy link
Copy Markdown
Contributor

Sure, let's restart the failed jobs.

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

https://github.com/apache/ratis/runs/6931402074?check_suite_focus=true#step:5:611

This unit test can run locally, see as below
image

@szetszwo

Copy link
Copy Markdown
Contributor

#635 should be able to reduce the timeout problem. @codings-dan , could you review it?

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

#635 should be able to reduce the timeout problem. @codings-dan , could you review it?

Of course, happy to help review the code!

@szetszwo
szetszwo merged commit 995dce9 into apache:masterJun 17, 2022
szetszwo pushed a commit that referenced this pull request Jun 18, 2022
@codings-dan
codings-dan deleted the 1587 branch June 20, 2022 01:51
SzyWilliam pushed a commit to SzyWilliam/ratis that referenced this pull request Jul 2, 2022
symious pushed a commit to symious/ratis that referenced this pull request Mar 5, 2024
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@codings-dan@szetszwo
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

RATIS-1588. Add a builder of RaftStorageImpl - #652

Merged
szetszwo merged 7 commits into
apache:masterfrom
codings-dan:1587
Jun 17, 2022
Merged

RATIS-1588. Add a builder of RaftStorageImpl#652
szetszwo merged 7 commits into
apache:masterfrom
codings-dan:1587

Conversation

@codings-dan

Copy link
Copy Markdown
Contributor

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

@szetszwo Can you help review this pull request, thanks!

@szetszwo

Copy link
Copy Markdown
Contributor

@codings-dan , sorry that it broke Alluxio. RaftStorageImpl is not a public API so that we do not have to maintain compatibility. We may consider adding a RaftStorage.Builder as a public API.

BTW, this is backward compatibility -- a new version of the software works for the existing applications. Forward compatibility means the current design of the software can work on future applications.

1 similar comment
@szetszwo

Copy link
Copy Markdown
Contributor

@codings-dan , sorry that it broke Alluxio. RaftStorageImpl is not a public API so that we do not have to maintain compatibility. We may consider adding a RaftStorage.Builder as a public API.

BTW, this is backward compatibility -- a new version of the software works for the existing applications. Forward compatibility means the current design of the software can work on future applications.

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

We may consider adding a RaftStorage.Builder as a public API.

Good idea, I will add a RaftStorage.Builder.

a new version of the software works for the existing applications. Forward compatibility means the current design of the software can work on future applications

Thanks for telling me about these, I now understand the difference!

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

@szetszwo I have added a RaftStorage.Builder, PTAL again, thx!

@codings-dancodings-dan changed the title RATIS-1588. Add a constructor of RaftStorageImpl for forward compatibilityRATIS-1588. Add a builder of RaftStorageImplJun 7, 2022

@szetszwoszetszwo left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@codings-dan , thanks for the update! Some comments inlined.

return new RaftStorageImpl.Builder();
}

public static class Builder {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Builder should be moved to RaftStorage so that it will be in raft-server-api.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

private StartupOption option;
private long storageFeeSpaceMin;

public Builder setDir(File dir) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's rename it to setDirectory.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

return this;
}

public Builder setOption(StartupOption option) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should move StartupOption from RaftStorageImpl to RaftStorage so that it becomes a public API.

Also, let's add a new StartupOption.RECOVER instead of using null.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

}

public RaftStorageImpl build() throws IOException {
return new RaftStorageImpl(dir, logCorruptionPolicy, option, storageFeeSpaceMin);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

After moved to raft-server-api, we have to use reflection to call the constructor. See RaftServer.Builder as an example.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

return this;
}

public Builder setStorageFeeSpaceMin(long storageFeeSpaceMin) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's call it setFreeSpaceMin. BTW, there is a TYPO: "Fee" should "Free".

Also, let's use SizeInBytes for the parameter.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

@szetszwo PTAL again, thank you!

@szetszwoszetszwo left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1 the change looks good.

@szetszwo

Copy link
Copy Markdown
Contributor

@codings-dan , The test failure seems related. Could you take a look?

BTW, let's remove the public RaftStorageImpl constructor below since it is no longer used.

 public RaftStorageImpl(File dir, CorruptionPolicy logCorruptionPolicy,
long storageFeeSpaceMin) throws IOException {

Also, let's use SizeInBytes for storageFreeSpaceMin? Or, we may have two setStorageFreeSpaceMin methods.

 public Builder setStorageFreeSpaceMin(SizeInBytes storageFreeSpaceMin) {
this.storageFreeSpaceMin = storageFreeSpaceMin.getSize();
return this;
}
public Builder setStorageFreeSpaceMin(long storageFreeSpaceMin) {
this.storageFreeSpaceMin = storageFreeSpaceMin;
return this;
}

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

The test failure seems related. Could you take a look

This is caused by improper handling of exceptions in reflection,I have fixed it.

let's remove the public RaftStorageImpl constructor below since it is no longer used.

I have remove the extra code.

let's use SizeInBytes for storageFreeSpaceMin

Done.

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

@szetszwo Thanks for help review the code, PTAL, thx!

@szetszwo

Copy link
Copy Markdown
Contributor

@codings-dan , thanks for the update. TestRaftStorage failed. Please take a look.
https://github.com/apache/ratis/runs/6920545804?check_suite_focus=true#step:5:562

@codings-dan

codings-dan commented Jun 17, 2022

Copy link
Copy Markdown
ContributorAuthor

TestRaftStorage failed.

Similar to the previous ut error, it was caused by improper handling of exceptions in reflection, I have fixed it

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

The ci test error seems have noting to do with this code change.

https://github.com/apache/ratis/runs/6930404226?check_suite_focus=true#step:5:611

@szetszwo

Copy link
Copy Markdown
Contributor

Sure, let's restart the failed jobs.

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

https://github.com/apache/ratis/runs/6931402074?check_suite_focus=true#step:5:611

This unit test can run locally, see as below
image

@szetszwo

Copy link
Copy Markdown
Contributor

#635 should be able to reduce the timeout problem. @codings-dan , could you review it?

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

#635 should be able to reduce the timeout problem. @codings-dan , could you review it?

Of course, happy to help review the code!

@szetszwo
szetszwo merged commit 995dce9 into apache:masterJun 17, 2022
szetszwo pushed a commit that referenced this pull request Jun 18, 2022
@codings-dan
codings-dan deleted the 1587 branch June 20, 2022 01:51
SzyWilliam pushed a commit to SzyWilliam/ratis that referenced this pull request Jul 2, 2022
symious pushed a commit to symious/ratis that referenced this pull request Mar 5, 2024
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@codings-dan@szetszwo
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

RATIS-1588. Add a builder of RaftStorageImpl - #652

Merged
szetszwo merged 7 commits into
apache:masterfrom
codings-dan:1587
Jun 17, 2022
Merged

RATIS-1588. Add a builder of RaftStorageImpl#652
szetszwo merged 7 commits into
apache:masterfrom
codings-dan:1587

Conversation

@codings-dan

Copy link
Copy Markdown
Contributor

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

@szetszwo Can you help review this pull request, thanks!

@szetszwo

Copy link
Copy Markdown
Contributor

@codings-dan , sorry that it broke Alluxio. RaftStorageImpl is not a public API so that we do not have to maintain compatibility. We may consider adding a RaftStorage.Builder as a public API.

BTW, this is backward compatibility -- a new version of the software works for the existing applications. Forward compatibility means the current design of the software can work on future applications.

1 similar comment
@szetszwo

Copy link
Copy Markdown
Contributor

@codings-dan , sorry that it broke Alluxio. RaftStorageImpl is not a public API so that we do not have to maintain compatibility. We may consider adding a RaftStorage.Builder as a public API.

BTW, this is backward compatibility -- a new version of the software works for the existing applications. Forward compatibility means the current design of the software can work on future applications.

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

We may consider adding a RaftStorage.Builder as a public API.

Good idea, I will add a RaftStorage.Builder.

a new version of the software works for the existing applications. Forward compatibility means the current design of the software can work on future applications

Thanks for telling me about these, I now understand the difference!

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

@szetszwo I have added a RaftStorage.Builder, PTAL again, thx!

@codings-dancodings-dan changed the title RATIS-1588. Add a constructor of RaftStorageImpl for forward compatibilityRATIS-1588. Add a builder of RaftStorageImplJun 7, 2022

@szetszwoszetszwo left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@codings-dan , thanks for the update! Some comments inlined.

return new RaftStorageImpl.Builder();
}

public static class Builder {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Builder should be moved to RaftStorage so that it will be in raft-server-api.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

private StartupOption option;
private long storageFeeSpaceMin;

public Builder setDir(File dir) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's rename it to setDirectory.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

return this;
}

public Builder setOption(StartupOption option) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should move StartupOption from RaftStorageImpl to RaftStorage so that it becomes a public API.

Also, let's add a new StartupOption.RECOVER instead of using null.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

}

public RaftStorageImpl build() throws IOException {
return new RaftStorageImpl(dir, logCorruptionPolicy, option, storageFeeSpaceMin);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

After moved to raft-server-api, we have to use reflection to call the constructor. See RaftServer.Builder as an example.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

return this;
}

public Builder setStorageFeeSpaceMin(long storageFeeSpaceMin) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's call it setFreeSpaceMin. BTW, there is a TYPO: "Fee" should "Free".

Also, let's use SizeInBytes for the parameter.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

@szetszwo PTAL again, thank you!

@szetszwoszetszwo left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1 the change looks good.

@szetszwo

Copy link
Copy Markdown
Contributor

@codings-dan , The test failure seems related. Could you take a look?

BTW, let's remove the public RaftStorageImpl constructor below since it is no longer used.

 public RaftStorageImpl(File dir, CorruptionPolicy logCorruptionPolicy,
long storageFeeSpaceMin) throws IOException {

Also, let's use SizeInBytes for storageFreeSpaceMin? Or, we may have two setStorageFreeSpaceMin methods.

 public Builder setStorageFreeSpaceMin(SizeInBytes storageFreeSpaceMin) {
this.storageFreeSpaceMin = storageFreeSpaceMin.getSize();
return this;
}
public Builder setStorageFreeSpaceMin(long storageFreeSpaceMin) {
this.storageFreeSpaceMin = storageFreeSpaceMin;
return this;
}

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

The test failure seems related. Could you take a look

This is caused by improper handling of exceptions in reflection,I have fixed it.

let's remove the public RaftStorageImpl constructor below since it is no longer used.

I have remove the extra code.

let's use SizeInBytes for storageFreeSpaceMin

Done.

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

@szetszwo Thanks for help review the code, PTAL, thx!

@szetszwo

Copy link
Copy Markdown
Contributor

@codings-dan , thanks for the update. TestRaftStorage failed. Please take a look.
https://github.com/apache/ratis/runs/6920545804?check_suite_focus=true#step:5:562

@codings-dan

codings-dan commented Jun 17, 2022

Copy link
Copy Markdown
ContributorAuthor

TestRaftStorage failed.

Similar to the previous ut error, it was caused by improper handling of exceptions in reflection, I have fixed it

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

The ci test error seems have noting to do with this code change.

https://github.com/apache/ratis/runs/6930404226?check_suite_focus=true#step:5:611

@szetszwo

Copy link
Copy Markdown
Contributor

Sure, let's restart the failed jobs.

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

https://github.com/apache/ratis/runs/6931402074?check_suite_focus=true#step:5:611

This unit test can run locally, see as below
image

@szetszwo

Copy link
Copy Markdown
Contributor

#635 should be able to reduce the timeout problem. @codings-dan , could you review it?

@codings-dan

Copy link
Copy Markdown
ContributorAuthor

#635 should be able to reduce the timeout problem. @codings-dan , could you review it?

Of course, happy to help review the code!

@szetszwo
szetszwo merged commit 995dce9 into apache:masterJun 17, 2022
szetszwo pushed a commit that referenced this pull request Jun 18, 2022
@codings-dan
codings-dan deleted the 1587 branch June 20, 2022 01:51
SzyWilliam pushed a commit to SzyWilliam/ratis that referenced this pull request Jul 2, 2022
symious pushed a commit to symious/ratis that referenced this pull request Mar 5, 2024
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@codings-dan@szetszwo