Conversation
b3eb59b to
bfd17fe
Compare
8375f14 to
bffdf83
Compare
0f64991 to
d0974e8
Compare
|
@vinothchandar @bvaradar I've tried to address most of your comments you had in this PR : #623. I've also added 2 end-to-end test cases that can be run either inside the docker container or in your own cluster (where you can scale test the same DAG). |
|
Test pass locally but failing with |
d0974e8 to
3931ef6
Compare
There was a problem hiding this comment.
Since every subclass of DagNode has defined a execute and we did not use its return value in DagScheduler.
Shall we define an abstract method which signature is:
public abstract void execute(ExecutionContext context) throws Exception;
To provide different runtime context information, we can define a context POJO, e.g. ExecutionContext.
What do you think?
There was a problem hiding this comment.
The idea was to have the execute method return it's output so we can actually perform validations at any level in the DAG if needed.
If you take a look at ValidateNode, that's what it does, it just uses the output of the last execution. Let me think about this a little more. I like the idea about removing the if-else and have an abstract method, refactored.
There was a problem hiding this comment.
With refactoring DagNode (provide an abstract execute method), here we could replace these if/else with a single line like:
node.execute(xxx);
3931ef6 to
40c82ea
Compare
|
Hi @n3nash Thanks for refactoring the original PR. I left some comments some of them may need further discussion.
Please see inline comments. |
40c82ea to
1209fd3
Compare
|
@yanghua Thanks for pointing out the Uber -> Apache licensing, I've fixed that in all files now. |
yanghua
left a comment
There was a problem hiding this comment.
Some comments from my side.
There was a problem hiding this comment.
{@org.apache.hadoop.hdfs.LocalFileSystem} -> {@link org.apache.hadoop.hdfs.LocalFileSystem}
yanghua
left a comment
There was a problem hiding this comment.
Some comments from my side.
There was a problem hiding this comment.
Since there are many places use the avro and parquet file extension. Shall we define a general constant?
There was a problem hiding this comment.
I'd like to keep it contained since it's only used in 2 places, made it public and consolidated usages.
There was a problem hiding this comment.
It would be better to unify the log face framework(slf4j) in the whole project.
There was a problem hiding this comment.
We have been using apache log4j, let's file a ticket and discuss this there.
There was a problem hiding this comment.
It seems there is a plan to replace log4j with slf4j. So let's do this later.
There was a problem hiding this comment.
there is a ticket for this already.
There was a problem hiding this comment.
Shall we replace System.out.println with logging?
There was a problem hiding this comment.
This is a remnant of debugging, remove this.
There was a problem hiding this comment.
Shall we replace System.out.println with logging?
There was a problem hiding this comment.
IMO, It would be better to use two try/catch to wrap each two statements to avoid the first one throw exception, while the second one can not be invoked.
There was a problem hiding this comment.
Well, if one of them fails, ideally we want to throw the exception which would terminate the jvm and hence the local hive service as well.
There was a problem hiding this comment.
It would be better to unify the prefix of the class name, based on the naming of the project, HoodieTestSuiteJob looks better.
There was a problem hiding this comment.
This helper class read both Avro and Parquet files. So we need to update this doc.
There was a problem hiding this comment.
Here is a suggestion about the naming of the nodes to make the DAG more clear. For example, we can refactor them with: root-> firstLevel, child1 -> secondLevel, child2 -> thirdLevel1, newNode2 -> thirdLevel2. Just a example, there may be another way to make the structure more clear.
There was a problem hiding this comment.
Renamed and made it more clear
There was a problem hiding this comment.
Here is also a naming suggestion. It seems we have too many classes with a name pattern like xxxWrapper. What about HiveTestServiceProvider?
There was a problem hiding this comment.
There's only 2 classes with the name wrapper, not many :) But I like the name you suggested, made the change.
There was a problem hiding this comment.
It seems we did not use this class anywhere? Is it useful?
There was a problem hiding this comment.
Yes, need to use this to efficiently consume batches. Will make adjustments to use this class soon.
|
@n3nash Now, there is a conflict file. |
There was a problem hiding this comment.
What about renaming to DeltaOutputType. Generally, there are two common pairs: input <-> output, source <-> sink.
There was a problem hiding this comment.
I am confused. It seems we have removed this class from the master branch, @vinothchandar right?
There was a problem hiding this comment.
IMO, here we can also replace these if/else mode with other technology(e.g. Reflection, unify constructor...). WDYT?
There was a problem hiding this comment.
I think that's possible, will address this at the end of after all other comments are addressed.
|
@n3nash If your lastest force-pushed commit try to fix CI issues? I would not suggest using force-push for the big PR which needs to be iterated many times. Single commit can be review easily. WDYT? As @vinothchandar said, this is a big PR. Since it's a single and independency module. Can we split it into several subtasks to make it more controllable? We can add some subtask under HUDI-289? WDYT? |
|
+1 on this PR. deferring squash finally at merging time would be ideal. @yanghua while I agree with you that ideally, we phased this as smaller checkins. But this one is a special case, since it was started even before incubating... So we are where we are.. We can treat Nishith's branch as the current feature branch or even merge this to a feature branch in apache/incubator-hudi (like we did for packaging fixes) and keep iterating there? That would also help @yanghua contribute changes on top of this.. and ultimately merge this into master when ready. My 2c |
|
@vinothchandar I agree with you. Especially, moving this PR into a feature branch so that I can interact with @n3nash . When can we move to the feature branch? Now, I am not convenient to update this PR because it may cause conflicts. |
|
@yanghua I'd like to first understand our plan for iterating on this feature before we can decide to move it to a feature branch.
On a side note of force-push, I think it's fair to squash later since this is a large PR. |
|
I think there are open comments here already. But getting this PR to pass travis and getting to a feature branch would be a good starting point. Ultimately, @yanghua can see if his JIRA for long running tests can be implemented on top of this. I expect he might have to make changes on top of this. Hope that provides some context |
Hi @n3nash there are some things should be done in the future. For example:
Actually, the reason that I want to move to the feature branch is I want to quickly interact with you not just comment(I can fix some issues which I found.). While if we work on the same PR. The frequency of conflicts is very high. WDYT? |
|
@n3nash Have not read thru all the responses you had yet. Will do in sometime . But just wanted to highlight 1 issue that I feel strongly about.. IMO For any test framework, we need to write a few hard test cases, which identifies issues and runs in a CI environment continuously for few weeks, before we can deem it complete? In that sense, if we can have a feature branch, then you both can quickly iterate and get us to this stage.. We have some llarge ambitions in the coming months and having this in top shape, will ease all of our minds.. As someone supporting one of the largest data lakes out there :) , I am sure you 'd agree that catching issues upfront is way way way better than chasing them .. |
|
@n3nash The Travis is still red. Can we move this PR into a new branch now so that I can start to do something? |
1033f82 to
dac689e
Compare
- Flexible schema payload generation
- Different types of workload generation such as inserts, upserts etc
- Post process actions to perform validations
- Interoperability of test suite to use HoodieWriteClient and HoodieDeltaStreamer so both code paths can be tested
- Custom workload sequence generator
- Ability to perform parallel operations, such as upsert and compaction
8173923 to
b060994
Compare
|
@yanghua I've pushed the PR to a feature branch : https://github.com/apache/incubator-hudi/tree/hudi_test_suite_refactor. I will shortly close this PR. The build right now is failing due to exceeded log limits, I'm looking at ways to fix them. Once you have started working on the first task you want to add to the branch, let's chat, I'd like to understand what you have in mind and how it aligns with the current PR so that we can provide a first version of test suite with sufficient features for large feature testing. |
b060994 to
0c2ed53
Compare
|
@n3nash Thanks. Will check out the new feature branch soon. |
|
@n3nash there are still some conflicts. to @vinothchandar, When waiting for this PR to be pushed into a single feature branch, I spent some time to do #1049 and HUDI-184. Will return back to the test-suite soon. |
|
There are so many conflicts. I have tried to rebase with the master branch, however, it's hard to do this for multiple commits. So I would like to firstly squash the commits and rebase to fix conflicts. FYI, cc @n3nash @vinothchandar |
|
Yes, we should rebase it based on the master branch. The work reflects on branch #1057 . However, I can not merge it with this PR or the feature branch. So I created a copy. |
|
Some pending job from my side:
|
|
OK, Let's close this PR and move to #1057 |
Uh oh!
There was an error while loading. Please reload this page.