openanthem / nimbus-core

Getting Starting with NIMBUS-CORE
https://anthemopensource.atlassian.net/wiki/spaces/OSS/pages/157024674/Quickstart+Guide
Apache License 2.0
10 stars 49 forks source link

@Audit History not working expected. If two member changing state of object on same time, its showing wrong result. #716

Open AkhileshManiTripathi opened 4 years ago

AkhileshManiTripathi commented 4 years ago

Issue Details

@Audit History not working expected. If two member changing state of object on same time, its showing wrong result.

Type of Issue (check one with "X")


[ X] Bug Report

## Current Behavior
Suppose there are two system user USER1 and USER2, There is a member whose detail (**mFName**) is going to change by USER1 and USER2.
Initial Details of Member – 
fName -> **memberFName**

Modified Date | Modified By | Changed Value | Changed To | Previous Value
-- | -- | -- | -- | --
03/27/2020 06:16 AM | USER2 | mFName | mFName22 | **mFName2**
03/27/2020 06:15 AM | USER1 | mFName | mFName11 | **mFName1**
03/27/2020 06:15 AM | USER2 | mFName | mFName2 | mFName1
03/27/2020 06:14 AM | USER1 | mFName | mFName1 |  

## Expected Behavior

Modified Date | Modified By | Changed Value | Changed To | Previous Value
-- | -- | -- | -- | --
03/27/2020 06:16 AM | USER2 | mFName | mFName22 | **mFName11**
03/27/2020 06:15 AM | USER1 | mFName | mFName11 | **mFName2**
03/27/2020 06:15 AM | USER2 | mFName | mFName2 | mFName1
03/27/2020 06:14 AM | USER1 | mFName | mFName1 |  

## How to Reproduce the Issue
### Steps to Reproduce
1.  Create a member Add form.
2.  Add some member to db.
3.  In Member core use @Audit for all fields
4.  Login with 2 user in system and try to edit the member Details.

### Code Snippet
@Domain(value = "member", includeListeners = { ListenerType.persistence })
@Repo(alias = " member ", value = Database.rep_mongodb, cache = Cache.rep_device)
@Getter @Setter @ToString(callSuper = true)
public class Member extends AbstractEntity.IdLong {

    private static final long serialVersionUID = 1L;

    @Audit(MemberAudit.class)
    private String memberId;

    @Audit(MemberAudit.class)
    private String mFName;

}
Form – 
@Model
        @Getter
        @Setter
        @MapsTo.Type(Member.class)
        public static class AddMemberForm {

            @TextBox
            @Label("MemberId ")
            @Path
            private String memberId;

            @TextBox
            @Path
            private String mFName;  

            @Config(url = "/p/member/_new")
@Button(style = Button.Style.PRIMARY, type = Button.Type.submit)
            @Label(value = "Add Member")
            private String save;

        }

# Environment Details
**1.3.2.M2**

* **Browser:**
All