fix: scheduling (#3978)

* fix: improve scheduling

* build pre-release

* fix: locker

* fix: user handler and print stack in case of panic in reducer

* chore: remove sentry

* fix: improve handler projection and implement tests

* more tests

* fix: race condition in tests

* Update internal/eventstore/repository/sql/query.go

Co-authored-by: Silvan <silvan.reusser@gmail.com>

* fix: implemented suggested changes

* fix: lock statement

Co-authored-by: Silvan <silvan.reusser@gmail.com>
This commit is contained in:
Livio Spring
2022-07-22 12:08:39 +02:00
committed by GitHub
parent 0cc548e3f8
commit aed7010508
83 changed files with 1494 additions and 1544 deletions

View File

@@ -55,8 +55,9 @@ func (key sequenceSearchKey) ToColumnName() string {
}
type sequenceSearchQuery struct {
key sequenceSearchKey
value string
key sequenceSearchKey
method domain.SearchMethod
value interface{}
}
func (q *sequenceSearchQuery) GetKey() ColumnKey {
@@ -64,7 +65,7 @@ func (q *sequenceSearchQuery) GetKey() ColumnKey {
}
func (q *sequenceSearchQuery) GetMethod() domain.SearchMethod {
return domain.SearchMethodEquals
return q.method
}
func (q *sequenceSearchQuery) GetValue() interface{} {
@@ -94,7 +95,7 @@ func (s *sequenceSearchRequest) GetAsc() bool {
func (s *sequenceSearchRequest) GetQueries() []SearchQuery {
result := make([]SearchQuery, len(s.queries))
for i, q := range s.queries {
result[i] = &sequenceSearchQuery{key: q.key, value: q.value}
result[i] = &sequenceSearchQuery{key: q.key, value: q.value, method: q.method}
}
return result
}
@@ -147,8 +148,8 @@ func UpdateCurrentSequences(db *gorm.DB, table string, currentSequences []*Curre
func LatestSequence(db *gorm.DB, table, viewName, instanceID string) (*CurrentSequence, error) {
searchQueries := []SearchQuery{
&sequenceSearchQuery{key: sequenceSearchKey(SequenceSearchKeyViewName), value: viewName},
&sequenceSearchQuery{key: sequenceSearchKey(SequenceSearchKeyInstanceID), value: instanceID},
&sequenceSearchQuery{key: sequenceSearchKey(SequenceSearchKeyViewName), value: viewName, method: domain.SearchMethodEquals},
&sequenceSearchQuery{key: sequenceSearchKey(SequenceSearchKeyInstanceID), value: instanceID, method: domain.SearchMethodIsOneOf},
}
// ensure highest sequence of view
@@ -168,13 +169,15 @@ func LatestSequence(db *gorm.DB, table, viewName, instanceID string) (*CurrentSe
return nil, caos_errs.ThrowInternalf(err, "VIEW-9LyCB", "unable to get latest sequence of %s", viewName)
}
func LatestSequences(db *gorm.DB, table, viewName string) ([]*CurrentSequence, error) {
searchQueries := make([]SearchQuery, 0, 2)
searchQueries = append(searchQueries)
func LatestSequences(db *gorm.DB, table, viewName string, instanceIDs ...string) ([]*CurrentSequence, error) {
searchQueries := []sequenceSearchQuery{
{key: sequenceSearchKey(SequenceSearchKeyViewName), value: viewName, method: domain.SearchMethodEquals},
}
if len(instanceIDs) > 0 {
searchQueries = append(searchQueries, sequenceSearchQuery{key: sequenceSearchKey(SequenceSearchKeyInstanceID), value: instanceIDs, method: domain.SearchMethodIsOneOf})
}
searchRequest := &sequenceSearchRequest{
queries: []sequenceSearchQuery{
{key: sequenceSearchKey(SequenceSearchKeyViewName), value: viewName},
},
queries: searchQueries,
}
// ensure highest sequence of view