Skip to content
This repository was archived by the owner on Feb 8, 2024. It is now read-only.

Conversation

@sumedhak27
Copy link

@sumedhak27 sumedhak27 commented Jul 26, 2022

Merge Motr_GC branch into main

Signed-off-by: Sumedh A. Kulkarni [email protected]

Checklist

  • Tracker (select at least one)
    • References tracker ticket
    • Very recent bug; references commit where it was introduced
    • New feature (ticket optional)
    • Doc update (no ticket needed)
    • Code cleanup (no ticket needed)
  • Component impact
    • Affects Dashboard, opened tracker ticket
    • Affects Orchestrator, opened tracker ticket
    • No impact that needs to be tracked
  • Documentation (select at least one)
    • Updates relevant documentation
    • No doc update is appropriate
  • Tests (select at least one)
Show available Jenkins commands
  • jenkins retest this please
  • jenkins test classic perf
  • jenkins test crimson perf
  • jenkins test signed
  • jenkins test make check
  • jenkins test make check arm64
  • jenkins test submodules
  • jenkins test dashboard
  • jenkins test dashboard cephadm
  • jenkins test api
  • jenkins test docs
  • jenkins render docs
  • jenkins test ceph-volume all
  • jenkins test ceph-volume tox

@sumedhak27 sumedhak27 marked this pull request as draft July 26, 2022 05:44
@sumedhak27 sumedhak27 force-pushed the Motr_GC branch 2 times, most recently from cd34def to d65d6d2 Compare July 26, 2022 06:34
@jjxsg jjxsg changed the title [WIP] rgw_sal_motr, motr_gc: [F-81B] support Async Delete for simple objs [WIP] rgw_sal_motr, motr_gc: [F-81B] Support Async Delete for Simple Objects Jul 27, 2022
sumedhak27 and others added 5 commits August 9, 2022 12:19
…ra code (#356)

* rgw_sal_motr, motr_gc: [CORTX-33148] add MotrGC, MotrGC::GCWorker infra code

Behaviour
- With Garbage Collector enabled, MotrGC will have GC indexes & GC worker threads.
- GC worker threads will run for the configured max processing time and then
   will wait for the configured time between two consecutive runs.

Additions/Changes
- Add the Garbage Collector infrastructure to support the start & stop of worker threads.
  - MotrGC class with the interfaces to initialize(), start(), stop() and finalize().
  - GCWorker class with entry() and stop() methods.
- Refactor Initialization of MotrStore
  - add setter methods to configure MotrStore
 - add initialize() method to call initialization of all the other components
   eg. MetadataCache, GC, (in future LC, QuotaHandler), etc.

Signed-off-by: Sumedh Anantrao Kulkarni <[email protected]>
Implement GC metadata structure & corresponding functions

Added motr_gc_obj_info structure to hold gc metadata for an object marked for deletion.
Added logic for creating GC indices based on config parameters.

Signed-off-by: Jeet Jain <[email protected]>
The GC thread will aquire GC index and process the object entries for
deletion either upto the count governed by "rgw_gc_max_trim_chunk" or
time allowed by "rgw_gc_processor_max_time".

Signed-off-by: Sachin Punadikar <[email protected]>
#373)

* rgw_sal_motr: [CORTX-33691] Defines abstract synchronization primitives
and implements it for Motr GC across multiple RGW instances.

Signed-off-by: Dattaprasad Govekar <[email protected]>

* motr_sync_impl: [CORTX-33691] update lock() & remove_lock() methods

Update and refactor the MotrLock::lock() and MotrKVLockProvider::remove_lock()
methods.

Signed-off-by: Sumedh Anantrao Kulkarni <[email protected]>

Co-authored-by: Dattaprasad Govekar <[email protected]>
* rgw_sal_motr, motr_gc: [CORTX-32689] Implement MotrGC::enqueue()

* Push {0_ObjTag: motr_gc_obj_info} and {1_ExpiryTime: motr_gc_obj_info}
  entry to the gc queues, i.e. motr dix.
* Call gc->enqueue() method on simple object delete request without
  actually deleting the obj.

Signed-off-by: Sumedh Anantrao Kulkarni <[email protected]>

* motr_gc: [CORTX-32689] Implement MotrGC::list() function

MotrGC::list() goes through every gc queue and lists the adds the
pending delete requests in resultant vector.
Interface to list objs using admin tool or rest api's is yet
to be developed.

Signed-off-by: Sumedh Anantrao Kulkarni <[email protected]>
DPG17 and others added 4 commits August 10, 2022 12:23
…on. (#385)

* rgw_sal_motr, motr_gc: [CORTX-33148] add MotrGC, MotrGC::GCWorker infra code (#356)

* rgw_sal_motr, motr_gc: [CORTX-33148] add MotrGC, MotrGC::GCWorker infra code

Behaviour
- With Garbage Collector enabled, MotrGC will have GC indexes & GC worker threads.
- GC worker threads will run for the configured max processing time and then
   will wait for the configured time between two consecutive runs.

Additions/Changes
- Add the Garbage Collector infrastructure to support the start & stop of worker threads.
  - MotrGC class with the interfaces to initialize(), start(), stop() and finalize().
  - GCWorker class with entry() and stop() methods.
- Refactor Initialization of MotrStore
  - add setter methods to configure MotrStore
 - add initialize() method to call initialization of all the other components
   eg. MetadataCache, GC, (in future LC, QuotaHandler), etc.

Signed-off-by: Sumedh Anantrao Kulkarni <[email protected]>

* rgw: [CORTX-33179] GC Metadata Implementation (#363)

Implement GC metadata structure & corresponding functions

Added motr_gc_obj_info structure to hold gc metadata for an object marked for deletion.
Added logic for creating GC indices based on config parameters.

Signed-off-by: Jeet Jain <[email protected]>

* GC thread processing logic (#371)

The GC thread will aquire GC index and process the object entries for
deletion either upto the count governed by "rgw_gc_max_trim_chunk" or
time allowed by "rgw_gc_processor_max_time".

Signed-off-by: Sachin Punadikar <[email protected]>

* motr_sync: [CORTX-33691] Define and implement rgw_motr synchronization (#373)

* rgw_sal_motr: [CORTX-33691] Defines abstract synchronization primitives
and implements it for Motr GC across multiple RGW instances.

Signed-off-by: Dattaprasad Govekar <[email protected]>

* motr_sync_impl: [CORTX-33691] update lock() & remove_lock() methods

Update and refactor the MotrLock::lock() and MotrKVLockProvider::remove_lock()
methods.

Signed-off-by: Sumedh Anantrao Kulkarni <[email protected]>

Co-authored-by: Dattaprasad Govekar <[email protected]>

* rgw_sal_motr, motr_gc: [CORTX-32689] Implement MotrGC::enqueue() (#379)

* rgw_sal_motr, motr_gc: [CORTX-32689] Implement MotrGC::enqueue()

* Push {0_ObjTag: motr_gc_obj_info} and {1_ExpiryTime: motr_gc_obj_info}
  entry to the gc queues, i.e. motr dix.
* Call gc->enqueue() method on simple object delete request without
  actually deleting the obj.

Signed-off-by: Sumedh Anantrao Kulkarni <[email protected]>

* motr_gc: [CORTX-32689] Implement MotrGC::list() function

MotrGC::list() goes through every gc queue and lists the adds the
pending delete requests in resultant vector.
Interface to list objs using admin tool or rest api's is yet
to be developed.

Signed-off-by: Sumedh Anantrao Kulkarni <[email protected]>

* motr_sync: [CORTX-33853] Support race coditions during lock acquisition.

Changed lock() implementation to avoid multiple KV operations, thereby
reducing the effect of race during lock() call by caller.

Signed-off-by: Dattaprasad Govekar <[email protected]>

* motr_sync: [CORTX-33853] Support race coditions during lock acquisition.

- Changed lock() implementation to avoid multiple KV operations, thereby
reducing the effect of race during lock() call by caller.
- Added check_lock() to reconfirm the lock by caller.

Signed-off-by: Dattaprasad Govekar <[email protected]>

Co-authored-by: Sumedh Anantrao Kulkarni <[email protected]>
Co-authored-by: Jeet Jain <[email protected]>
Co-authored-by: Sachin Punadikar <[email protected]>
Implementation of MOTR GC consumer module. The following parameters are honoured 
with GC initialization and processing. 
```
rgw_enable_gc_threads
rgw_gc_max_objs
rgw_gc_obj_min_wait
rgw_gc_processor_max_time
rgw_gc_processor_period
rgw_gc_max_concurrent_io
rgw_gc_max_trim_chunk
```
The following CLI command is also enabled for listing objects in GC queue (for dev testing):
```
bin/radosgw-admin gc list --no-mon-config
```

Signed-off-by: Jeet Jain <[email protected]>
… Motr GC (#389)

- Integrate locking code changes in GC worker thread

Signed-off-by: Dattaprasad Govekar <[email protected]>
- Fix issues in locking mechanism.

Signed-off-by: Dattaprasad Govekar <[email protected]>

Signed-off-by: Dattaprasad Govekar <[email protected]>
@sachinpunadikar sachinpunadikar changed the title [WIP] rgw_sal_motr, motr_gc: [F-81B] Support Async Delete for Simple Objects rgw,rgw_sal_motr, motr_gc: [F-81B] Support Async Delete for Simple Objects Aug 16, 2022
@sachinpunadikar sachinpunadikar marked this pull request as ready for review August 16, 2022 16:01
Copy link

@sachinpunadikar sachinpunadikar left a comment

Choose a reason for hiding this comment

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

+1

@sachinpunadikar sachinpunadikar merged commit 59e076d into main Aug 16, 2022
@sachinpunadikar sachinpunadikar deleted the Motr_GC branch August 22, 2022 05:59
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants