You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Alexander Lapin (Jira)" <ji...@apache.org> on 2023/02/10 14:12:00 UTC

[jira] [Updated] (IGNITE-18770) Create implementation of ItAbstractListenerSnapshotTest testing snapshots for B+Tree-based storage

     [ https://issues.apache.org/jira/browse/IGNITE-18770?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Alexander Lapin updated IGNITE-18770:
-------------------------------------
    Description: 
In IGNITE-17817 implementation was done for RocksDB-based storage. We need to make the same for B+Tree-based storage when it gets ability to support snapshots.
h3. Implementation Notes

Currently there are two extension points for an ItAbstractListenerSnapshotTest
 # Listener type: Table, Metastorage.
 # Storage type: Rocks, B+Tree, In-memory.

Please pay attention that some of combinations are forbidden, e.g. we don't support in-memory meta storage.

 

Thus we should either introduce new level of abstraction between ItAbstractListenerSnapshotTest and ItTablePersistenceTest/ItMetaStorageServicePersistenceTest in order to parametrize the implementations with specific storage along with corresponding configuration or use parametrize tests themselves. The latter might be non-trivial because of some tech details like resources injection:
{code:java}
    @InjectConfiguration("mock {flushDelayMillis = 0, defaultRegion {size = 16777216, writeBufferSize = 16777216}}")
    private RocksDbStorageEngineConfiguration engineConfig; {code}
so, we should check whether parametrized tests are possible and switch back to old-fashioned inheritance if not.

All in all we should parametrize following items:
{code:java}
@InjectConfiguration("mock {flushDelayMillis = 0, defaultRegion {size = 16777216, writeBufferSize = 16777216}}")     private RocksDbStorageEngineConfiguration engineConfig;  {code}
and
{code:java}
public RaftGroupListener createListener(ClusterService service, Path path, int index) {
  return paths.entrySet().stream()
  ...
  RocksDbStorageEngine storageEngine = new RocksDbStorageEngine(engineConfig, path);
  storageEngine.start();
{code}
 

 

  was:In IGNITE-17817 implementation was done for RocksDB-based storage. We need to make the same for B+Tree-based storage when it gets ability to support snapshots.


> Create implementation of ItAbstractListenerSnapshotTest testing snapshots for B+Tree-based storage
> --------------------------------------------------------------------------------------------------
>
>                 Key: IGNITE-18770
>                 URL: https://issues.apache.org/jira/browse/IGNITE-18770
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Denis Chudov
>            Priority: Major
>              Labels: ignite-3
>
> In IGNITE-17817 implementation was done for RocksDB-based storage. We need to make the same for B+Tree-based storage when it gets ability to support snapshots.
> h3. Implementation Notes
> Currently there are two extension points for an ItAbstractListenerSnapshotTest
>  # Listener type: Table, Metastorage.
>  # Storage type: Rocks, B+Tree, In-memory.
> Please pay attention that some of combinations are forbidden, e.g. we don't support in-memory meta storage.
>  
> Thus we should either introduce new level of abstraction between ItAbstractListenerSnapshotTest and ItTablePersistenceTest/ItMetaStorageServicePersistenceTest in order to parametrize the implementations with specific storage along with corresponding configuration or use parametrize tests themselves. The latter might be non-trivial because of some tech details like resources injection:
> {code:java}
>     @InjectConfiguration("mock {flushDelayMillis = 0, defaultRegion {size = 16777216, writeBufferSize = 16777216}}")
>     private RocksDbStorageEngineConfiguration engineConfig; {code}
> so, we should check whether parametrized tests are possible and switch back to old-fashioned inheritance if not.
> All in all we should parametrize following items:
> {code:java}
> @InjectConfiguration("mock {flushDelayMillis = 0, defaultRegion {size = 16777216, writeBufferSize = 16777216}}")     private RocksDbStorageEngineConfiguration engineConfig;  {code}
> and
> {code:java}
> public RaftGroupListener createListener(ClusterService service, Path path, int index) {
>   return paths.entrySet().stream()
>   ...
>   RocksDbStorageEngine storageEngine = new RocksDbStorageEngine(engineConfig, path);
>   storageEngine.start();
> {code}
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)