github.com/masterhung0112/hk_server/v5@v5.0.0-20220302090640-ec71aef15e1c/store/retrylayer/retrylayer.go (about) 1 // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. 2 // See LICENSE.txt for license information. 3 4 // Code generated by "make store-layers" 5 // DO NOT EDIT 6 7 package retrylayer 8 9 import ( 10 "context" 11 12 "github.com/go-sql-driver/mysql" 13 "github.com/lib/pq" 14 "github.com/masterhung0112/hk_server/v5/model" 15 "github.com/masterhung0112/hk_server/v5/store" 16 "github.com/pkg/errors" 17 ) 18 19 const mySQLDeadlockCode = uint16(1213) 20 21 type RetryLayer struct { 22 store.Store 23 AuditStore store.AuditStore 24 BotStore store.BotStore 25 ChannelStore store.ChannelStore 26 ChannelMemberHistoryStore store.ChannelMemberHistoryStore 27 ClusterDiscoveryStore store.ClusterDiscoveryStore 28 CommandStore store.CommandStore 29 CommandWebhookStore store.CommandWebhookStore 30 ComplianceStore store.ComplianceStore 31 EmojiStore store.EmojiStore 32 FileInfoStore store.FileInfoStore 33 GroupStore store.GroupStore 34 JobStore store.JobStore 35 LicenseStore store.LicenseStore 36 LinkMetadataStore store.LinkMetadataStore 37 OAuthStore store.OAuthStore 38 PluginStore store.PluginStore 39 PostStore store.PostStore 40 PreferenceStore store.PreferenceStore 41 ProductNoticesStore store.ProductNoticesStore 42 ReactionStore store.ReactionStore 43 RemoteClusterStore store.RemoteClusterStore 44 RetentionPolicyStore store.RetentionPolicyStore 45 RoleStore store.RoleStore 46 SchemeStore store.SchemeStore 47 SessionStore store.SessionStore 48 SharedChannelStore store.SharedChannelStore 49 StatusStore store.StatusStore 50 SystemStore store.SystemStore 51 TeamStore store.TeamStore 52 TermsOfServiceStore store.TermsOfServiceStore 53 ThreadStore store.ThreadStore 54 TokenStore store.TokenStore 55 TrackPointStore store.TrackPointStore 56 TrackRecordStore store.TrackRecordStore 57 UploadSessionStore store.UploadSessionStore 58 UserStore store.UserStore 59 UserAccessTokenStore store.UserAccessTokenStore 60 UserTermsOfServiceStore store.UserTermsOfServiceStore 61 WebhookStore store.WebhookStore 62 } 63 64 func (s *RetryLayer) Audit() store.AuditStore { 65 return s.AuditStore 66 } 67 68 func (s *RetryLayer) Bot() store.BotStore { 69 return s.BotStore 70 } 71 72 func (s *RetryLayer) Channel() store.ChannelStore { 73 return s.ChannelStore 74 } 75 76 func (s *RetryLayer) ChannelMemberHistory() store.ChannelMemberHistoryStore { 77 return s.ChannelMemberHistoryStore 78 } 79 80 func (s *RetryLayer) ClusterDiscovery() store.ClusterDiscoveryStore { 81 return s.ClusterDiscoveryStore 82 } 83 84 func (s *RetryLayer) Command() store.CommandStore { 85 return s.CommandStore 86 } 87 88 func (s *RetryLayer) CommandWebhook() store.CommandWebhookStore { 89 return s.CommandWebhookStore 90 } 91 92 func (s *RetryLayer) Compliance() store.ComplianceStore { 93 return s.ComplianceStore 94 } 95 96 func (s *RetryLayer) Emoji() store.EmojiStore { 97 return s.EmojiStore 98 } 99 100 func (s *RetryLayer) FileInfo() store.FileInfoStore { 101 return s.FileInfoStore 102 } 103 104 func (s *RetryLayer) Group() store.GroupStore { 105 return s.GroupStore 106 } 107 108 func (s *RetryLayer) Job() store.JobStore { 109 return s.JobStore 110 } 111 112 func (s *RetryLayer) License() store.LicenseStore { 113 return s.LicenseStore 114 } 115 116 func (s *RetryLayer) LinkMetadata() store.LinkMetadataStore { 117 return s.LinkMetadataStore 118 } 119 120 func (s *RetryLayer) OAuth() store.OAuthStore { 121 return s.OAuthStore 122 } 123 124 func (s *RetryLayer) Plugin() store.PluginStore { 125 return s.PluginStore 126 } 127 128 func (s *RetryLayer) Post() store.PostStore { 129 return s.PostStore 130 } 131 132 func (s *RetryLayer) Preference() store.PreferenceStore { 133 return s.PreferenceStore 134 } 135 136 func (s *RetryLayer) ProductNotices() store.ProductNoticesStore { 137 return s.ProductNoticesStore 138 } 139 140 func (s *RetryLayer) Reaction() store.ReactionStore { 141 return s.ReactionStore 142 } 143 144 func (s *RetryLayer) RemoteCluster() store.RemoteClusterStore { 145 return s.RemoteClusterStore 146 } 147 148 func (s *RetryLayer) RetentionPolicy() store.RetentionPolicyStore { 149 return s.RetentionPolicyStore 150 } 151 152 func (s *RetryLayer) Role() store.RoleStore { 153 return s.RoleStore 154 } 155 156 func (s *RetryLayer) Scheme() store.SchemeStore { 157 return s.SchemeStore 158 } 159 160 func (s *RetryLayer) Session() store.SessionStore { 161 return s.SessionStore 162 } 163 164 func (s *RetryLayer) SharedChannel() store.SharedChannelStore { 165 return s.SharedChannelStore 166 } 167 168 func (s *RetryLayer) Status() store.StatusStore { 169 return s.StatusStore 170 } 171 172 func (s *RetryLayer) System() store.SystemStore { 173 return s.SystemStore 174 } 175 176 func (s *RetryLayer) Team() store.TeamStore { 177 return s.TeamStore 178 } 179 180 func (s *RetryLayer) TermsOfService() store.TermsOfServiceStore { 181 return s.TermsOfServiceStore 182 } 183 184 func (s *RetryLayer) Thread() store.ThreadStore { 185 return s.ThreadStore 186 } 187 188 func (s *RetryLayer) Token() store.TokenStore { 189 return s.TokenStore 190 } 191 192 func (s *RetryLayer) TrackPoint() store.TrackPointStore { 193 return s.TrackPointStore 194 } 195 196 func (s *RetryLayer) TrackRecord() store.TrackRecordStore { 197 return s.TrackRecordStore 198 } 199 200 func (s *RetryLayer) UploadSession() store.UploadSessionStore { 201 return s.UploadSessionStore 202 } 203 204 func (s *RetryLayer) User() store.UserStore { 205 return s.UserStore 206 } 207 208 func (s *RetryLayer) UserAccessToken() store.UserAccessTokenStore { 209 return s.UserAccessTokenStore 210 } 211 212 func (s *RetryLayer) UserTermsOfService() store.UserTermsOfServiceStore { 213 return s.UserTermsOfServiceStore 214 } 215 216 func (s *RetryLayer) Webhook() store.WebhookStore { 217 return s.WebhookStore 218 } 219 220 type RetryLayerAuditStore struct { 221 store.AuditStore 222 Root *RetryLayer 223 } 224 225 type RetryLayerBotStore struct { 226 store.BotStore 227 Root *RetryLayer 228 } 229 230 type RetryLayerChannelStore struct { 231 store.ChannelStore 232 Root *RetryLayer 233 } 234 235 type RetryLayerChannelMemberHistoryStore struct { 236 store.ChannelMemberHistoryStore 237 Root *RetryLayer 238 } 239 240 type RetryLayerClusterDiscoveryStore struct { 241 store.ClusterDiscoveryStore 242 Root *RetryLayer 243 } 244 245 type RetryLayerCommandStore struct { 246 store.CommandStore 247 Root *RetryLayer 248 } 249 250 type RetryLayerCommandWebhookStore struct { 251 store.CommandWebhookStore 252 Root *RetryLayer 253 } 254 255 type RetryLayerComplianceStore struct { 256 store.ComplianceStore 257 Root *RetryLayer 258 } 259 260 type RetryLayerEmojiStore struct { 261 store.EmojiStore 262 Root *RetryLayer 263 } 264 265 type RetryLayerFileInfoStore struct { 266 store.FileInfoStore 267 Root *RetryLayer 268 } 269 270 type RetryLayerGroupStore struct { 271 store.GroupStore 272 Root *RetryLayer 273 } 274 275 type RetryLayerJobStore struct { 276 store.JobStore 277 Root *RetryLayer 278 } 279 280 type RetryLayerLicenseStore struct { 281 store.LicenseStore 282 Root *RetryLayer 283 } 284 285 type RetryLayerLinkMetadataStore struct { 286 store.LinkMetadataStore 287 Root *RetryLayer 288 } 289 290 type RetryLayerOAuthStore struct { 291 store.OAuthStore 292 Root *RetryLayer 293 } 294 295 type RetryLayerPluginStore struct { 296 store.PluginStore 297 Root *RetryLayer 298 } 299 300 type RetryLayerPostStore struct { 301 store.PostStore 302 Root *RetryLayer 303 } 304 305 type RetryLayerPreferenceStore struct { 306 store.PreferenceStore 307 Root *RetryLayer 308 } 309 310 type RetryLayerProductNoticesStore struct { 311 store.ProductNoticesStore 312 Root *RetryLayer 313 } 314 315 type RetryLayerReactionStore struct { 316 store.ReactionStore 317 Root *RetryLayer 318 } 319 320 type RetryLayerRemoteClusterStore struct { 321 store.RemoteClusterStore 322 Root *RetryLayer 323 } 324 325 type RetryLayerRetentionPolicyStore struct { 326 store.RetentionPolicyStore 327 Root *RetryLayer 328 } 329 330 type RetryLayerRoleStore struct { 331 store.RoleStore 332 Root *RetryLayer 333 } 334 335 type RetryLayerSchemeStore struct { 336 store.SchemeStore 337 Root *RetryLayer 338 } 339 340 type RetryLayerSessionStore struct { 341 store.SessionStore 342 Root *RetryLayer 343 } 344 345 type RetryLayerSharedChannelStore struct { 346 store.SharedChannelStore 347 Root *RetryLayer 348 } 349 350 type RetryLayerStatusStore struct { 351 store.StatusStore 352 Root *RetryLayer 353 } 354 355 type RetryLayerSystemStore struct { 356 store.SystemStore 357 Root *RetryLayer 358 } 359 360 type RetryLayerTeamStore struct { 361 store.TeamStore 362 Root *RetryLayer 363 } 364 365 type RetryLayerTermsOfServiceStore struct { 366 store.TermsOfServiceStore 367 Root *RetryLayer 368 } 369 370 type RetryLayerThreadStore struct { 371 store.ThreadStore 372 Root *RetryLayer 373 } 374 375 type RetryLayerTokenStore struct { 376 store.TokenStore 377 Root *RetryLayer 378 } 379 380 type RetryLayerTrackPointStore struct { 381 store.TrackPointStore 382 Root *RetryLayer 383 } 384 385 type RetryLayerTrackRecordStore struct { 386 store.TrackRecordStore 387 Root *RetryLayer 388 } 389 390 type RetryLayerUploadSessionStore struct { 391 store.UploadSessionStore 392 Root *RetryLayer 393 } 394 395 type RetryLayerUserStore struct { 396 store.UserStore 397 Root *RetryLayer 398 } 399 400 type RetryLayerUserAccessTokenStore struct { 401 store.UserAccessTokenStore 402 Root *RetryLayer 403 } 404 405 type RetryLayerUserTermsOfServiceStore struct { 406 store.UserTermsOfServiceStore 407 Root *RetryLayer 408 } 409 410 type RetryLayerWebhookStore struct { 411 store.WebhookStore 412 Root *RetryLayer 413 } 414 415 func isRepeatableError(err error) bool { 416 var pqErr *pq.Error 417 var mysqlErr *mysql.MySQLError 418 switch { 419 case errors.As(errors.Cause(err), &pqErr): 420 if pqErr.Code == "40001" || pqErr.Code == "40P01" { 421 return true 422 } 423 case errors.As(errors.Cause(err), &mysqlErr): 424 if mysqlErr.Number == mySQLDeadlockCode { 425 return true 426 } 427 } 428 return false 429 } 430 431 func (s *RetryLayerAuditStore) Get(user_id string, offset int, limit int) (model.Audits, error) { 432 433 tries := 0 434 for { 435 result, err := s.AuditStore.Get(user_id, offset, limit) 436 if err == nil { 437 return result, nil 438 } 439 if !isRepeatableError(err) { 440 return result, err 441 } 442 tries++ 443 if tries >= 3 { 444 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 445 return result, err 446 } 447 } 448 449 } 450 451 func (s *RetryLayerAuditStore) PermanentDeleteByUser(userID string) error { 452 453 tries := 0 454 for { 455 err := s.AuditStore.PermanentDeleteByUser(userID) 456 if err == nil { 457 return nil 458 } 459 if !isRepeatableError(err) { 460 return err 461 } 462 tries++ 463 if tries >= 3 { 464 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 465 return err 466 } 467 } 468 469 } 470 471 func (s *RetryLayerAuditStore) Save(audit *model.Audit) error { 472 473 tries := 0 474 for { 475 err := s.AuditStore.Save(audit) 476 if err == nil { 477 return nil 478 } 479 if !isRepeatableError(err) { 480 return err 481 } 482 tries++ 483 if tries >= 3 { 484 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 485 return err 486 } 487 } 488 489 } 490 491 func (s *RetryLayerBotStore) Get(userID string, includeDeleted bool) (*model.Bot, error) { 492 493 tries := 0 494 for { 495 result, err := s.BotStore.Get(userID, includeDeleted) 496 if err == nil { 497 return result, nil 498 } 499 if !isRepeatableError(err) { 500 return result, err 501 } 502 tries++ 503 if tries >= 3 { 504 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 505 return result, err 506 } 507 } 508 509 } 510 511 func (s *RetryLayerBotStore) GetAll(options *model.BotGetOptions) ([]*model.Bot, error) { 512 513 tries := 0 514 for { 515 result, err := s.BotStore.GetAll(options) 516 if err == nil { 517 return result, nil 518 } 519 if !isRepeatableError(err) { 520 return result, err 521 } 522 tries++ 523 if tries >= 3 { 524 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 525 return result, err 526 } 527 } 528 529 } 530 531 func (s *RetryLayerBotStore) PermanentDelete(userID string) error { 532 533 tries := 0 534 for { 535 err := s.BotStore.PermanentDelete(userID) 536 if err == nil { 537 return nil 538 } 539 if !isRepeatableError(err) { 540 return err 541 } 542 tries++ 543 if tries >= 3 { 544 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 545 return err 546 } 547 } 548 549 } 550 551 func (s *RetryLayerBotStore) Save(bot *model.Bot) (*model.Bot, error) { 552 553 tries := 0 554 for { 555 result, err := s.BotStore.Save(bot) 556 if err == nil { 557 return result, nil 558 } 559 if !isRepeatableError(err) { 560 return result, err 561 } 562 tries++ 563 if tries >= 3 { 564 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 565 return result, err 566 } 567 } 568 569 } 570 571 func (s *RetryLayerBotStore) Update(bot *model.Bot) (*model.Bot, error) { 572 573 tries := 0 574 for { 575 result, err := s.BotStore.Update(bot) 576 if err == nil { 577 return result, nil 578 } 579 if !isRepeatableError(err) { 580 return result, err 581 } 582 tries++ 583 if tries >= 3 { 584 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 585 return result, err 586 } 587 } 588 589 } 590 591 func (s *RetryLayerChannelStore) AnalyticsDeletedTypeCount(teamID string, channelType string) (int64, error) { 592 593 tries := 0 594 for { 595 result, err := s.ChannelStore.AnalyticsDeletedTypeCount(teamID, channelType) 596 if err == nil { 597 return result, nil 598 } 599 if !isRepeatableError(err) { 600 return result, err 601 } 602 tries++ 603 if tries >= 3 { 604 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 605 return result, err 606 } 607 } 608 609 } 610 611 func (s *RetryLayerChannelStore) AnalyticsTypeCount(teamID string, channelType string) (int64, error) { 612 613 tries := 0 614 for { 615 result, err := s.ChannelStore.AnalyticsTypeCount(teamID, channelType) 616 if err == nil { 617 return result, nil 618 } 619 if !isRepeatableError(err) { 620 return result, err 621 } 622 tries++ 623 if tries >= 3 { 624 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 625 return result, err 626 } 627 } 628 629 } 630 631 func (s *RetryLayerChannelStore) AutocompleteInTeam(teamID string, term string, includeDeleted bool) (*model.ChannelList, error) { 632 633 tries := 0 634 for { 635 result, err := s.ChannelStore.AutocompleteInTeam(teamID, term, includeDeleted) 636 if err == nil { 637 return result, nil 638 } 639 if !isRepeatableError(err) { 640 return result, err 641 } 642 tries++ 643 if tries >= 3 { 644 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 645 return result, err 646 } 647 } 648 649 } 650 651 func (s *RetryLayerChannelStore) AutocompleteInTeamForSearch(teamID string, userID string, term string, includeDeleted bool) (*model.ChannelList, error) { 652 653 tries := 0 654 for { 655 result, err := s.ChannelStore.AutocompleteInTeamForSearch(teamID, userID, term, includeDeleted) 656 if err == nil { 657 return result, nil 658 } 659 if !isRepeatableError(err) { 660 return result, err 661 } 662 tries++ 663 if tries >= 3 { 664 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 665 return result, err 666 } 667 } 668 669 } 670 671 func (s *RetryLayerChannelStore) ClearAllCustomRoleAssignments() error { 672 673 tries := 0 674 for { 675 err := s.ChannelStore.ClearAllCustomRoleAssignments() 676 if err == nil { 677 return nil 678 } 679 if !isRepeatableError(err) { 680 return err 681 } 682 tries++ 683 if tries >= 3 { 684 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 685 return err 686 } 687 } 688 689 } 690 691 func (s *RetryLayerChannelStore) ClearCaches() { 692 693 s.ChannelStore.ClearCaches() 694 695 } 696 697 func (s *RetryLayerChannelStore) ClearSidebarOnTeamLeave(userID string, teamID string) error { 698 699 tries := 0 700 for { 701 err := s.ChannelStore.ClearSidebarOnTeamLeave(userID, teamID) 702 if err == nil { 703 return nil 704 } 705 if !isRepeatableError(err) { 706 return err 707 } 708 tries++ 709 if tries >= 3 { 710 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 711 return err 712 } 713 } 714 715 } 716 717 func (s *RetryLayerChannelStore) CountPostsAfter(channelID string, timestamp int64, userID string) (int, int, error) { 718 719 tries := 0 720 for { 721 result, resultVar1, err := s.ChannelStore.CountPostsAfter(channelID, timestamp, userID) 722 if err == nil { 723 return result, resultVar1, nil 724 } 725 if !isRepeatableError(err) { 726 return result, resultVar1, err 727 } 728 tries++ 729 if tries >= 3 { 730 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 731 return result, resultVar1, err 732 } 733 } 734 735 } 736 737 func (s *RetryLayerChannelStore) CreateDirectChannel(userID *model.User, otherUserID *model.User, channelOptions ...model.ChannelOption) (*model.Channel, error) { 738 739 tries := 0 740 for { 741 result, err := s.ChannelStore.CreateDirectChannel(userID, otherUserID, channelOptions...) 742 if err == nil { 743 return result, nil 744 } 745 if !isRepeatableError(err) { 746 return result, err 747 } 748 tries++ 749 if tries >= 3 { 750 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 751 return result, err 752 } 753 } 754 755 } 756 757 func (s *RetryLayerChannelStore) CreateInitialSidebarCategories(userID string, teamID string) (*model.OrderedSidebarCategories, error) { 758 759 tries := 0 760 for { 761 result, err := s.ChannelStore.CreateInitialSidebarCategories(userID, teamID) 762 if err == nil { 763 return result, nil 764 } 765 if !isRepeatableError(err) { 766 return result, err 767 } 768 tries++ 769 if tries >= 3 { 770 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 771 return result, err 772 } 773 } 774 775 } 776 777 func (s *RetryLayerChannelStore) CreateSidebarCategory(userID string, teamID string, newCategory *model.SidebarCategoryWithChannels) (*model.SidebarCategoryWithChannels, error) { 778 779 tries := 0 780 for { 781 result, err := s.ChannelStore.CreateSidebarCategory(userID, teamID, newCategory) 782 if err == nil { 783 return result, nil 784 } 785 if !isRepeatableError(err) { 786 return result, err 787 } 788 tries++ 789 if tries >= 3 { 790 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 791 return result, err 792 } 793 } 794 795 } 796 797 func (s *RetryLayerChannelStore) Delete(channelID string, time int64) error { 798 799 tries := 0 800 for { 801 err := s.ChannelStore.Delete(channelID, time) 802 if err == nil { 803 return nil 804 } 805 if !isRepeatableError(err) { 806 return err 807 } 808 tries++ 809 if tries >= 3 { 810 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 811 return err 812 } 813 } 814 815 } 816 817 func (s *RetryLayerChannelStore) DeleteSidebarCategory(categoryID string) error { 818 819 tries := 0 820 for { 821 err := s.ChannelStore.DeleteSidebarCategory(categoryID) 822 if err == nil { 823 return nil 824 } 825 if !isRepeatableError(err) { 826 return err 827 } 828 tries++ 829 if tries >= 3 { 830 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 831 return err 832 } 833 } 834 835 } 836 837 func (s *RetryLayerChannelStore) DeleteSidebarChannelsByPreferences(preferences *model.Preferences) error { 838 839 tries := 0 840 for { 841 err := s.ChannelStore.DeleteSidebarChannelsByPreferences(preferences) 842 if err == nil { 843 return nil 844 } 845 if !isRepeatableError(err) { 846 return err 847 } 848 tries++ 849 if tries >= 3 { 850 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 851 return err 852 } 853 } 854 855 } 856 857 func (s *RetryLayerChannelStore) Get(id string, allowFromCache bool) (*model.Channel, error) { 858 859 tries := 0 860 for { 861 result, err := s.ChannelStore.Get(id, allowFromCache) 862 if err == nil { 863 return result, nil 864 } 865 if !isRepeatableError(err) { 866 return result, err 867 } 868 tries++ 869 if tries >= 3 { 870 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 871 return result, err 872 } 873 } 874 875 } 876 877 func (s *RetryLayerChannelStore) GetAll(teamID string) ([]*model.Channel, error) { 878 879 tries := 0 880 for { 881 result, err := s.ChannelStore.GetAll(teamID) 882 if err == nil { 883 return result, nil 884 } 885 if !isRepeatableError(err) { 886 return result, err 887 } 888 tries++ 889 if tries >= 3 { 890 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 891 return result, err 892 } 893 } 894 895 } 896 897 func (s *RetryLayerChannelStore) GetAllChannelMembersForUser(userID string, allowFromCache bool, includeDeleted bool) (map[string]string, error) { 898 899 tries := 0 900 for { 901 result, err := s.ChannelStore.GetAllChannelMembersForUser(userID, allowFromCache, includeDeleted) 902 if err == nil { 903 return result, nil 904 } 905 if !isRepeatableError(err) { 906 return result, err 907 } 908 tries++ 909 if tries >= 3 { 910 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 911 return result, err 912 } 913 } 914 915 } 916 917 func (s *RetryLayerChannelStore) GetAllChannelMembersNotifyPropsForChannel(channelID string, allowFromCache bool) (map[string]model.StringMap, error) { 918 919 tries := 0 920 for { 921 result, err := s.ChannelStore.GetAllChannelMembersNotifyPropsForChannel(channelID, allowFromCache) 922 if err == nil { 923 return result, nil 924 } 925 if !isRepeatableError(err) { 926 return result, err 927 } 928 tries++ 929 if tries >= 3 { 930 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 931 return result, err 932 } 933 } 934 935 } 936 937 func (s *RetryLayerChannelStore) GetAllChannels(page int, perPage int, opts store.ChannelSearchOpts) (*model.ChannelListWithTeamData, error) { 938 939 tries := 0 940 for { 941 result, err := s.ChannelStore.GetAllChannels(page, perPage, opts) 942 if err == nil { 943 return result, nil 944 } 945 if !isRepeatableError(err) { 946 return result, err 947 } 948 tries++ 949 if tries >= 3 { 950 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 951 return result, err 952 } 953 } 954 955 } 956 957 func (s *RetryLayerChannelStore) GetAllChannelsCount(opts store.ChannelSearchOpts) (int64, error) { 958 959 tries := 0 960 for { 961 result, err := s.ChannelStore.GetAllChannelsCount(opts) 962 if err == nil { 963 return result, nil 964 } 965 if !isRepeatableError(err) { 966 return result, err 967 } 968 tries++ 969 if tries >= 3 { 970 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 971 return result, err 972 } 973 } 974 975 } 976 977 func (s *RetryLayerChannelStore) GetAllChannelsForExportAfter(limit int, afterID string) ([]*model.ChannelForExport, error) { 978 979 tries := 0 980 for { 981 result, err := s.ChannelStore.GetAllChannelsForExportAfter(limit, afterID) 982 if err == nil { 983 return result, nil 984 } 985 if !isRepeatableError(err) { 986 return result, err 987 } 988 tries++ 989 if tries >= 3 { 990 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 991 return result, err 992 } 993 } 994 995 } 996 997 func (s *RetryLayerChannelStore) GetAllDirectChannelsForExportAfter(limit int, afterID string) ([]*model.DirectChannelForExport, error) { 998 999 tries := 0 1000 for { 1001 result, err := s.ChannelStore.GetAllDirectChannelsForExportAfter(limit, afterID) 1002 if err == nil { 1003 return result, nil 1004 } 1005 if !isRepeatableError(err) { 1006 return result, err 1007 } 1008 tries++ 1009 if tries >= 3 { 1010 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1011 return result, err 1012 } 1013 } 1014 1015 } 1016 1017 func (s *RetryLayerChannelStore) GetByName(team_id string, name string, allowFromCache bool) (*model.Channel, error) { 1018 1019 tries := 0 1020 for { 1021 result, err := s.ChannelStore.GetByName(team_id, name, allowFromCache) 1022 if err == nil { 1023 return result, nil 1024 } 1025 if !isRepeatableError(err) { 1026 return result, err 1027 } 1028 tries++ 1029 if tries >= 3 { 1030 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1031 return result, err 1032 } 1033 } 1034 1035 } 1036 1037 func (s *RetryLayerChannelStore) GetByNameIncludeDeleted(team_id string, name string, allowFromCache bool) (*model.Channel, error) { 1038 1039 tries := 0 1040 for { 1041 result, err := s.ChannelStore.GetByNameIncludeDeleted(team_id, name, allowFromCache) 1042 if err == nil { 1043 return result, nil 1044 } 1045 if !isRepeatableError(err) { 1046 return result, err 1047 } 1048 tries++ 1049 if tries >= 3 { 1050 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1051 return result, err 1052 } 1053 } 1054 1055 } 1056 1057 func (s *RetryLayerChannelStore) GetByNames(team_id string, names []string, allowFromCache bool) ([]*model.Channel, error) { 1058 1059 tries := 0 1060 for { 1061 result, err := s.ChannelStore.GetByNames(team_id, names, allowFromCache) 1062 if err == nil { 1063 return result, nil 1064 } 1065 if !isRepeatableError(err) { 1066 return result, err 1067 } 1068 tries++ 1069 if tries >= 3 { 1070 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1071 return result, err 1072 } 1073 } 1074 1075 } 1076 1077 func (s *RetryLayerChannelStore) GetChannelCounts(teamID string, userID string) (*model.ChannelCounts, error) { 1078 1079 tries := 0 1080 for { 1081 result, err := s.ChannelStore.GetChannelCounts(teamID, userID) 1082 if err == nil { 1083 return result, nil 1084 } 1085 if !isRepeatableError(err) { 1086 return result, err 1087 } 1088 tries++ 1089 if tries >= 3 { 1090 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1091 return result, err 1092 } 1093 } 1094 1095 } 1096 1097 func (s *RetryLayerChannelStore) GetChannelMembersForExport(userID string, teamID string) ([]*model.ChannelMemberForExport, error) { 1098 1099 tries := 0 1100 for { 1101 result, err := s.ChannelStore.GetChannelMembersForExport(userID, teamID) 1102 if err == nil { 1103 return result, nil 1104 } 1105 if !isRepeatableError(err) { 1106 return result, err 1107 } 1108 tries++ 1109 if tries >= 3 { 1110 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1111 return result, err 1112 } 1113 } 1114 1115 } 1116 1117 func (s *RetryLayerChannelStore) GetChannelMembersTimezones(channelID string) ([]model.StringMap, error) { 1118 1119 tries := 0 1120 for { 1121 result, err := s.ChannelStore.GetChannelMembersTimezones(channelID) 1122 if err == nil { 1123 return result, nil 1124 } 1125 if !isRepeatableError(err) { 1126 return result, err 1127 } 1128 tries++ 1129 if tries >= 3 { 1130 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1131 return result, err 1132 } 1133 } 1134 1135 } 1136 1137 func (s *RetryLayerChannelStore) GetChannelUnread(channelID string, userID string) (*model.ChannelUnread, error) { 1138 1139 tries := 0 1140 for { 1141 result, err := s.ChannelStore.GetChannelUnread(channelID, userID) 1142 if err == nil { 1143 return result, nil 1144 } 1145 if !isRepeatableError(err) { 1146 return result, err 1147 } 1148 tries++ 1149 if tries >= 3 { 1150 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1151 return result, err 1152 } 1153 } 1154 1155 } 1156 1157 func (s *RetryLayerChannelStore) GetChannels(teamID string, userID string, includeDeleted bool, lastDeleteAt int) (*model.ChannelList, error) { 1158 1159 tries := 0 1160 for { 1161 result, err := s.ChannelStore.GetChannels(teamID, userID, includeDeleted, lastDeleteAt) 1162 if err == nil { 1163 return result, nil 1164 } 1165 if !isRepeatableError(err) { 1166 return result, err 1167 } 1168 tries++ 1169 if tries >= 3 { 1170 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1171 return result, err 1172 } 1173 } 1174 1175 } 1176 1177 func (s *RetryLayerChannelStore) GetChannelsBatchForIndexing(startTime int64, endTime int64, limit int) ([]*model.Channel, error) { 1178 1179 tries := 0 1180 for { 1181 result, err := s.ChannelStore.GetChannelsBatchForIndexing(startTime, endTime, limit) 1182 if err == nil { 1183 return result, nil 1184 } 1185 if !isRepeatableError(err) { 1186 return result, err 1187 } 1188 tries++ 1189 if tries >= 3 { 1190 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1191 return result, err 1192 } 1193 } 1194 1195 } 1196 1197 func (s *RetryLayerChannelStore) GetChannelsByIds(channelIds []string, includeDeleted bool) ([]*model.Channel, error) { 1198 1199 tries := 0 1200 for { 1201 result, err := s.ChannelStore.GetChannelsByIds(channelIds, includeDeleted) 1202 if err == nil { 1203 return result, nil 1204 } 1205 if !isRepeatableError(err) { 1206 return result, err 1207 } 1208 tries++ 1209 if tries >= 3 { 1210 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1211 return result, err 1212 } 1213 } 1214 1215 } 1216 1217 func (s *RetryLayerChannelStore) GetChannelsByScheme(schemeID string, offset int, limit int) (model.ChannelList, error) { 1218 1219 tries := 0 1220 for { 1221 result, err := s.ChannelStore.GetChannelsByScheme(schemeID, offset, limit) 1222 if err == nil { 1223 return result, nil 1224 } 1225 if !isRepeatableError(err) { 1226 return result, err 1227 } 1228 tries++ 1229 if tries >= 3 { 1230 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1231 return result, err 1232 } 1233 } 1234 1235 } 1236 1237 func (s *RetryLayerChannelStore) GetDeleted(team_id string, offset int, limit int, userID string) (*model.ChannelList, error) { 1238 1239 tries := 0 1240 for { 1241 result, err := s.ChannelStore.GetDeleted(team_id, offset, limit, userID) 1242 if err == nil { 1243 return result, nil 1244 } 1245 if !isRepeatableError(err) { 1246 return result, err 1247 } 1248 tries++ 1249 if tries >= 3 { 1250 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1251 return result, err 1252 } 1253 } 1254 1255 } 1256 1257 func (s *RetryLayerChannelStore) GetDeletedByName(team_id string, name string) (*model.Channel, error) { 1258 1259 tries := 0 1260 for { 1261 result, err := s.ChannelStore.GetDeletedByName(team_id, name) 1262 if err == nil { 1263 return result, nil 1264 } 1265 if !isRepeatableError(err) { 1266 return result, err 1267 } 1268 tries++ 1269 if tries >= 3 { 1270 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1271 return result, err 1272 } 1273 } 1274 1275 } 1276 1277 func (s *RetryLayerChannelStore) GetForPost(postID string) (*model.Channel, error) { 1278 1279 tries := 0 1280 for { 1281 result, err := s.ChannelStore.GetForPost(postID) 1282 if err == nil { 1283 return result, nil 1284 } 1285 if !isRepeatableError(err) { 1286 return result, err 1287 } 1288 tries++ 1289 if tries >= 3 { 1290 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1291 return result, err 1292 } 1293 } 1294 1295 } 1296 1297 func (s *RetryLayerChannelStore) GetFromMaster(id string) (*model.Channel, error) { 1298 1299 tries := 0 1300 for { 1301 result, err := s.ChannelStore.GetFromMaster(id) 1302 if err == nil { 1303 return result, nil 1304 } 1305 if !isRepeatableError(err) { 1306 return result, err 1307 } 1308 tries++ 1309 if tries >= 3 { 1310 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1311 return result, err 1312 } 1313 } 1314 1315 } 1316 1317 func (s *RetryLayerChannelStore) GetGuestCount(channelID string, allowFromCache bool) (int64, error) { 1318 1319 tries := 0 1320 for { 1321 result, err := s.ChannelStore.GetGuestCount(channelID, allowFromCache) 1322 if err == nil { 1323 return result, nil 1324 } 1325 if !isRepeatableError(err) { 1326 return result, err 1327 } 1328 tries++ 1329 if tries >= 3 { 1330 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1331 return result, err 1332 } 1333 } 1334 1335 } 1336 1337 func (s *RetryLayerChannelStore) GetMember(ctx context.Context, channelID string, userID string) (*model.ChannelMember, error) { 1338 1339 tries := 0 1340 for { 1341 result, err := s.ChannelStore.GetMember(ctx, channelID, userID) 1342 if err == nil { 1343 return result, nil 1344 } 1345 if !isRepeatableError(err) { 1346 return result, err 1347 } 1348 tries++ 1349 if tries >= 3 { 1350 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1351 return result, err 1352 } 1353 } 1354 1355 } 1356 1357 func (s *RetryLayerChannelStore) GetMemberCount(channelID string, allowFromCache bool) (int64, error) { 1358 1359 tries := 0 1360 for { 1361 result, err := s.ChannelStore.GetMemberCount(channelID, allowFromCache) 1362 if err == nil { 1363 return result, nil 1364 } 1365 if !isRepeatableError(err) { 1366 return result, err 1367 } 1368 tries++ 1369 if tries >= 3 { 1370 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1371 return result, err 1372 } 1373 } 1374 1375 } 1376 1377 func (s *RetryLayerChannelStore) GetMemberCountFromCache(channelID string) int64 { 1378 1379 return s.ChannelStore.GetMemberCountFromCache(channelID) 1380 1381 } 1382 1383 func (s *RetryLayerChannelStore) GetMemberCountsByGroup(ctx context.Context, channelID string, includeTimezones bool) ([]*model.ChannelMemberCountByGroup, error) { 1384 1385 tries := 0 1386 for { 1387 result, err := s.ChannelStore.GetMemberCountsByGroup(ctx, channelID, includeTimezones) 1388 if err == nil { 1389 return result, nil 1390 } 1391 if !isRepeatableError(err) { 1392 return result, err 1393 } 1394 tries++ 1395 if tries >= 3 { 1396 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1397 return result, err 1398 } 1399 } 1400 1401 } 1402 1403 func (s *RetryLayerChannelStore) GetMemberForPost(postID string, userID string) (*model.ChannelMember, error) { 1404 1405 tries := 0 1406 for { 1407 result, err := s.ChannelStore.GetMemberForPost(postID, userID) 1408 if err == nil { 1409 return result, nil 1410 } 1411 if !isRepeatableError(err) { 1412 return result, err 1413 } 1414 tries++ 1415 if tries >= 3 { 1416 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1417 return result, err 1418 } 1419 } 1420 1421 } 1422 1423 func (s *RetryLayerChannelStore) GetMembers(channelID string, offset int, limit int) (*model.ChannelMembers, error) { 1424 1425 tries := 0 1426 for { 1427 result, err := s.ChannelStore.GetMembers(channelID, offset, limit) 1428 if err == nil { 1429 return result, nil 1430 } 1431 if !isRepeatableError(err) { 1432 return result, err 1433 } 1434 tries++ 1435 if tries >= 3 { 1436 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1437 return result, err 1438 } 1439 } 1440 1441 } 1442 1443 func (s *RetryLayerChannelStore) GetMembersByChannelIds(channelIds []string, userID string) (*model.ChannelMembers, error) { 1444 1445 tries := 0 1446 for { 1447 result, err := s.ChannelStore.GetMembersByChannelIds(channelIds, userID) 1448 if err == nil { 1449 return result, nil 1450 } 1451 if !isRepeatableError(err) { 1452 return result, err 1453 } 1454 tries++ 1455 if tries >= 3 { 1456 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1457 return result, err 1458 } 1459 } 1460 1461 } 1462 1463 func (s *RetryLayerChannelStore) GetMembersByIds(channelID string, userIds []string) (*model.ChannelMembers, error) { 1464 1465 tries := 0 1466 for { 1467 result, err := s.ChannelStore.GetMembersByIds(channelID, userIds) 1468 if err == nil { 1469 return result, nil 1470 } 1471 if !isRepeatableError(err) { 1472 return result, err 1473 } 1474 tries++ 1475 if tries >= 3 { 1476 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1477 return result, err 1478 } 1479 } 1480 1481 } 1482 1483 func (s *RetryLayerChannelStore) GetMembersForUser(teamID string, userID string) (*model.ChannelMembers, error) { 1484 1485 tries := 0 1486 for { 1487 result, err := s.ChannelStore.GetMembersForUser(teamID, userID) 1488 if err == nil { 1489 return result, nil 1490 } 1491 if !isRepeatableError(err) { 1492 return result, err 1493 } 1494 tries++ 1495 if tries >= 3 { 1496 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1497 return result, err 1498 } 1499 } 1500 1501 } 1502 1503 func (s *RetryLayerChannelStore) GetMembersForUserWithPagination(teamID string, userID string, page int, perPage int) (*model.ChannelMembers, error) { 1504 1505 tries := 0 1506 for { 1507 result, err := s.ChannelStore.GetMembersForUserWithPagination(teamID, userID, page, perPage) 1508 if err == nil { 1509 return result, nil 1510 } 1511 if !isRepeatableError(err) { 1512 return result, err 1513 } 1514 tries++ 1515 if tries >= 3 { 1516 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1517 return result, err 1518 } 1519 } 1520 1521 } 1522 1523 func (s *RetryLayerChannelStore) GetMoreChannels(teamID string, userID string, offset int, limit int) (*model.ChannelList, error) { 1524 1525 tries := 0 1526 for { 1527 result, err := s.ChannelStore.GetMoreChannels(teamID, userID, offset, limit) 1528 if err == nil { 1529 return result, nil 1530 } 1531 if !isRepeatableError(err) { 1532 return result, err 1533 } 1534 tries++ 1535 if tries >= 3 { 1536 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1537 return result, err 1538 } 1539 } 1540 1541 } 1542 1543 func (s *RetryLayerChannelStore) GetPinnedPostCount(channelID string, allowFromCache bool) (int64, error) { 1544 1545 tries := 0 1546 for { 1547 result, err := s.ChannelStore.GetPinnedPostCount(channelID, allowFromCache) 1548 if err == nil { 1549 return result, nil 1550 } 1551 if !isRepeatableError(err) { 1552 return result, err 1553 } 1554 tries++ 1555 if tries >= 3 { 1556 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1557 return result, err 1558 } 1559 } 1560 1561 } 1562 1563 func (s *RetryLayerChannelStore) GetPinnedPosts(channelID string) (*model.PostList, error) { 1564 1565 tries := 0 1566 for { 1567 result, err := s.ChannelStore.GetPinnedPosts(channelID) 1568 if err == nil { 1569 return result, nil 1570 } 1571 if !isRepeatableError(err) { 1572 return result, err 1573 } 1574 tries++ 1575 if tries >= 3 { 1576 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1577 return result, err 1578 } 1579 } 1580 1581 } 1582 1583 func (s *RetryLayerChannelStore) GetPrivateChannelsForTeam(teamID string, offset int, limit int) (*model.ChannelList, error) { 1584 1585 tries := 0 1586 for { 1587 result, err := s.ChannelStore.GetPrivateChannelsForTeam(teamID, offset, limit) 1588 if err == nil { 1589 return result, nil 1590 } 1591 if !isRepeatableError(err) { 1592 return result, err 1593 } 1594 tries++ 1595 if tries >= 3 { 1596 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1597 return result, err 1598 } 1599 } 1600 1601 } 1602 1603 func (s *RetryLayerChannelStore) GetPublicChannelsByIdsForTeam(teamID string, channelIds []string) (*model.ChannelList, error) { 1604 1605 tries := 0 1606 for { 1607 result, err := s.ChannelStore.GetPublicChannelsByIdsForTeam(teamID, channelIds) 1608 if err == nil { 1609 return result, nil 1610 } 1611 if !isRepeatableError(err) { 1612 return result, err 1613 } 1614 tries++ 1615 if tries >= 3 { 1616 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1617 return result, err 1618 } 1619 } 1620 1621 } 1622 1623 func (s *RetryLayerChannelStore) GetPublicChannelsForTeam(teamID string, offset int, limit int) (*model.ChannelList, error) { 1624 1625 tries := 0 1626 for { 1627 result, err := s.ChannelStore.GetPublicChannelsForTeam(teamID, offset, limit) 1628 if err == nil { 1629 return result, nil 1630 } 1631 if !isRepeatableError(err) { 1632 return result, err 1633 } 1634 tries++ 1635 if tries >= 3 { 1636 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1637 return result, err 1638 } 1639 } 1640 1641 } 1642 1643 func (s *RetryLayerChannelStore) GetSidebarCategories(userID string, teamID string) (*model.OrderedSidebarCategories, error) { 1644 1645 tries := 0 1646 for { 1647 result, err := s.ChannelStore.GetSidebarCategories(userID, teamID) 1648 if err == nil { 1649 return result, nil 1650 } 1651 if !isRepeatableError(err) { 1652 return result, err 1653 } 1654 tries++ 1655 if tries >= 3 { 1656 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1657 return result, err 1658 } 1659 } 1660 1661 } 1662 1663 func (s *RetryLayerChannelStore) GetSidebarCategory(categoryID string) (*model.SidebarCategoryWithChannels, error) { 1664 1665 tries := 0 1666 for { 1667 result, err := s.ChannelStore.GetSidebarCategory(categoryID) 1668 if err == nil { 1669 return result, nil 1670 } 1671 if !isRepeatableError(err) { 1672 return result, err 1673 } 1674 tries++ 1675 if tries >= 3 { 1676 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1677 return result, err 1678 } 1679 } 1680 1681 } 1682 1683 func (s *RetryLayerChannelStore) GetSidebarCategoryOrder(userID string, teamID string) ([]string, error) { 1684 1685 tries := 0 1686 for { 1687 result, err := s.ChannelStore.GetSidebarCategoryOrder(userID, teamID) 1688 if err == nil { 1689 return result, nil 1690 } 1691 if !isRepeatableError(err) { 1692 return result, err 1693 } 1694 tries++ 1695 if tries >= 3 { 1696 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1697 return result, err 1698 } 1699 } 1700 1701 } 1702 1703 func (s *RetryLayerChannelStore) GetTeamChannels(teamID string) (*model.ChannelList, error) { 1704 1705 tries := 0 1706 for { 1707 result, err := s.ChannelStore.GetTeamChannels(teamID) 1708 if err == nil { 1709 return result, nil 1710 } 1711 if !isRepeatableError(err) { 1712 return result, err 1713 } 1714 tries++ 1715 if tries >= 3 { 1716 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1717 return result, err 1718 } 1719 } 1720 1721 } 1722 1723 func (s *RetryLayerChannelStore) GetTeamForChannel(channelID string) (*model.Team, error) { 1724 1725 tries := 0 1726 for { 1727 result, err := s.ChannelStore.GetTeamForChannel(channelID) 1728 if err == nil { 1729 return result, nil 1730 } 1731 if !isRepeatableError(err) { 1732 return result, err 1733 } 1734 tries++ 1735 if tries >= 3 { 1736 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1737 return result, err 1738 } 1739 } 1740 1741 } 1742 1743 func (s *RetryLayerChannelStore) GroupSyncedChannelCount() (int64, error) { 1744 1745 tries := 0 1746 for { 1747 result, err := s.ChannelStore.GroupSyncedChannelCount() 1748 if err == nil { 1749 return result, nil 1750 } 1751 if !isRepeatableError(err) { 1752 return result, err 1753 } 1754 tries++ 1755 if tries >= 3 { 1756 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1757 return result, err 1758 } 1759 } 1760 1761 } 1762 1763 func (s *RetryLayerChannelStore) IncrementMentionCount(channelID string, userID string, updateThreads bool, isRoot bool) error { 1764 1765 tries := 0 1766 for { 1767 err := s.ChannelStore.IncrementMentionCount(channelID, userID, updateThreads, isRoot) 1768 if err == nil { 1769 return nil 1770 } 1771 if !isRepeatableError(err) { 1772 return err 1773 } 1774 tries++ 1775 if tries >= 3 { 1776 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1777 return err 1778 } 1779 } 1780 1781 } 1782 1783 func (s *RetryLayerChannelStore) InvalidateAllChannelMembersForUser(userID string) { 1784 1785 s.ChannelStore.InvalidateAllChannelMembersForUser(userID) 1786 1787 } 1788 1789 func (s *RetryLayerChannelStore) InvalidateCacheForChannelMembersNotifyProps(channelID string) { 1790 1791 s.ChannelStore.InvalidateCacheForChannelMembersNotifyProps(channelID) 1792 1793 } 1794 1795 func (s *RetryLayerChannelStore) InvalidateChannel(id string) { 1796 1797 s.ChannelStore.InvalidateChannel(id) 1798 1799 } 1800 1801 func (s *RetryLayerChannelStore) InvalidateChannelByName(teamID string, name string) { 1802 1803 s.ChannelStore.InvalidateChannelByName(teamID, name) 1804 1805 } 1806 1807 func (s *RetryLayerChannelStore) InvalidateGuestCount(channelID string) { 1808 1809 s.ChannelStore.InvalidateGuestCount(channelID) 1810 1811 } 1812 1813 func (s *RetryLayerChannelStore) InvalidateMemberCount(channelID string) { 1814 1815 s.ChannelStore.InvalidateMemberCount(channelID) 1816 1817 } 1818 1819 func (s *RetryLayerChannelStore) InvalidatePinnedPostCount(channelID string) { 1820 1821 s.ChannelStore.InvalidatePinnedPostCount(channelID) 1822 1823 } 1824 1825 func (s *RetryLayerChannelStore) IsUserInChannelUseCache(userID string, channelID string) bool { 1826 1827 return s.ChannelStore.IsUserInChannelUseCache(userID, channelID) 1828 1829 } 1830 1831 func (s *RetryLayerChannelStore) MigrateChannelMembers(fromChannelID string, fromUserID string) (map[string]string, error) { 1832 1833 tries := 0 1834 for { 1835 result, err := s.ChannelStore.MigrateChannelMembers(fromChannelID, fromUserID) 1836 if err == nil { 1837 return result, nil 1838 } 1839 if !isRepeatableError(err) { 1840 return result, err 1841 } 1842 tries++ 1843 if tries >= 3 { 1844 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1845 return result, err 1846 } 1847 } 1848 1849 } 1850 1851 func (s *RetryLayerChannelStore) MigratePublicChannels() error { 1852 1853 tries := 0 1854 for { 1855 err := s.ChannelStore.MigratePublicChannels() 1856 if err == nil { 1857 return nil 1858 } 1859 if !isRepeatableError(err) { 1860 return err 1861 } 1862 tries++ 1863 if tries >= 3 { 1864 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1865 return err 1866 } 1867 } 1868 1869 } 1870 1871 func (s *RetryLayerChannelStore) PermanentDelete(channelID string) error { 1872 1873 tries := 0 1874 for { 1875 err := s.ChannelStore.PermanentDelete(channelID) 1876 if err == nil { 1877 return nil 1878 } 1879 if !isRepeatableError(err) { 1880 return err 1881 } 1882 tries++ 1883 if tries >= 3 { 1884 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1885 return err 1886 } 1887 } 1888 1889 } 1890 1891 func (s *RetryLayerChannelStore) PermanentDeleteByTeam(teamID string) error { 1892 1893 tries := 0 1894 for { 1895 err := s.ChannelStore.PermanentDeleteByTeam(teamID) 1896 if err == nil { 1897 return nil 1898 } 1899 if !isRepeatableError(err) { 1900 return err 1901 } 1902 tries++ 1903 if tries >= 3 { 1904 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1905 return err 1906 } 1907 } 1908 1909 } 1910 1911 func (s *RetryLayerChannelStore) PermanentDeleteMembersByChannel(channelID string) error { 1912 1913 tries := 0 1914 for { 1915 err := s.ChannelStore.PermanentDeleteMembersByChannel(channelID) 1916 if err == nil { 1917 return nil 1918 } 1919 if !isRepeatableError(err) { 1920 return err 1921 } 1922 tries++ 1923 if tries >= 3 { 1924 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1925 return err 1926 } 1927 } 1928 1929 } 1930 1931 func (s *RetryLayerChannelStore) PermanentDeleteMembersByUser(userID string) error { 1932 1933 tries := 0 1934 for { 1935 err := s.ChannelStore.PermanentDeleteMembersByUser(userID) 1936 if err == nil { 1937 return nil 1938 } 1939 if !isRepeatableError(err) { 1940 return err 1941 } 1942 tries++ 1943 if tries >= 3 { 1944 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1945 return err 1946 } 1947 } 1948 1949 } 1950 1951 func (s *RetryLayerChannelStore) RemoveAllDeactivatedMembers(channelID string) error { 1952 1953 tries := 0 1954 for { 1955 err := s.ChannelStore.RemoveAllDeactivatedMembers(channelID) 1956 if err == nil { 1957 return nil 1958 } 1959 if !isRepeatableError(err) { 1960 return err 1961 } 1962 tries++ 1963 if tries >= 3 { 1964 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1965 return err 1966 } 1967 } 1968 1969 } 1970 1971 func (s *RetryLayerChannelStore) RemoveMember(channelID string, userID string) error { 1972 1973 tries := 0 1974 for { 1975 err := s.ChannelStore.RemoveMember(channelID, userID) 1976 if err == nil { 1977 return nil 1978 } 1979 if !isRepeatableError(err) { 1980 return err 1981 } 1982 tries++ 1983 if tries >= 3 { 1984 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1985 return err 1986 } 1987 } 1988 1989 } 1990 1991 func (s *RetryLayerChannelStore) RemoveMembers(channelID string, userIds []string) error { 1992 1993 tries := 0 1994 for { 1995 err := s.ChannelStore.RemoveMembers(channelID, userIds) 1996 if err == nil { 1997 return nil 1998 } 1999 if !isRepeatableError(err) { 2000 return err 2001 } 2002 tries++ 2003 if tries >= 3 { 2004 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2005 return err 2006 } 2007 } 2008 2009 } 2010 2011 func (s *RetryLayerChannelStore) ResetAllChannelSchemes() error { 2012 2013 tries := 0 2014 for { 2015 err := s.ChannelStore.ResetAllChannelSchemes() 2016 if err == nil { 2017 return nil 2018 } 2019 if !isRepeatableError(err) { 2020 return err 2021 } 2022 tries++ 2023 if tries >= 3 { 2024 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2025 return err 2026 } 2027 } 2028 2029 } 2030 2031 func (s *RetryLayerChannelStore) Restore(channelID string, time int64) error { 2032 2033 tries := 0 2034 for { 2035 err := s.ChannelStore.Restore(channelID, time) 2036 if err == nil { 2037 return nil 2038 } 2039 if !isRepeatableError(err) { 2040 return err 2041 } 2042 tries++ 2043 if tries >= 3 { 2044 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2045 return err 2046 } 2047 } 2048 2049 } 2050 2051 func (s *RetryLayerChannelStore) Save(channel *model.Channel, maxChannelsPerTeam int64) (*model.Channel, error) { 2052 2053 tries := 0 2054 for { 2055 result, err := s.ChannelStore.Save(channel, maxChannelsPerTeam) 2056 if err == nil { 2057 return result, nil 2058 } 2059 if !isRepeatableError(err) { 2060 return result, err 2061 } 2062 tries++ 2063 if tries >= 3 { 2064 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2065 return result, err 2066 } 2067 } 2068 2069 } 2070 2071 func (s *RetryLayerChannelStore) SaveDirectChannel(channel *model.Channel, member1 *model.ChannelMember, member2 *model.ChannelMember) (*model.Channel, error) { 2072 2073 tries := 0 2074 for { 2075 result, err := s.ChannelStore.SaveDirectChannel(channel, member1, member2) 2076 if err == nil { 2077 return result, nil 2078 } 2079 if !isRepeatableError(err) { 2080 return result, err 2081 } 2082 tries++ 2083 if tries >= 3 { 2084 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2085 return result, err 2086 } 2087 } 2088 2089 } 2090 2091 func (s *RetryLayerChannelStore) SaveMember(member *model.ChannelMember) (*model.ChannelMember, error) { 2092 2093 tries := 0 2094 for { 2095 result, err := s.ChannelStore.SaveMember(member) 2096 if err == nil { 2097 return result, nil 2098 } 2099 if !isRepeatableError(err) { 2100 return result, err 2101 } 2102 tries++ 2103 if tries >= 3 { 2104 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2105 return result, err 2106 } 2107 } 2108 2109 } 2110 2111 func (s *RetryLayerChannelStore) SaveMultipleMembers(members []*model.ChannelMember) ([]*model.ChannelMember, error) { 2112 2113 tries := 0 2114 for { 2115 result, err := s.ChannelStore.SaveMultipleMembers(members) 2116 if err == nil { 2117 return result, nil 2118 } 2119 if !isRepeatableError(err) { 2120 return result, err 2121 } 2122 tries++ 2123 if tries >= 3 { 2124 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2125 return result, err 2126 } 2127 } 2128 2129 } 2130 2131 func (s *RetryLayerChannelStore) SearchAllChannels(term string, opts store.ChannelSearchOpts) (*model.ChannelListWithTeamData, int64, error) { 2132 2133 tries := 0 2134 for { 2135 result, resultVar1, err := s.ChannelStore.SearchAllChannels(term, opts) 2136 if err == nil { 2137 return result, resultVar1, nil 2138 } 2139 if !isRepeatableError(err) { 2140 return result, resultVar1, err 2141 } 2142 tries++ 2143 if tries >= 3 { 2144 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2145 return result, resultVar1, err 2146 } 2147 } 2148 2149 } 2150 2151 func (s *RetryLayerChannelStore) SearchArchivedInTeam(teamID string, term string, userID string) (*model.ChannelList, error) { 2152 2153 tries := 0 2154 for { 2155 result, err := s.ChannelStore.SearchArchivedInTeam(teamID, term, userID) 2156 if err == nil { 2157 return result, nil 2158 } 2159 if !isRepeatableError(err) { 2160 return result, err 2161 } 2162 tries++ 2163 if tries >= 3 { 2164 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2165 return result, err 2166 } 2167 } 2168 2169 } 2170 2171 func (s *RetryLayerChannelStore) SearchForUserInTeam(userID string, teamID string, term string, includeDeleted bool) (*model.ChannelList, error) { 2172 2173 tries := 0 2174 for { 2175 result, err := s.ChannelStore.SearchForUserInTeam(userID, teamID, term, includeDeleted) 2176 if err == nil { 2177 return result, nil 2178 } 2179 if !isRepeatableError(err) { 2180 return result, err 2181 } 2182 tries++ 2183 if tries >= 3 { 2184 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2185 return result, err 2186 } 2187 } 2188 2189 } 2190 2191 func (s *RetryLayerChannelStore) SearchGroupChannels(userID string, term string) (*model.ChannelList, error) { 2192 2193 tries := 0 2194 for { 2195 result, err := s.ChannelStore.SearchGroupChannels(userID, term) 2196 if err == nil { 2197 return result, nil 2198 } 2199 if !isRepeatableError(err) { 2200 return result, err 2201 } 2202 tries++ 2203 if tries >= 3 { 2204 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2205 return result, err 2206 } 2207 } 2208 2209 } 2210 2211 func (s *RetryLayerChannelStore) SearchInTeam(teamID string, term string, includeDeleted bool) (*model.ChannelList, error) { 2212 2213 tries := 0 2214 for { 2215 result, err := s.ChannelStore.SearchInTeam(teamID, term, includeDeleted) 2216 if err == nil { 2217 return result, nil 2218 } 2219 if !isRepeatableError(err) { 2220 return result, err 2221 } 2222 tries++ 2223 if tries >= 3 { 2224 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2225 return result, err 2226 } 2227 } 2228 2229 } 2230 2231 func (s *RetryLayerChannelStore) SearchMore(userID string, teamID string, term string) (*model.ChannelList, error) { 2232 2233 tries := 0 2234 for { 2235 result, err := s.ChannelStore.SearchMore(userID, teamID, term) 2236 if err == nil { 2237 return result, nil 2238 } 2239 if !isRepeatableError(err) { 2240 return result, err 2241 } 2242 tries++ 2243 if tries >= 3 { 2244 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2245 return result, err 2246 } 2247 } 2248 2249 } 2250 2251 func (s *RetryLayerChannelStore) SetDeleteAt(channelID string, deleteAt int64, updateAt int64) error { 2252 2253 tries := 0 2254 for { 2255 err := s.ChannelStore.SetDeleteAt(channelID, deleteAt, updateAt) 2256 if err == nil { 2257 return nil 2258 } 2259 if !isRepeatableError(err) { 2260 return err 2261 } 2262 tries++ 2263 if tries >= 3 { 2264 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2265 return err 2266 } 2267 } 2268 2269 } 2270 2271 func (s *RetryLayerChannelStore) SetShared(channelId string, shared bool) error { 2272 2273 tries := 0 2274 for { 2275 err := s.ChannelStore.SetShared(channelId, shared) 2276 if err == nil { 2277 return nil 2278 } 2279 if !isRepeatableError(err) { 2280 return err 2281 } 2282 tries++ 2283 if tries >= 3 { 2284 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2285 return err 2286 } 2287 } 2288 2289 } 2290 2291 func (s *RetryLayerChannelStore) Update(channel *model.Channel) (*model.Channel, error) { 2292 2293 tries := 0 2294 for { 2295 result, err := s.ChannelStore.Update(channel) 2296 if err == nil { 2297 return result, nil 2298 } 2299 if !isRepeatableError(err) { 2300 return result, err 2301 } 2302 tries++ 2303 if tries >= 3 { 2304 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2305 return result, err 2306 } 2307 } 2308 2309 } 2310 2311 func (s *RetryLayerChannelStore) UpdateLastViewedAt(channelIds []string, userID string, updateThreads bool) (map[string]int64, error) { 2312 2313 tries := 0 2314 for { 2315 result, err := s.ChannelStore.UpdateLastViewedAt(channelIds, userID, updateThreads) 2316 if err == nil { 2317 return result, nil 2318 } 2319 if !isRepeatableError(err) { 2320 return result, err 2321 } 2322 tries++ 2323 if tries >= 3 { 2324 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2325 return result, err 2326 } 2327 } 2328 2329 } 2330 2331 func (s *RetryLayerChannelStore) UpdateLastViewedAtPost(unreadPost *model.Post, userID string, mentionCount int, mentionCountRoot int, updateThreads bool, setUnreadCountRoot bool) (*model.ChannelUnreadAt, error) { 2332 2333 tries := 0 2334 for { 2335 result, err := s.ChannelStore.UpdateLastViewedAtPost(unreadPost, userID, mentionCount, mentionCountRoot, updateThreads, setUnreadCountRoot) 2336 if err == nil { 2337 return result, nil 2338 } 2339 if !isRepeatableError(err) { 2340 return result, err 2341 } 2342 tries++ 2343 if tries >= 3 { 2344 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2345 return result, err 2346 } 2347 } 2348 2349 } 2350 2351 func (s *RetryLayerChannelStore) UpdateMember(member *model.ChannelMember) (*model.ChannelMember, error) { 2352 2353 tries := 0 2354 for { 2355 result, err := s.ChannelStore.UpdateMember(member) 2356 if err == nil { 2357 return result, nil 2358 } 2359 if !isRepeatableError(err) { 2360 return result, err 2361 } 2362 tries++ 2363 if tries >= 3 { 2364 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2365 return result, err 2366 } 2367 } 2368 2369 } 2370 2371 func (s *RetryLayerChannelStore) UpdateMembersRole(channelID string, userIDs []string) error { 2372 2373 tries := 0 2374 for { 2375 err := s.ChannelStore.UpdateMembersRole(channelID, userIDs) 2376 if err == nil { 2377 return nil 2378 } 2379 if !isRepeatableError(err) { 2380 return err 2381 } 2382 tries++ 2383 if tries >= 3 { 2384 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2385 return err 2386 } 2387 } 2388 2389 } 2390 2391 func (s *RetryLayerChannelStore) UpdateMultipleMembers(members []*model.ChannelMember) ([]*model.ChannelMember, error) { 2392 2393 tries := 0 2394 for { 2395 result, err := s.ChannelStore.UpdateMultipleMembers(members) 2396 if err == nil { 2397 return result, nil 2398 } 2399 if !isRepeatableError(err) { 2400 return result, err 2401 } 2402 tries++ 2403 if tries >= 3 { 2404 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2405 return result, err 2406 } 2407 } 2408 2409 } 2410 2411 func (s *RetryLayerChannelStore) UpdateSidebarCategories(userID string, teamID string, categories []*model.SidebarCategoryWithChannels) ([]*model.SidebarCategoryWithChannels, []*model.SidebarCategoryWithChannels, error) { 2412 2413 tries := 0 2414 for { 2415 result, resultVar1, err := s.ChannelStore.UpdateSidebarCategories(userID, teamID, categories) 2416 if err == nil { 2417 return result, resultVar1, nil 2418 } 2419 if !isRepeatableError(err) { 2420 return result, resultVar1, err 2421 } 2422 tries++ 2423 if tries >= 3 { 2424 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2425 return result, resultVar1, err 2426 } 2427 } 2428 2429 } 2430 2431 func (s *RetryLayerChannelStore) UpdateSidebarCategoryOrder(userID string, teamID string, categoryOrder []string) error { 2432 2433 tries := 0 2434 for { 2435 err := s.ChannelStore.UpdateSidebarCategoryOrder(userID, teamID, categoryOrder) 2436 if err == nil { 2437 return nil 2438 } 2439 if !isRepeatableError(err) { 2440 return err 2441 } 2442 tries++ 2443 if tries >= 3 { 2444 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2445 return err 2446 } 2447 } 2448 2449 } 2450 2451 func (s *RetryLayerChannelStore) UpdateSidebarChannelCategoryOnMove(channel *model.Channel, newTeamID string) error { 2452 2453 tries := 0 2454 for { 2455 err := s.ChannelStore.UpdateSidebarChannelCategoryOnMove(channel, newTeamID) 2456 if err == nil { 2457 return nil 2458 } 2459 if !isRepeatableError(err) { 2460 return err 2461 } 2462 tries++ 2463 if tries >= 3 { 2464 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2465 return err 2466 } 2467 } 2468 2469 } 2470 2471 func (s *RetryLayerChannelStore) UpdateSidebarChannelsByPreferences(preferences *model.Preferences) error { 2472 2473 tries := 0 2474 for { 2475 err := s.ChannelStore.UpdateSidebarChannelsByPreferences(preferences) 2476 if err == nil { 2477 return nil 2478 } 2479 if !isRepeatableError(err) { 2480 return err 2481 } 2482 tries++ 2483 if tries >= 3 { 2484 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2485 return err 2486 } 2487 } 2488 2489 } 2490 2491 func (s *RetryLayerChannelStore) UserBelongsToChannels(userID string, channelIds []string) (bool, error) { 2492 2493 tries := 0 2494 for { 2495 result, err := s.ChannelStore.UserBelongsToChannels(userID, channelIds) 2496 if err == nil { 2497 return result, nil 2498 } 2499 if !isRepeatableError(err) { 2500 return result, err 2501 } 2502 tries++ 2503 if tries >= 3 { 2504 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2505 return result, err 2506 } 2507 } 2508 2509 } 2510 2511 func (s *RetryLayerChannelMemberHistoryStore) DeleteOrphanedRows(limit int) (int64, error) { 2512 2513 tries := 0 2514 for { 2515 result, err := s.ChannelMemberHistoryStore.DeleteOrphanedRows(limit) 2516 if err == nil { 2517 return result, nil 2518 } 2519 if !isRepeatableError(err) { 2520 return result, err 2521 } 2522 tries++ 2523 if tries >= 3 { 2524 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2525 return result, err 2526 } 2527 } 2528 2529 } 2530 2531 func (s *RetryLayerChannelMemberHistoryStore) GetUsersInChannelDuring(startTime int64, endTime int64, channelID string) ([]*model.ChannelMemberHistoryResult, error) { 2532 2533 tries := 0 2534 for { 2535 result, err := s.ChannelMemberHistoryStore.GetUsersInChannelDuring(startTime, endTime, channelID) 2536 if err == nil { 2537 return result, nil 2538 } 2539 if !isRepeatableError(err) { 2540 return result, err 2541 } 2542 tries++ 2543 if tries >= 3 { 2544 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2545 return result, err 2546 } 2547 } 2548 2549 } 2550 2551 func (s *RetryLayerChannelMemberHistoryStore) LogJoinEvent(userID string, channelID string, joinTime int64) error { 2552 2553 tries := 0 2554 for { 2555 err := s.ChannelMemberHistoryStore.LogJoinEvent(userID, channelID, joinTime) 2556 if err == nil { 2557 return nil 2558 } 2559 if !isRepeatableError(err) { 2560 return err 2561 } 2562 tries++ 2563 if tries >= 3 { 2564 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2565 return err 2566 } 2567 } 2568 2569 } 2570 2571 func (s *RetryLayerChannelMemberHistoryStore) LogLeaveEvent(userID string, channelID string, leaveTime int64) error { 2572 2573 tries := 0 2574 for { 2575 err := s.ChannelMemberHistoryStore.LogLeaveEvent(userID, channelID, leaveTime) 2576 if err == nil { 2577 return nil 2578 } 2579 if !isRepeatableError(err) { 2580 return err 2581 } 2582 tries++ 2583 if tries >= 3 { 2584 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2585 return err 2586 } 2587 } 2588 2589 } 2590 2591 func (s *RetryLayerChannelMemberHistoryStore) PermanentDeleteBatch(endTime int64, limit int64) (int64, error) { 2592 2593 tries := 0 2594 for { 2595 result, err := s.ChannelMemberHistoryStore.PermanentDeleteBatch(endTime, limit) 2596 if err == nil { 2597 return result, nil 2598 } 2599 if !isRepeatableError(err) { 2600 return result, err 2601 } 2602 tries++ 2603 if tries >= 3 { 2604 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2605 return result, err 2606 } 2607 } 2608 2609 } 2610 2611 func (s *RetryLayerChannelMemberHistoryStore) PermanentDeleteBatchForRetentionPolicies(now int64, globalPolicyEndTime int64, limit int64, cursor model.RetentionPolicyCursor) (int64, model.RetentionPolicyCursor, error) { 2612 2613 tries := 0 2614 for { 2615 result, resultVar1, err := s.ChannelMemberHistoryStore.PermanentDeleteBatchForRetentionPolicies(now, globalPolicyEndTime, limit, cursor) 2616 if err == nil { 2617 return result, resultVar1, nil 2618 } 2619 if !isRepeatableError(err) { 2620 return result, resultVar1, err 2621 } 2622 tries++ 2623 if tries >= 3 { 2624 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2625 return result, resultVar1, err 2626 } 2627 } 2628 2629 } 2630 2631 func (s *RetryLayerClusterDiscoveryStore) Cleanup() error { 2632 2633 tries := 0 2634 for { 2635 err := s.ClusterDiscoveryStore.Cleanup() 2636 if err == nil { 2637 return nil 2638 } 2639 if !isRepeatableError(err) { 2640 return err 2641 } 2642 tries++ 2643 if tries >= 3 { 2644 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2645 return err 2646 } 2647 } 2648 2649 } 2650 2651 func (s *RetryLayerClusterDiscoveryStore) Delete(discovery *model.ClusterDiscovery) (bool, error) { 2652 2653 tries := 0 2654 for { 2655 result, err := s.ClusterDiscoveryStore.Delete(discovery) 2656 if err == nil { 2657 return result, nil 2658 } 2659 if !isRepeatableError(err) { 2660 return result, err 2661 } 2662 tries++ 2663 if tries >= 3 { 2664 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2665 return result, err 2666 } 2667 } 2668 2669 } 2670 2671 func (s *RetryLayerClusterDiscoveryStore) Exists(discovery *model.ClusterDiscovery) (bool, error) { 2672 2673 tries := 0 2674 for { 2675 result, err := s.ClusterDiscoveryStore.Exists(discovery) 2676 if err == nil { 2677 return result, nil 2678 } 2679 if !isRepeatableError(err) { 2680 return result, err 2681 } 2682 tries++ 2683 if tries >= 3 { 2684 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2685 return result, err 2686 } 2687 } 2688 2689 } 2690 2691 func (s *RetryLayerClusterDiscoveryStore) GetAll(discoveryType string, clusterName string) ([]*model.ClusterDiscovery, error) { 2692 2693 tries := 0 2694 for { 2695 result, err := s.ClusterDiscoveryStore.GetAll(discoveryType, clusterName) 2696 if err == nil { 2697 return result, nil 2698 } 2699 if !isRepeatableError(err) { 2700 return result, err 2701 } 2702 tries++ 2703 if tries >= 3 { 2704 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2705 return result, err 2706 } 2707 } 2708 2709 } 2710 2711 func (s *RetryLayerClusterDiscoveryStore) Save(discovery *model.ClusterDiscovery) error { 2712 2713 tries := 0 2714 for { 2715 err := s.ClusterDiscoveryStore.Save(discovery) 2716 if err == nil { 2717 return nil 2718 } 2719 if !isRepeatableError(err) { 2720 return err 2721 } 2722 tries++ 2723 if tries >= 3 { 2724 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2725 return err 2726 } 2727 } 2728 2729 } 2730 2731 func (s *RetryLayerClusterDiscoveryStore) SetLastPingAt(discovery *model.ClusterDiscovery) error { 2732 2733 tries := 0 2734 for { 2735 err := s.ClusterDiscoveryStore.SetLastPingAt(discovery) 2736 if err == nil { 2737 return nil 2738 } 2739 if !isRepeatableError(err) { 2740 return err 2741 } 2742 tries++ 2743 if tries >= 3 { 2744 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2745 return err 2746 } 2747 } 2748 2749 } 2750 2751 func (s *RetryLayerCommandStore) AnalyticsCommandCount(teamID string) (int64, error) { 2752 2753 tries := 0 2754 for { 2755 result, err := s.CommandStore.AnalyticsCommandCount(teamID) 2756 if err == nil { 2757 return result, nil 2758 } 2759 if !isRepeatableError(err) { 2760 return result, err 2761 } 2762 tries++ 2763 if tries >= 3 { 2764 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2765 return result, err 2766 } 2767 } 2768 2769 } 2770 2771 func (s *RetryLayerCommandStore) Delete(commandID string, time int64) error { 2772 2773 tries := 0 2774 for { 2775 err := s.CommandStore.Delete(commandID, time) 2776 if err == nil { 2777 return nil 2778 } 2779 if !isRepeatableError(err) { 2780 return err 2781 } 2782 tries++ 2783 if tries >= 3 { 2784 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2785 return err 2786 } 2787 } 2788 2789 } 2790 2791 func (s *RetryLayerCommandStore) Get(id string) (*model.Command, error) { 2792 2793 tries := 0 2794 for { 2795 result, err := s.CommandStore.Get(id) 2796 if err == nil { 2797 return result, nil 2798 } 2799 if !isRepeatableError(err) { 2800 return result, err 2801 } 2802 tries++ 2803 if tries >= 3 { 2804 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2805 return result, err 2806 } 2807 } 2808 2809 } 2810 2811 func (s *RetryLayerCommandStore) GetByTeam(teamID string) ([]*model.Command, error) { 2812 2813 tries := 0 2814 for { 2815 result, err := s.CommandStore.GetByTeam(teamID) 2816 if err == nil { 2817 return result, nil 2818 } 2819 if !isRepeatableError(err) { 2820 return result, err 2821 } 2822 tries++ 2823 if tries >= 3 { 2824 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2825 return result, err 2826 } 2827 } 2828 2829 } 2830 2831 func (s *RetryLayerCommandStore) GetByTrigger(teamID string, trigger string) (*model.Command, error) { 2832 2833 tries := 0 2834 for { 2835 result, err := s.CommandStore.GetByTrigger(teamID, trigger) 2836 if err == nil { 2837 return result, nil 2838 } 2839 if !isRepeatableError(err) { 2840 return result, err 2841 } 2842 tries++ 2843 if tries >= 3 { 2844 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2845 return result, err 2846 } 2847 } 2848 2849 } 2850 2851 func (s *RetryLayerCommandStore) PermanentDeleteByTeam(teamID string) error { 2852 2853 tries := 0 2854 for { 2855 err := s.CommandStore.PermanentDeleteByTeam(teamID) 2856 if err == nil { 2857 return nil 2858 } 2859 if !isRepeatableError(err) { 2860 return err 2861 } 2862 tries++ 2863 if tries >= 3 { 2864 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2865 return err 2866 } 2867 } 2868 2869 } 2870 2871 func (s *RetryLayerCommandStore) PermanentDeleteByUser(userID string) error { 2872 2873 tries := 0 2874 for { 2875 err := s.CommandStore.PermanentDeleteByUser(userID) 2876 if err == nil { 2877 return nil 2878 } 2879 if !isRepeatableError(err) { 2880 return err 2881 } 2882 tries++ 2883 if tries >= 3 { 2884 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2885 return err 2886 } 2887 } 2888 2889 } 2890 2891 func (s *RetryLayerCommandStore) Save(webhook *model.Command) (*model.Command, error) { 2892 2893 tries := 0 2894 for { 2895 result, err := s.CommandStore.Save(webhook) 2896 if err == nil { 2897 return result, nil 2898 } 2899 if !isRepeatableError(err) { 2900 return result, err 2901 } 2902 tries++ 2903 if tries >= 3 { 2904 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2905 return result, err 2906 } 2907 } 2908 2909 } 2910 2911 func (s *RetryLayerCommandStore) Update(hook *model.Command) (*model.Command, error) { 2912 2913 tries := 0 2914 for { 2915 result, err := s.CommandStore.Update(hook) 2916 if err == nil { 2917 return result, nil 2918 } 2919 if !isRepeatableError(err) { 2920 return result, err 2921 } 2922 tries++ 2923 if tries >= 3 { 2924 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2925 return result, err 2926 } 2927 } 2928 2929 } 2930 2931 func (s *RetryLayerCommandWebhookStore) Cleanup() { 2932 2933 s.CommandWebhookStore.Cleanup() 2934 2935 } 2936 2937 func (s *RetryLayerCommandWebhookStore) Get(id string) (*model.CommandWebhook, error) { 2938 2939 tries := 0 2940 for { 2941 result, err := s.CommandWebhookStore.Get(id) 2942 if err == nil { 2943 return result, nil 2944 } 2945 if !isRepeatableError(err) { 2946 return result, err 2947 } 2948 tries++ 2949 if tries >= 3 { 2950 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2951 return result, err 2952 } 2953 } 2954 2955 } 2956 2957 func (s *RetryLayerCommandWebhookStore) Save(webhook *model.CommandWebhook) (*model.CommandWebhook, error) { 2958 2959 tries := 0 2960 for { 2961 result, err := s.CommandWebhookStore.Save(webhook) 2962 if err == nil { 2963 return result, nil 2964 } 2965 if !isRepeatableError(err) { 2966 return result, err 2967 } 2968 tries++ 2969 if tries >= 3 { 2970 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2971 return result, err 2972 } 2973 } 2974 2975 } 2976 2977 func (s *RetryLayerCommandWebhookStore) TryUse(id string, limit int) error { 2978 2979 tries := 0 2980 for { 2981 err := s.CommandWebhookStore.TryUse(id, limit) 2982 if err == nil { 2983 return nil 2984 } 2985 if !isRepeatableError(err) { 2986 return err 2987 } 2988 tries++ 2989 if tries >= 3 { 2990 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2991 return err 2992 } 2993 } 2994 2995 } 2996 2997 func (s *RetryLayerComplianceStore) ComplianceExport(compliance *model.Compliance, cursor model.ComplianceExportCursor, limit int) ([]*model.CompliancePost, model.ComplianceExportCursor, error) { 2998 2999 tries := 0 3000 for { 3001 result, resultVar1, err := s.ComplianceStore.ComplianceExport(compliance, cursor, limit) 3002 if err == nil { 3003 return result, resultVar1, nil 3004 } 3005 if !isRepeatableError(err) { 3006 return result, resultVar1, err 3007 } 3008 tries++ 3009 if tries >= 3 { 3010 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3011 return result, resultVar1, err 3012 } 3013 } 3014 3015 } 3016 3017 func (s *RetryLayerComplianceStore) Get(id string) (*model.Compliance, error) { 3018 3019 tries := 0 3020 for { 3021 result, err := s.ComplianceStore.Get(id) 3022 if err == nil { 3023 return result, nil 3024 } 3025 if !isRepeatableError(err) { 3026 return result, err 3027 } 3028 tries++ 3029 if tries >= 3 { 3030 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3031 return result, err 3032 } 3033 } 3034 3035 } 3036 3037 func (s *RetryLayerComplianceStore) GetAll(offset int, limit int) (model.Compliances, error) { 3038 3039 tries := 0 3040 for { 3041 result, err := s.ComplianceStore.GetAll(offset, limit) 3042 if err == nil { 3043 return result, nil 3044 } 3045 if !isRepeatableError(err) { 3046 return result, err 3047 } 3048 tries++ 3049 if tries >= 3 { 3050 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3051 return result, err 3052 } 3053 } 3054 3055 } 3056 3057 func (s *RetryLayerComplianceStore) MessageExport(cursor model.MessageExportCursor, limit int) ([]*model.MessageExport, model.MessageExportCursor, error) { 3058 3059 tries := 0 3060 for { 3061 result, resultVar1, err := s.ComplianceStore.MessageExport(cursor, limit) 3062 if err == nil { 3063 return result, resultVar1, nil 3064 } 3065 if !isRepeatableError(err) { 3066 return result, resultVar1, err 3067 } 3068 tries++ 3069 if tries >= 3 { 3070 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3071 return result, resultVar1, err 3072 } 3073 } 3074 3075 } 3076 3077 func (s *RetryLayerComplianceStore) Save(compliance *model.Compliance) (*model.Compliance, error) { 3078 3079 tries := 0 3080 for { 3081 result, err := s.ComplianceStore.Save(compliance) 3082 if err == nil { 3083 return result, nil 3084 } 3085 if !isRepeatableError(err) { 3086 return result, err 3087 } 3088 tries++ 3089 if tries >= 3 { 3090 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3091 return result, err 3092 } 3093 } 3094 3095 } 3096 3097 func (s *RetryLayerComplianceStore) Update(compliance *model.Compliance) (*model.Compliance, error) { 3098 3099 tries := 0 3100 for { 3101 result, err := s.ComplianceStore.Update(compliance) 3102 if err == nil { 3103 return result, nil 3104 } 3105 if !isRepeatableError(err) { 3106 return result, err 3107 } 3108 tries++ 3109 if tries >= 3 { 3110 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3111 return result, err 3112 } 3113 } 3114 3115 } 3116 3117 func (s *RetryLayerEmojiStore) Delete(emoji *model.Emoji, time int64) error { 3118 3119 tries := 0 3120 for { 3121 err := s.EmojiStore.Delete(emoji, time) 3122 if err == nil { 3123 return nil 3124 } 3125 if !isRepeatableError(err) { 3126 return err 3127 } 3128 tries++ 3129 if tries >= 3 { 3130 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3131 return err 3132 } 3133 } 3134 3135 } 3136 3137 func (s *RetryLayerEmojiStore) Get(ctx context.Context, id string, allowFromCache bool) (*model.Emoji, error) { 3138 3139 tries := 0 3140 for { 3141 result, err := s.EmojiStore.Get(ctx, id, allowFromCache) 3142 if err == nil { 3143 return result, nil 3144 } 3145 if !isRepeatableError(err) { 3146 return result, err 3147 } 3148 tries++ 3149 if tries >= 3 { 3150 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3151 return result, err 3152 } 3153 } 3154 3155 } 3156 3157 func (s *RetryLayerEmojiStore) GetByName(ctx context.Context, name string, allowFromCache bool) (*model.Emoji, error) { 3158 3159 tries := 0 3160 for { 3161 result, err := s.EmojiStore.GetByName(ctx, name, allowFromCache) 3162 if err == nil { 3163 return result, nil 3164 } 3165 if !isRepeatableError(err) { 3166 return result, err 3167 } 3168 tries++ 3169 if tries >= 3 { 3170 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3171 return result, err 3172 } 3173 } 3174 3175 } 3176 3177 func (s *RetryLayerEmojiStore) GetList(offset int, limit int, sort string) ([]*model.Emoji, error) { 3178 3179 tries := 0 3180 for { 3181 result, err := s.EmojiStore.GetList(offset, limit, sort) 3182 if err == nil { 3183 return result, nil 3184 } 3185 if !isRepeatableError(err) { 3186 return result, err 3187 } 3188 tries++ 3189 if tries >= 3 { 3190 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3191 return result, err 3192 } 3193 } 3194 3195 } 3196 3197 func (s *RetryLayerEmojiStore) GetMultipleByName(names []string) ([]*model.Emoji, error) { 3198 3199 tries := 0 3200 for { 3201 result, err := s.EmojiStore.GetMultipleByName(names) 3202 if err == nil { 3203 return result, nil 3204 } 3205 if !isRepeatableError(err) { 3206 return result, err 3207 } 3208 tries++ 3209 if tries >= 3 { 3210 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3211 return result, err 3212 } 3213 } 3214 3215 } 3216 3217 func (s *RetryLayerEmojiStore) Save(emoji *model.Emoji) (*model.Emoji, error) { 3218 3219 tries := 0 3220 for { 3221 result, err := s.EmojiStore.Save(emoji) 3222 if err == nil { 3223 return result, nil 3224 } 3225 if !isRepeatableError(err) { 3226 return result, err 3227 } 3228 tries++ 3229 if tries >= 3 { 3230 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3231 return result, err 3232 } 3233 } 3234 3235 } 3236 3237 func (s *RetryLayerEmojiStore) Search(name string, prefixOnly bool, limit int) ([]*model.Emoji, error) { 3238 3239 tries := 0 3240 for { 3241 result, err := s.EmojiStore.Search(name, prefixOnly, limit) 3242 if err == nil { 3243 return result, nil 3244 } 3245 if !isRepeatableError(err) { 3246 return result, err 3247 } 3248 tries++ 3249 if tries >= 3 { 3250 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3251 return result, err 3252 } 3253 } 3254 3255 } 3256 3257 func (s *RetryLayerFileInfoStore) AttachToPost(fileID string, postID string, creatorID string) error { 3258 3259 tries := 0 3260 for { 3261 err := s.FileInfoStore.AttachToPost(fileID, postID, creatorID) 3262 if err == nil { 3263 return nil 3264 } 3265 if !isRepeatableError(err) { 3266 return err 3267 } 3268 tries++ 3269 if tries >= 3 { 3270 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3271 return err 3272 } 3273 } 3274 3275 } 3276 3277 func (s *RetryLayerFileInfoStore) ClearCaches() { 3278 3279 s.FileInfoStore.ClearCaches() 3280 3281 } 3282 3283 func (s *RetryLayerFileInfoStore) CountAll() (int64, error) { 3284 3285 tries := 0 3286 for { 3287 result, err := s.FileInfoStore.CountAll() 3288 if err == nil { 3289 return result, nil 3290 } 3291 if !isRepeatableError(err) { 3292 return result, err 3293 } 3294 tries++ 3295 if tries >= 3 { 3296 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3297 return result, err 3298 } 3299 } 3300 3301 } 3302 3303 func (s *RetryLayerFileInfoStore) DeleteForPost(postID string) (string, error) { 3304 3305 tries := 0 3306 for { 3307 result, err := s.FileInfoStore.DeleteForPost(postID) 3308 if err == nil { 3309 return result, nil 3310 } 3311 if !isRepeatableError(err) { 3312 return result, err 3313 } 3314 tries++ 3315 if tries >= 3 { 3316 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3317 return result, err 3318 } 3319 } 3320 3321 } 3322 3323 func (s *RetryLayerFileInfoStore) Get(id string) (*model.FileInfo, error) { 3324 3325 tries := 0 3326 for { 3327 result, err := s.FileInfoStore.Get(id) 3328 if err == nil { 3329 return result, nil 3330 } 3331 if !isRepeatableError(err) { 3332 return result, err 3333 } 3334 tries++ 3335 if tries >= 3 { 3336 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3337 return result, err 3338 } 3339 } 3340 3341 } 3342 3343 func (s *RetryLayerFileInfoStore) GetByIds(ids []string) ([]*model.FileInfo, error) { 3344 3345 tries := 0 3346 for { 3347 result, err := s.FileInfoStore.GetByIds(ids) 3348 if err == nil { 3349 return result, nil 3350 } 3351 if !isRepeatableError(err) { 3352 return result, err 3353 } 3354 tries++ 3355 if tries >= 3 { 3356 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3357 return result, err 3358 } 3359 } 3360 3361 } 3362 3363 func (s *RetryLayerFileInfoStore) GetByPath(path string) (*model.FileInfo, error) { 3364 3365 tries := 0 3366 for { 3367 result, err := s.FileInfoStore.GetByPath(path) 3368 if err == nil { 3369 return result, nil 3370 } 3371 if !isRepeatableError(err) { 3372 return result, err 3373 } 3374 tries++ 3375 if tries >= 3 { 3376 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3377 return result, err 3378 } 3379 } 3380 3381 } 3382 3383 func (s *RetryLayerFileInfoStore) GetFilesBatchForIndexing(startTime int64, endTime int64, limit int) ([]*model.FileForIndexing, error) { 3384 3385 tries := 0 3386 for { 3387 result, err := s.FileInfoStore.GetFilesBatchForIndexing(startTime, endTime, limit) 3388 if err == nil { 3389 return result, nil 3390 } 3391 if !isRepeatableError(err) { 3392 return result, err 3393 } 3394 tries++ 3395 if tries >= 3 { 3396 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3397 return result, err 3398 } 3399 } 3400 3401 } 3402 3403 func (s *RetryLayerFileInfoStore) GetForPost(postID string, readFromMaster bool, includeDeleted bool, allowFromCache bool) ([]*model.FileInfo, error) { 3404 3405 tries := 0 3406 for { 3407 result, err := s.FileInfoStore.GetForPost(postID, readFromMaster, includeDeleted, allowFromCache) 3408 if err == nil { 3409 return result, nil 3410 } 3411 if !isRepeatableError(err) { 3412 return result, err 3413 } 3414 tries++ 3415 if tries >= 3 { 3416 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3417 return result, err 3418 } 3419 } 3420 3421 } 3422 3423 func (s *RetryLayerFileInfoStore) GetForUser(userID string) ([]*model.FileInfo, error) { 3424 3425 tries := 0 3426 for { 3427 result, err := s.FileInfoStore.GetForUser(userID) 3428 if err == nil { 3429 return result, nil 3430 } 3431 if !isRepeatableError(err) { 3432 return result, err 3433 } 3434 tries++ 3435 if tries >= 3 { 3436 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3437 return result, err 3438 } 3439 } 3440 3441 } 3442 3443 func (s *RetryLayerFileInfoStore) GetFromMaster(id string) (*model.FileInfo, error) { 3444 3445 tries := 0 3446 for { 3447 result, err := s.FileInfoStore.GetFromMaster(id) 3448 if err == nil { 3449 return result, nil 3450 } 3451 if !isRepeatableError(err) { 3452 return result, err 3453 } 3454 tries++ 3455 if tries >= 3 { 3456 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3457 return result, err 3458 } 3459 } 3460 3461 } 3462 3463 func (s *RetryLayerFileInfoStore) GetWithOptions(page int, perPage int, opt *model.GetFileInfosOptions) ([]*model.FileInfo, error) { 3464 3465 tries := 0 3466 for { 3467 result, err := s.FileInfoStore.GetWithOptions(page, perPage, opt) 3468 if err == nil { 3469 return result, nil 3470 } 3471 if !isRepeatableError(err) { 3472 return result, err 3473 } 3474 tries++ 3475 if tries >= 3 { 3476 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3477 return result, err 3478 } 3479 } 3480 3481 } 3482 3483 func (s *RetryLayerFileInfoStore) InvalidateFileInfosForPostCache(postID string, deleted bool) { 3484 3485 s.FileInfoStore.InvalidateFileInfosForPostCache(postID, deleted) 3486 3487 } 3488 3489 func (s *RetryLayerFileInfoStore) PermanentDelete(fileID string) error { 3490 3491 tries := 0 3492 for { 3493 err := s.FileInfoStore.PermanentDelete(fileID) 3494 if err == nil { 3495 return nil 3496 } 3497 if !isRepeatableError(err) { 3498 return err 3499 } 3500 tries++ 3501 if tries >= 3 { 3502 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3503 return err 3504 } 3505 } 3506 3507 } 3508 3509 func (s *RetryLayerFileInfoStore) PermanentDeleteBatch(endTime int64, limit int64) (int64, error) { 3510 3511 tries := 0 3512 for { 3513 result, err := s.FileInfoStore.PermanentDeleteBatch(endTime, limit) 3514 if err == nil { 3515 return result, nil 3516 } 3517 if !isRepeatableError(err) { 3518 return result, err 3519 } 3520 tries++ 3521 if tries >= 3 { 3522 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3523 return result, err 3524 } 3525 } 3526 3527 } 3528 3529 func (s *RetryLayerFileInfoStore) PermanentDeleteByUser(userID string) (int64, error) { 3530 3531 tries := 0 3532 for { 3533 result, err := s.FileInfoStore.PermanentDeleteByUser(userID) 3534 if err == nil { 3535 return result, nil 3536 } 3537 if !isRepeatableError(err) { 3538 return result, err 3539 } 3540 tries++ 3541 if tries >= 3 { 3542 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3543 return result, err 3544 } 3545 } 3546 3547 } 3548 3549 func (s *RetryLayerFileInfoStore) Save(info *model.FileInfo) (*model.FileInfo, error) { 3550 3551 tries := 0 3552 for { 3553 result, err := s.FileInfoStore.Save(info) 3554 if err == nil { 3555 return result, nil 3556 } 3557 if !isRepeatableError(err) { 3558 return result, err 3559 } 3560 tries++ 3561 if tries >= 3 { 3562 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3563 return result, err 3564 } 3565 } 3566 3567 } 3568 3569 func (s *RetryLayerFileInfoStore) Search(paramsList []*model.SearchParams, userID string, teamID string, page int, perPage int) (*model.FileInfoList, error) { 3570 3571 tries := 0 3572 for { 3573 result, err := s.FileInfoStore.Search(paramsList, userID, teamID, page, perPage) 3574 if err == nil { 3575 return result, nil 3576 } 3577 if !isRepeatableError(err) { 3578 return result, err 3579 } 3580 tries++ 3581 if tries >= 3 { 3582 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3583 return result, err 3584 } 3585 } 3586 3587 } 3588 3589 func (s *RetryLayerFileInfoStore) SetContent(fileID string, content string) error { 3590 3591 tries := 0 3592 for { 3593 err := s.FileInfoStore.SetContent(fileID, content) 3594 if err == nil { 3595 return nil 3596 } 3597 if !isRepeatableError(err) { 3598 return err 3599 } 3600 tries++ 3601 if tries >= 3 { 3602 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3603 return err 3604 } 3605 } 3606 3607 } 3608 3609 func (s *RetryLayerFileInfoStore) Upsert(info *model.FileInfo) (*model.FileInfo, error) { 3610 3611 tries := 0 3612 for { 3613 result, err := s.FileInfoStore.Upsert(info) 3614 if err == nil { 3615 return result, nil 3616 } 3617 if !isRepeatableError(err) { 3618 return result, err 3619 } 3620 tries++ 3621 if tries >= 3 { 3622 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3623 return result, err 3624 } 3625 } 3626 3627 } 3628 3629 func (s *RetryLayerGroupStore) AdminRoleGroupsForSyncableMember(userID string, syncableID string, syncableType model.GroupSyncableType) ([]string, error) { 3630 3631 tries := 0 3632 for { 3633 result, err := s.GroupStore.AdminRoleGroupsForSyncableMember(userID, syncableID, syncableType) 3634 if err == nil { 3635 return result, nil 3636 } 3637 if !isRepeatableError(err) { 3638 return result, err 3639 } 3640 tries++ 3641 if tries >= 3 { 3642 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3643 return result, err 3644 } 3645 } 3646 3647 } 3648 3649 func (s *RetryLayerGroupStore) ChannelMembersMinusGroupMembers(channelID string, groupIDs []string, page int, perPage int) ([]*model.UserWithGroups, error) { 3650 3651 tries := 0 3652 for { 3653 result, err := s.GroupStore.ChannelMembersMinusGroupMembers(channelID, groupIDs, page, perPage) 3654 if err == nil { 3655 return result, nil 3656 } 3657 if !isRepeatableError(err) { 3658 return result, err 3659 } 3660 tries++ 3661 if tries >= 3 { 3662 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3663 return result, err 3664 } 3665 } 3666 3667 } 3668 3669 func (s *RetryLayerGroupStore) ChannelMembersToAdd(since int64, channelID *string, includeRemovedMembers bool) ([]*model.UserChannelIDPair, error) { 3670 3671 tries := 0 3672 for { 3673 result, err := s.GroupStore.ChannelMembersToAdd(since, channelID, includeRemovedMembers) 3674 if err == nil { 3675 return result, nil 3676 } 3677 if !isRepeatableError(err) { 3678 return result, err 3679 } 3680 tries++ 3681 if tries >= 3 { 3682 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3683 return result, err 3684 } 3685 } 3686 3687 } 3688 3689 func (s *RetryLayerGroupStore) ChannelMembersToRemove(channelID *string) ([]*model.ChannelMember, error) { 3690 3691 tries := 0 3692 for { 3693 result, err := s.GroupStore.ChannelMembersToRemove(channelID) 3694 if err == nil { 3695 return result, nil 3696 } 3697 if !isRepeatableError(err) { 3698 return result, err 3699 } 3700 tries++ 3701 if tries >= 3 { 3702 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3703 return result, err 3704 } 3705 } 3706 3707 } 3708 3709 func (s *RetryLayerGroupStore) CountChannelMembersMinusGroupMembers(channelID string, groupIDs []string) (int64, error) { 3710 3711 tries := 0 3712 for { 3713 result, err := s.GroupStore.CountChannelMembersMinusGroupMembers(channelID, groupIDs) 3714 if err == nil { 3715 return result, nil 3716 } 3717 if !isRepeatableError(err) { 3718 return result, err 3719 } 3720 tries++ 3721 if tries >= 3 { 3722 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3723 return result, err 3724 } 3725 } 3726 3727 } 3728 3729 func (s *RetryLayerGroupStore) CountGroupsByChannel(channelID string, opts model.GroupSearchOpts) (int64, error) { 3730 3731 tries := 0 3732 for { 3733 result, err := s.GroupStore.CountGroupsByChannel(channelID, opts) 3734 if err == nil { 3735 return result, nil 3736 } 3737 if !isRepeatableError(err) { 3738 return result, err 3739 } 3740 tries++ 3741 if tries >= 3 { 3742 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3743 return result, err 3744 } 3745 } 3746 3747 } 3748 3749 func (s *RetryLayerGroupStore) CountGroupsByTeam(teamID string, opts model.GroupSearchOpts) (int64, error) { 3750 3751 tries := 0 3752 for { 3753 result, err := s.GroupStore.CountGroupsByTeam(teamID, opts) 3754 if err == nil { 3755 return result, nil 3756 } 3757 if !isRepeatableError(err) { 3758 return result, err 3759 } 3760 tries++ 3761 if tries >= 3 { 3762 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3763 return result, err 3764 } 3765 } 3766 3767 } 3768 3769 func (s *RetryLayerGroupStore) CountTeamMembersMinusGroupMembers(teamID string, groupIDs []string) (int64, error) { 3770 3771 tries := 0 3772 for { 3773 result, err := s.GroupStore.CountTeamMembersMinusGroupMembers(teamID, groupIDs) 3774 if err == nil { 3775 return result, nil 3776 } 3777 if !isRepeatableError(err) { 3778 return result, err 3779 } 3780 tries++ 3781 if tries >= 3 { 3782 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3783 return result, err 3784 } 3785 } 3786 3787 } 3788 3789 func (s *RetryLayerGroupStore) Create(group *model.Group) (*model.Group, error) { 3790 3791 tries := 0 3792 for { 3793 result, err := s.GroupStore.Create(group) 3794 if err == nil { 3795 return result, nil 3796 } 3797 if !isRepeatableError(err) { 3798 return result, err 3799 } 3800 tries++ 3801 if tries >= 3 { 3802 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3803 return result, err 3804 } 3805 } 3806 3807 } 3808 3809 func (s *RetryLayerGroupStore) CreateGroupSyncable(groupSyncable *model.GroupSyncable) (*model.GroupSyncable, error) { 3810 3811 tries := 0 3812 for { 3813 result, err := s.GroupStore.CreateGroupSyncable(groupSyncable) 3814 if err == nil { 3815 return result, nil 3816 } 3817 if !isRepeatableError(err) { 3818 return result, err 3819 } 3820 tries++ 3821 if tries >= 3 { 3822 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3823 return result, err 3824 } 3825 } 3826 3827 } 3828 3829 func (s *RetryLayerGroupStore) Delete(groupID string) (*model.Group, error) { 3830 3831 tries := 0 3832 for { 3833 result, err := s.GroupStore.Delete(groupID) 3834 if err == nil { 3835 return result, nil 3836 } 3837 if !isRepeatableError(err) { 3838 return result, err 3839 } 3840 tries++ 3841 if tries >= 3 { 3842 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3843 return result, err 3844 } 3845 } 3846 3847 } 3848 3849 func (s *RetryLayerGroupStore) DeleteGroupSyncable(groupID string, syncableID string, syncableType model.GroupSyncableType) (*model.GroupSyncable, error) { 3850 3851 tries := 0 3852 for { 3853 result, err := s.GroupStore.DeleteGroupSyncable(groupID, syncableID, syncableType) 3854 if err == nil { 3855 return result, nil 3856 } 3857 if !isRepeatableError(err) { 3858 return result, err 3859 } 3860 tries++ 3861 if tries >= 3 { 3862 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3863 return result, err 3864 } 3865 } 3866 3867 } 3868 3869 func (s *RetryLayerGroupStore) DeleteMember(groupID string, userID string) (*model.GroupMember, error) { 3870 3871 tries := 0 3872 for { 3873 result, err := s.GroupStore.DeleteMember(groupID, userID) 3874 if err == nil { 3875 return result, nil 3876 } 3877 if !isRepeatableError(err) { 3878 return result, err 3879 } 3880 tries++ 3881 if tries >= 3 { 3882 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3883 return result, err 3884 } 3885 } 3886 3887 } 3888 3889 func (s *RetryLayerGroupStore) DistinctGroupMemberCount() (int64, error) { 3890 3891 tries := 0 3892 for { 3893 result, err := s.GroupStore.DistinctGroupMemberCount() 3894 if err == nil { 3895 return result, nil 3896 } 3897 if !isRepeatableError(err) { 3898 return result, err 3899 } 3900 tries++ 3901 if tries >= 3 { 3902 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3903 return result, err 3904 } 3905 } 3906 3907 } 3908 3909 func (s *RetryLayerGroupStore) Get(groupID string) (*model.Group, error) { 3910 3911 tries := 0 3912 for { 3913 result, err := s.GroupStore.Get(groupID) 3914 if err == nil { 3915 return result, nil 3916 } 3917 if !isRepeatableError(err) { 3918 return result, err 3919 } 3920 tries++ 3921 if tries >= 3 { 3922 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3923 return result, err 3924 } 3925 } 3926 3927 } 3928 3929 func (s *RetryLayerGroupStore) GetAllBySource(groupSource model.GroupSource) ([]*model.Group, error) { 3930 3931 tries := 0 3932 for { 3933 result, err := s.GroupStore.GetAllBySource(groupSource) 3934 if err == nil { 3935 return result, nil 3936 } 3937 if !isRepeatableError(err) { 3938 return result, err 3939 } 3940 tries++ 3941 if tries >= 3 { 3942 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3943 return result, err 3944 } 3945 } 3946 3947 } 3948 3949 func (s *RetryLayerGroupStore) GetAllGroupSyncablesByGroupId(groupID string, syncableType model.GroupSyncableType) ([]*model.GroupSyncable, error) { 3950 3951 tries := 0 3952 for { 3953 result, err := s.GroupStore.GetAllGroupSyncablesByGroupId(groupID, syncableType) 3954 if err == nil { 3955 return result, nil 3956 } 3957 if !isRepeatableError(err) { 3958 return result, err 3959 } 3960 tries++ 3961 if tries >= 3 { 3962 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3963 return result, err 3964 } 3965 } 3966 3967 } 3968 3969 func (s *RetryLayerGroupStore) GetByIDs(groupIDs []string) ([]*model.Group, error) { 3970 3971 tries := 0 3972 for { 3973 result, err := s.GroupStore.GetByIDs(groupIDs) 3974 if err == nil { 3975 return result, nil 3976 } 3977 if !isRepeatableError(err) { 3978 return result, err 3979 } 3980 tries++ 3981 if tries >= 3 { 3982 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3983 return result, err 3984 } 3985 } 3986 3987 } 3988 3989 func (s *RetryLayerGroupStore) GetByName(name string, opts model.GroupSearchOpts) (*model.Group, error) { 3990 3991 tries := 0 3992 for { 3993 result, err := s.GroupStore.GetByName(name, opts) 3994 if err == nil { 3995 return result, nil 3996 } 3997 if !isRepeatableError(err) { 3998 return result, err 3999 } 4000 tries++ 4001 if tries >= 3 { 4002 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4003 return result, err 4004 } 4005 } 4006 4007 } 4008 4009 func (s *RetryLayerGroupStore) GetByRemoteID(remoteID string, groupSource model.GroupSource) (*model.Group, error) { 4010 4011 tries := 0 4012 for { 4013 result, err := s.GroupStore.GetByRemoteID(remoteID, groupSource) 4014 if err == nil { 4015 return result, nil 4016 } 4017 if !isRepeatableError(err) { 4018 return result, err 4019 } 4020 tries++ 4021 if tries >= 3 { 4022 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4023 return result, err 4024 } 4025 } 4026 4027 } 4028 4029 func (s *RetryLayerGroupStore) GetByUser(userID string) ([]*model.Group, error) { 4030 4031 tries := 0 4032 for { 4033 result, err := s.GroupStore.GetByUser(userID) 4034 if err == nil { 4035 return result, nil 4036 } 4037 if !isRepeatableError(err) { 4038 return result, err 4039 } 4040 tries++ 4041 if tries >= 3 { 4042 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4043 return result, err 4044 } 4045 } 4046 4047 } 4048 4049 func (s *RetryLayerGroupStore) GetGroupSyncable(groupID string, syncableID string, syncableType model.GroupSyncableType) (*model.GroupSyncable, error) { 4050 4051 tries := 0 4052 for { 4053 result, err := s.GroupStore.GetGroupSyncable(groupID, syncableID, syncableType) 4054 if err == nil { 4055 return result, nil 4056 } 4057 if !isRepeatableError(err) { 4058 return result, err 4059 } 4060 tries++ 4061 if tries >= 3 { 4062 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4063 return result, err 4064 } 4065 } 4066 4067 } 4068 4069 func (s *RetryLayerGroupStore) GetGroups(page int, perPage int, opts model.GroupSearchOpts) ([]*model.Group, error) { 4070 4071 tries := 0 4072 for { 4073 result, err := s.GroupStore.GetGroups(page, perPage, opts) 4074 if err == nil { 4075 return result, nil 4076 } 4077 if !isRepeatableError(err) { 4078 return result, err 4079 } 4080 tries++ 4081 if tries >= 3 { 4082 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4083 return result, err 4084 } 4085 } 4086 4087 } 4088 4089 func (s *RetryLayerGroupStore) GetGroupsAssociatedToChannelsByTeam(teamID string, opts model.GroupSearchOpts) (map[string][]*model.GroupWithSchemeAdmin, error) { 4090 4091 tries := 0 4092 for { 4093 result, err := s.GroupStore.GetGroupsAssociatedToChannelsByTeam(teamID, opts) 4094 if err == nil { 4095 return result, nil 4096 } 4097 if !isRepeatableError(err) { 4098 return result, err 4099 } 4100 tries++ 4101 if tries >= 3 { 4102 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4103 return result, err 4104 } 4105 } 4106 4107 } 4108 4109 func (s *RetryLayerGroupStore) GetGroupsByChannel(channelID string, opts model.GroupSearchOpts) ([]*model.GroupWithSchemeAdmin, error) { 4110 4111 tries := 0 4112 for { 4113 result, err := s.GroupStore.GetGroupsByChannel(channelID, opts) 4114 if err == nil { 4115 return result, nil 4116 } 4117 if !isRepeatableError(err) { 4118 return result, err 4119 } 4120 tries++ 4121 if tries >= 3 { 4122 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4123 return result, err 4124 } 4125 } 4126 4127 } 4128 4129 func (s *RetryLayerGroupStore) GetGroupsByTeam(teamID string, opts model.GroupSearchOpts) ([]*model.GroupWithSchemeAdmin, error) { 4130 4131 tries := 0 4132 for { 4133 result, err := s.GroupStore.GetGroupsByTeam(teamID, opts) 4134 if err == nil { 4135 return result, nil 4136 } 4137 if !isRepeatableError(err) { 4138 return result, err 4139 } 4140 tries++ 4141 if tries >= 3 { 4142 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4143 return result, err 4144 } 4145 } 4146 4147 } 4148 4149 func (s *RetryLayerGroupStore) GetMemberCount(groupID string) (int64, error) { 4150 4151 tries := 0 4152 for { 4153 result, err := s.GroupStore.GetMemberCount(groupID) 4154 if err == nil { 4155 return result, nil 4156 } 4157 if !isRepeatableError(err) { 4158 return result, err 4159 } 4160 tries++ 4161 if tries >= 3 { 4162 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4163 return result, err 4164 } 4165 } 4166 4167 } 4168 4169 func (s *RetryLayerGroupStore) GetMemberUsers(groupID string) ([]*model.User, error) { 4170 4171 tries := 0 4172 for { 4173 result, err := s.GroupStore.GetMemberUsers(groupID) 4174 if err == nil { 4175 return result, nil 4176 } 4177 if !isRepeatableError(err) { 4178 return result, err 4179 } 4180 tries++ 4181 if tries >= 3 { 4182 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4183 return result, err 4184 } 4185 } 4186 4187 } 4188 4189 func (s *RetryLayerGroupStore) GetMemberUsersInTeam(groupID string, teamID string) ([]*model.User, error) { 4190 4191 tries := 0 4192 for { 4193 result, err := s.GroupStore.GetMemberUsersInTeam(groupID, teamID) 4194 if err == nil { 4195 return result, nil 4196 } 4197 if !isRepeatableError(err) { 4198 return result, err 4199 } 4200 tries++ 4201 if tries >= 3 { 4202 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4203 return result, err 4204 } 4205 } 4206 4207 } 4208 4209 func (s *RetryLayerGroupStore) GetMemberUsersNotInChannel(groupID string, channelID string) ([]*model.User, error) { 4210 4211 tries := 0 4212 for { 4213 result, err := s.GroupStore.GetMemberUsersNotInChannel(groupID, channelID) 4214 if err == nil { 4215 return result, nil 4216 } 4217 if !isRepeatableError(err) { 4218 return result, err 4219 } 4220 tries++ 4221 if tries >= 3 { 4222 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4223 return result, err 4224 } 4225 } 4226 4227 } 4228 4229 func (s *RetryLayerGroupStore) GetMemberUsersPage(groupID string, page int, perPage int) ([]*model.User, error) { 4230 4231 tries := 0 4232 for { 4233 result, err := s.GroupStore.GetMemberUsersPage(groupID, page, perPage) 4234 if err == nil { 4235 return result, nil 4236 } 4237 if !isRepeatableError(err) { 4238 return result, err 4239 } 4240 tries++ 4241 if tries >= 3 { 4242 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4243 return result, err 4244 } 4245 } 4246 4247 } 4248 4249 func (s *RetryLayerGroupStore) GroupChannelCount() (int64, error) { 4250 4251 tries := 0 4252 for { 4253 result, err := s.GroupStore.GroupChannelCount() 4254 if err == nil { 4255 return result, nil 4256 } 4257 if !isRepeatableError(err) { 4258 return result, err 4259 } 4260 tries++ 4261 if tries >= 3 { 4262 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4263 return result, err 4264 } 4265 } 4266 4267 } 4268 4269 func (s *RetryLayerGroupStore) GroupCount() (int64, error) { 4270 4271 tries := 0 4272 for { 4273 result, err := s.GroupStore.GroupCount() 4274 if err == nil { 4275 return result, nil 4276 } 4277 if !isRepeatableError(err) { 4278 return result, err 4279 } 4280 tries++ 4281 if tries >= 3 { 4282 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4283 return result, err 4284 } 4285 } 4286 4287 } 4288 4289 func (s *RetryLayerGroupStore) GroupCountWithAllowReference() (int64, error) { 4290 4291 tries := 0 4292 for { 4293 result, err := s.GroupStore.GroupCountWithAllowReference() 4294 if err == nil { 4295 return result, nil 4296 } 4297 if !isRepeatableError(err) { 4298 return result, err 4299 } 4300 tries++ 4301 if tries >= 3 { 4302 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4303 return result, err 4304 } 4305 } 4306 4307 } 4308 4309 func (s *RetryLayerGroupStore) GroupMemberCount() (int64, error) { 4310 4311 tries := 0 4312 for { 4313 result, err := s.GroupStore.GroupMemberCount() 4314 if err == nil { 4315 return result, nil 4316 } 4317 if !isRepeatableError(err) { 4318 return result, err 4319 } 4320 tries++ 4321 if tries >= 3 { 4322 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4323 return result, err 4324 } 4325 } 4326 4327 } 4328 4329 func (s *RetryLayerGroupStore) GroupTeamCount() (int64, error) { 4330 4331 tries := 0 4332 for { 4333 result, err := s.GroupStore.GroupTeamCount() 4334 if err == nil { 4335 return result, nil 4336 } 4337 if !isRepeatableError(err) { 4338 return result, err 4339 } 4340 tries++ 4341 if tries >= 3 { 4342 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4343 return result, err 4344 } 4345 } 4346 4347 } 4348 4349 func (s *RetryLayerGroupStore) PermanentDeleteMembersByUser(userID string) error { 4350 4351 tries := 0 4352 for { 4353 err := s.GroupStore.PermanentDeleteMembersByUser(userID) 4354 if err == nil { 4355 return nil 4356 } 4357 if !isRepeatableError(err) { 4358 return err 4359 } 4360 tries++ 4361 if tries >= 3 { 4362 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4363 return err 4364 } 4365 } 4366 4367 } 4368 4369 func (s *RetryLayerGroupStore) PermittedSyncableAdmins(syncableID string, syncableType model.GroupSyncableType) ([]string, error) { 4370 4371 tries := 0 4372 for { 4373 result, err := s.GroupStore.PermittedSyncableAdmins(syncableID, syncableType) 4374 if err == nil { 4375 return result, nil 4376 } 4377 if !isRepeatableError(err) { 4378 return result, err 4379 } 4380 tries++ 4381 if tries >= 3 { 4382 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4383 return result, err 4384 } 4385 } 4386 4387 } 4388 4389 func (s *RetryLayerGroupStore) TeamMembersMinusGroupMembers(teamID string, groupIDs []string, page int, perPage int) ([]*model.UserWithGroups, error) { 4390 4391 tries := 0 4392 for { 4393 result, err := s.GroupStore.TeamMembersMinusGroupMembers(teamID, groupIDs, page, perPage) 4394 if err == nil { 4395 return result, nil 4396 } 4397 if !isRepeatableError(err) { 4398 return result, err 4399 } 4400 tries++ 4401 if tries >= 3 { 4402 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4403 return result, err 4404 } 4405 } 4406 4407 } 4408 4409 func (s *RetryLayerGroupStore) TeamMembersToAdd(since int64, teamID *string, includeRemovedMembers bool) ([]*model.UserTeamIDPair, error) { 4410 4411 tries := 0 4412 for { 4413 result, err := s.GroupStore.TeamMembersToAdd(since, teamID, includeRemovedMembers) 4414 if err == nil { 4415 return result, nil 4416 } 4417 if !isRepeatableError(err) { 4418 return result, err 4419 } 4420 tries++ 4421 if tries >= 3 { 4422 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4423 return result, err 4424 } 4425 } 4426 4427 } 4428 4429 func (s *RetryLayerGroupStore) TeamMembersToRemove(teamID *string) ([]*model.TeamMember, error) { 4430 4431 tries := 0 4432 for { 4433 result, err := s.GroupStore.TeamMembersToRemove(teamID) 4434 if err == nil { 4435 return result, nil 4436 } 4437 if !isRepeatableError(err) { 4438 return result, err 4439 } 4440 tries++ 4441 if tries >= 3 { 4442 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4443 return result, err 4444 } 4445 } 4446 4447 } 4448 4449 func (s *RetryLayerGroupStore) Update(group *model.Group) (*model.Group, error) { 4450 4451 tries := 0 4452 for { 4453 result, err := s.GroupStore.Update(group) 4454 if err == nil { 4455 return result, nil 4456 } 4457 if !isRepeatableError(err) { 4458 return result, err 4459 } 4460 tries++ 4461 if tries >= 3 { 4462 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4463 return result, err 4464 } 4465 } 4466 4467 } 4468 4469 func (s *RetryLayerGroupStore) UpdateGroupSyncable(groupSyncable *model.GroupSyncable) (*model.GroupSyncable, error) { 4470 4471 tries := 0 4472 for { 4473 result, err := s.GroupStore.UpdateGroupSyncable(groupSyncable) 4474 if err == nil { 4475 return result, nil 4476 } 4477 if !isRepeatableError(err) { 4478 return result, err 4479 } 4480 tries++ 4481 if tries >= 3 { 4482 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4483 return result, err 4484 } 4485 } 4486 4487 } 4488 4489 func (s *RetryLayerGroupStore) UpsertMember(groupID string, userID string) (*model.GroupMember, error) { 4490 4491 tries := 0 4492 for { 4493 result, err := s.GroupStore.UpsertMember(groupID, userID) 4494 if err == nil { 4495 return result, nil 4496 } 4497 if !isRepeatableError(err) { 4498 return result, err 4499 } 4500 tries++ 4501 if tries >= 3 { 4502 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4503 return result, err 4504 } 4505 } 4506 4507 } 4508 4509 func (s *RetryLayerJobStore) Delete(id string) (string, error) { 4510 4511 tries := 0 4512 for { 4513 result, err := s.JobStore.Delete(id) 4514 if err == nil { 4515 return result, nil 4516 } 4517 if !isRepeatableError(err) { 4518 return result, err 4519 } 4520 tries++ 4521 if tries >= 3 { 4522 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4523 return result, err 4524 } 4525 } 4526 4527 } 4528 4529 func (s *RetryLayerJobStore) Get(id string) (*model.Job, error) { 4530 4531 tries := 0 4532 for { 4533 result, err := s.JobStore.Get(id) 4534 if err == nil { 4535 return result, nil 4536 } 4537 if !isRepeatableError(err) { 4538 return result, err 4539 } 4540 tries++ 4541 if tries >= 3 { 4542 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4543 return result, err 4544 } 4545 } 4546 4547 } 4548 4549 func (s *RetryLayerJobStore) GetAllByStatus(status string) ([]*model.Job, error) { 4550 4551 tries := 0 4552 for { 4553 result, err := s.JobStore.GetAllByStatus(status) 4554 if err == nil { 4555 return result, nil 4556 } 4557 if !isRepeatableError(err) { 4558 return result, err 4559 } 4560 tries++ 4561 if tries >= 3 { 4562 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4563 return result, err 4564 } 4565 } 4566 4567 } 4568 4569 func (s *RetryLayerJobStore) GetAllByType(jobType string) ([]*model.Job, error) { 4570 4571 tries := 0 4572 for { 4573 result, err := s.JobStore.GetAllByType(jobType) 4574 if err == nil { 4575 return result, nil 4576 } 4577 if !isRepeatableError(err) { 4578 return result, err 4579 } 4580 tries++ 4581 if tries >= 3 { 4582 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4583 return result, err 4584 } 4585 } 4586 4587 } 4588 4589 func (s *RetryLayerJobStore) GetAllByTypePage(jobType string, offset int, limit int) ([]*model.Job, error) { 4590 4591 tries := 0 4592 for { 4593 result, err := s.JobStore.GetAllByTypePage(jobType, offset, limit) 4594 if err == nil { 4595 return result, nil 4596 } 4597 if !isRepeatableError(err) { 4598 return result, err 4599 } 4600 tries++ 4601 if tries >= 3 { 4602 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4603 return result, err 4604 } 4605 } 4606 4607 } 4608 4609 func (s *RetryLayerJobStore) GetAllByTypesPage(jobTypes []string, offset int, limit int) ([]*model.Job, error) { 4610 4611 tries := 0 4612 for { 4613 result, err := s.JobStore.GetAllByTypesPage(jobTypes, offset, limit) 4614 if err == nil { 4615 return result, nil 4616 } 4617 if !isRepeatableError(err) { 4618 return result, err 4619 } 4620 tries++ 4621 if tries >= 3 { 4622 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4623 return result, err 4624 } 4625 } 4626 4627 } 4628 4629 func (s *RetryLayerJobStore) GetAllPage(offset int, limit int) ([]*model.Job, error) { 4630 4631 tries := 0 4632 for { 4633 result, err := s.JobStore.GetAllPage(offset, limit) 4634 if err == nil { 4635 return result, nil 4636 } 4637 if !isRepeatableError(err) { 4638 return result, err 4639 } 4640 tries++ 4641 if tries >= 3 { 4642 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4643 return result, err 4644 } 4645 } 4646 4647 } 4648 4649 func (s *RetryLayerJobStore) GetCountByStatusAndType(status string, jobType string) (int64, error) { 4650 4651 tries := 0 4652 for { 4653 result, err := s.JobStore.GetCountByStatusAndType(status, jobType) 4654 if err == nil { 4655 return result, nil 4656 } 4657 if !isRepeatableError(err) { 4658 return result, err 4659 } 4660 tries++ 4661 if tries >= 3 { 4662 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4663 return result, err 4664 } 4665 } 4666 4667 } 4668 4669 func (s *RetryLayerJobStore) GetNewestJobByStatusAndType(status string, jobType string) (*model.Job, error) { 4670 4671 tries := 0 4672 for { 4673 result, err := s.JobStore.GetNewestJobByStatusAndType(status, jobType) 4674 if err == nil { 4675 return result, nil 4676 } 4677 if !isRepeatableError(err) { 4678 return result, err 4679 } 4680 tries++ 4681 if tries >= 3 { 4682 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4683 return result, err 4684 } 4685 } 4686 4687 } 4688 4689 func (s *RetryLayerJobStore) GetNewestJobByStatusesAndType(statuses []string, jobType string) (*model.Job, error) { 4690 4691 tries := 0 4692 for { 4693 result, err := s.JobStore.GetNewestJobByStatusesAndType(statuses, jobType) 4694 if err == nil { 4695 return result, nil 4696 } 4697 if !isRepeatableError(err) { 4698 return result, err 4699 } 4700 tries++ 4701 if tries >= 3 { 4702 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4703 return result, err 4704 } 4705 } 4706 4707 } 4708 4709 func (s *RetryLayerJobStore) Save(job *model.Job) (*model.Job, error) { 4710 4711 tries := 0 4712 for { 4713 result, err := s.JobStore.Save(job) 4714 if err == nil { 4715 return result, nil 4716 } 4717 if !isRepeatableError(err) { 4718 return result, err 4719 } 4720 tries++ 4721 if tries >= 3 { 4722 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4723 return result, err 4724 } 4725 } 4726 4727 } 4728 4729 func (s *RetryLayerJobStore) UpdateOptimistically(job *model.Job, currentStatus string) (bool, error) { 4730 4731 tries := 0 4732 for { 4733 result, err := s.JobStore.UpdateOptimistically(job, currentStatus) 4734 if err == nil { 4735 return result, nil 4736 } 4737 if !isRepeatableError(err) { 4738 return result, err 4739 } 4740 tries++ 4741 if tries >= 3 { 4742 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4743 return result, err 4744 } 4745 } 4746 4747 } 4748 4749 func (s *RetryLayerJobStore) UpdateStatus(id string, status string) (*model.Job, error) { 4750 4751 tries := 0 4752 for { 4753 result, err := s.JobStore.UpdateStatus(id, status) 4754 if err == nil { 4755 return result, nil 4756 } 4757 if !isRepeatableError(err) { 4758 return result, err 4759 } 4760 tries++ 4761 if tries >= 3 { 4762 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4763 return result, err 4764 } 4765 } 4766 4767 } 4768 4769 func (s *RetryLayerJobStore) UpdateStatusOptimistically(id string, currentStatus string, newStatus string) (bool, error) { 4770 4771 tries := 0 4772 for { 4773 result, err := s.JobStore.UpdateStatusOptimistically(id, currentStatus, newStatus) 4774 if err == nil { 4775 return result, nil 4776 } 4777 if !isRepeatableError(err) { 4778 return result, err 4779 } 4780 tries++ 4781 if tries >= 3 { 4782 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4783 return result, err 4784 } 4785 } 4786 4787 } 4788 4789 func (s *RetryLayerLicenseStore) Get(id string) (*model.LicenseRecord, error) { 4790 4791 tries := 0 4792 for { 4793 result, err := s.LicenseStore.Get(id) 4794 if err == nil { 4795 return result, nil 4796 } 4797 if !isRepeatableError(err) { 4798 return result, err 4799 } 4800 tries++ 4801 if tries >= 3 { 4802 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4803 return result, err 4804 } 4805 } 4806 4807 } 4808 4809 func (s *RetryLayerLicenseStore) GetAll() ([]*model.LicenseRecord, error) { 4810 4811 tries := 0 4812 for { 4813 result, err := s.LicenseStore.GetAll() 4814 if err == nil { 4815 return result, nil 4816 } 4817 if !isRepeatableError(err) { 4818 return result, err 4819 } 4820 tries++ 4821 if tries >= 3 { 4822 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4823 return result, err 4824 } 4825 } 4826 4827 } 4828 4829 func (s *RetryLayerLicenseStore) Save(license *model.LicenseRecord) (*model.LicenseRecord, error) { 4830 4831 tries := 0 4832 for { 4833 result, err := s.LicenseStore.Save(license) 4834 if err == nil { 4835 return result, nil 4836 } 4837 if !isRepeatableError(err) { 4838 return result, err 4839 } 4840 tries++ 4841 if tries >= 3 { 4842 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4843 return result, err 4844 } 4845 } 4846 4847 } 4848 4849 func (s *RetryLayerLinkMetadataStore) Get(url string, timestamp int64) (*model.LinkMetadata, error) { 4850 4851 tries := 0 4852 for { 4853 result, err := s.LinkMetadataStore.Get(url, timestamp) 4854 if err == nil { 4855 return result, nil 4856 } 4857 if !isRepeatableError(err) { 4858 return result, err 4859 } 4860 tries++ 4861 if tries >= 3 { 4862 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4863 return result, err 4864 } 4865 } 4866 4867 } 4868 4869 func (s *RetryLayerLinkMetadataStore) Save(linkMetadata *model.LinkMetadata) (*model.LinkMetadata, error) { 4870 4871 tries := 0 4872 for { 4873 result, err := s.LinkMetadataStore.Save(linkMetadata) 4874 if err == nil { 4875 return result, nil 4876 } 4877 if !isRepeatableError(err) { 4878 return result, err 4879 } 4880 tries++ 4881 if tries >= 3 { 4882 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4883 return result, err 4884 } 4885 } 4886 4887 } 4888 4889 func (s *RetryLayerOAuthStore) DeleteApp(id string) error { 4890 4891 tries := 0 4892 for { 4893 err := s.OAuthStore.DeleteApp(id) 4894 if err == nil { 4895 return nil 4896 } 4897 if !isRepeatableError(err) { 4898 return err 4899 } 4900 tries++ 4901 if tries >= 3 { 4902 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4903 return err 4904 } 4905 } 4906 4907 } 4908 4909 func (s *RetryLayerOAuthStore) GetAccessData(token string) (*model.AccessData, error) { 4910 4911 tries := 0 4912 for { 4913 result, err := s.OAuthStore.GetAccessData(token) 4914 if err == nil { 4915 return result, nil 4916 } 4917 if !isRepeatableError(err) { 4918 return result, err 4919 } 4920 tries++ 4921 if tries >= 3 { 4922 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4923 return result, err 4924 } 4925 } 4926 4927 } 4928 4929 func (s *RetryLayerOAuthStore) GetAccessDataByRefreshToken(token string) (*model.AccessData, error) { 4930 4931 tries := 0 4932 for { 4933 result, err := s.OAuthStore.GetAccessDataByRefreshToken(token) 4934 if err == nil { 4935 return result, nil 4936 } 4937 if !isRepeatableError(err) { 4938 return result, err 4939 } 4940 tries++ 4941 if tries >= 3 { 4942 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4943 return result, err 4944 } 4945 } 4946 4947 } 4948 4949 func (s *RetryLayerOAuthStore) GetAccessDataByUserForApp(userID string, clientId string) ([]*model.AccessData, error) { 4950 4951 tries := 0 4952 for { 4953 result, err := s.OAuthStore.GetAccessDataByUserForApp(userID, clientId) 4954 if err == nil { 4955 return result, nil 4956 } 4957 if !isRepeatableError(err) { 4958 return result, err 4959 } 4960 tries++ 4961 if tries >= 3 { 4962 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4963 return result, err 4964 } 4965 } 4966 4967 } 4968 4969 func (s *RetryLayerOAuthStore) GetApp(id string) (*model.OAuthApp, error) { 4970 4971 tries := 0 4972 for { 4973 result, err := s.OAuthStore.GetApp(id) 4974 if err == nil { 4975 return result, nil 4976 } 4977 if !isRepeatableError(err) { 4978 return result, err 4979 } 4980 tries++ 4981 if tries >= 3 { 4982 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4983 return result, err 4984 } 4985 } 4986 4987 } 4988 4989 func (s *RetryLayerOAuthStore) GetAppByUser(userID string, offset int, limit int) ([]*model.OAuthApp, error) { 4990 4991 tries := 0 4992 for { 4993 result, err := s.OAuthStore.GetAppByUser(userID, offset, limit) 4994 if err == nil { 4995 return result, nil 4996 } 4997 if !isRepeatableError(err) { 4998 return result, err 4999 } 5000 tries++ 5001 if tries >= 3 { 5002 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5003 return result, err 5004 } 5005 } 5006 5007 } 5008 5009 func (s *RetryLayerOAuthStore) GetApps(offset int, limit int) ([]*model.OAuthApp, error) { 5010 5011 tries := 0 5012 for { 5013 result, err := s.OAuthStore.GetApps(offset, limit) 5014 if err == nil { 5015 return result, nil 5016 } 5017 if !isRepeatableError(err) { 5018 return result, err 5019 } 5020 tries++ 5021 if tries >= 3 { 5022 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5023 return result, err 5024 } 5025 } 5026 5027 } 5028 5029 func (s *RetryLayerOAuthStore) GetAuthData(code string) (*model.AuthData, error) { 5030 5031 tries := 0 5032 for { 5033 result, err := s.OAuthStore.GetAuthData(code) 5034 if err == nil { 5035 return result, nil 5036 } 5037 if !isRepeatableError(err) { 5038 return result, err 5039 } 5040 tries++ 5041 if tries >= 3 { 5042 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5043 return result, err 5044 } 5045 } 5046 5047 } 5048 5049 func (s *RetryLayerOAuthStore) GetAuthorizedApps(userID string, offset int, limit int) ([]*model.OAuthApp, error) { 5050 5051 tries := 0 5052 for { 5053 result, err := s.OAuthStore.GetAuthorizedApps(userID, offset, limit) 5054 if err == nil { 5055 return result, nil 5056 } 5057 if !isRepeatableError(err) { 5058 return result, err 5059 } 5060 tries++ 5061 if tries >= 3 { 5062 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5063 return result, err 5064 } 5065 } 5066 5067 } 5068 5069 func (s *RetryLayerOAuthStore) GetPreviousAccessData(userID string, clientId string) (*model.AccessData, error) { 5070 5071 tries := 0 5072 for { 5073 result, err := s.OAuthStore.GetPreviousAccessData(userID, clientId) 5074 if err == nil { 5075 return result, nil 5076 } 5077 if !isRepeatableError(err) { 5078 return result, err 5079 } 5080 tries++ 5081 if tries >= 3 { 5082 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5083 return result, err 5084 } 5085 } 5086 5087 } 5088 5089 func (s *RetryLayerOAuthStore) PermanentDeleteAuthDataByUser(userID string) error { 5090 5091 tries := 0 5092 for { 5093 err := s.OAuthStore.PermanentDeleteAuthDataByUser(userID) 5094 if err == nil { 5095 return nil 5096 } 5097 if !isRepeatableError(err) { 5098 return err 5099 } 5100 tries++ 5101 if tries >= 3 { 5102 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5103 return err 5104 } 5105 } 5106 5107 } 5108 5109 func (s *RetryLayerOAuthStore) RemoveAccessData(token string) error { 5110 5111 tries := 0 5112 for { 5113 err := s.OAuthStore.RemoveAccessData(token) 5114 if err == nil { 5115 return nil 5116 } 5117 if !isRepeatableError(err) { 5118 return err 5119 } 5120 tries++ 5121 if tries >= 3 { 5122 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5123 return err 5124 } 5125 } 5126 5127 } 5128 5129 func (s *RetryLayerOAuthStore) RemoveAllAccessData() error { 5130 5131 tries := 0 5132 for { 5133 err := s.OAuthStore.RemoveAllAccessData() 5134 if err == nil { 5135 return nil 5136 } 5137 if !isRepeatableError(err) { 5138 return err 5139 } 5140 tries++ 5141 if tries >= 3 { 5142 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5143 return err 5144 } 5145 } 5146 5147 } 5148 5149 func (s *RetryLayerOAuthStore) RemoveAuthData(code string) error { 5150 5151 tries := 0 5152 for { 5153 err := s.OAuthStore.RemoveAuthData(code) 5154 if err == nil { 5155 return nil 5156 } 5157 if !isRepeatableError(err) { 5158 return err 5159 } 5160 tries++ 5161 if tries >= 3 { 5162 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5163 return err 5164 } 5165 } 5166 5167 } 5168 5169 func (s *RetryLayerOAuthStore) SaveAccessData(accessData *model.AccessData) (*model.AccessData, error) { 5170 5171 tries := 0 5172 for { 5173 result, err := s.OAuthStore.SaveAccessData(accessData) 5174 if err == nil { 5175 return result, nil 5176 } 5177 if !isRepeatableError(err) { 5178 return result, err 5179 } 5180 tries++ 5181 if tries >= 3 { 5182 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5183 return result, err 5184 } 5185 } 5186 5187 } 5188 5189 func (s *RetryLayerOAuthStore) SaveApp(app *model.OAuthApp) (*model.OAuthApp, error) { 5190 5191 tries := 0 5192 for { 5193 result, err := s.OAuthStore.SaveApp(app) 5194 if err == nil { 5195 return result, nil 5196 } 5197 if !isRepeatableError(err) { 5198 return result, err 5199 } 5200 tries++ 5201 if tries >= 3 { 5202 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5203 return result, err 5204 } 5205 } 5206 5207 } 5208 5209 func (s *RetryLayerOAuthStore) SaveAuthData(authData *model.AuthData) (*model.AuthData, error) { 5210 5211 tries := 0 5212 for { 5213 result, err := s.OAuthStore.SaveAuthData(authData) 5214 if err == nil { 5215 return result, nil 5216 } 5217 if !isRepeatableError(err) { 5218 return result, err 5219 } 5220 tries++ 5221 if tries >= 3 { 5222 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5223 return result, err 5224 } 5225 } 5226 5227 } 5228 5229 func (s *RetryLayerOAuthStore) UpdateAccessData(accessData *model.AccessData) (*model.AccessData, error) { 5230 5231 tries := 0 5232 for { 5233 result, err := s.OAuthStore.UpdateAccessData(accessData) 5234 if err == nil { 5235 return result, nil 5236 } 5237 if !isRepeatableError(err) { 5238 return result, err 5239 } 5240 tries++ 5241 if tries >= 3 { 5242 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5243 return result, err 5244 } 5245 } 5246 5247 } 5248 5249 func (s *RetryLayerOAuthStore) UpdateApp(app *model.OAuthApp) (*model.OAuthApp, error) { 5250 5251 tries := 0 5252 for { 5253 result, err := s.OAuthStore.UpdateApp(app) 5254 if err == nil { 5255 return result, nil 5256 } 5257 if !isRepeatableError(err) { 5258 return result, err 5259 } 5260 tries++ 5261 if tries >= 3 { 5262 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5263 return result, err 5264 } 5265 } 5266 5267 } 5268 5269 func (s *RetryLayerPluginStore) CompareAndDelete(keyVal *model.PluginKeyValue, oldValue []byte) (bool, error) { 5270 5271 tries := 0 5272 for { 5273 result, err := s.PluginStore.CompareAndDelete(keyVal, oldValue) 5274 if err == nil { 5275 return result, nil 5276 } 5277 if !isRepeatableError(err) { 5278 return result, err 5279 } 5280 tries++ 5281 if tries >= 3 { 5282 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5283 return result, err 5284 } 5285 } 5286 5287 } 5288 5289 func (s *RetryLayerPluginStore) CompareAndSet(keyVal *model.PluginKeyValue, oldValue []byte) (bool, error) { 5290 5291 tries := 0 5292 for { 5293 result, err := s.PluginStore.CompareAndSet(keyVal, oldValue) 5294 if err == nil { 5295 return result, nil 5296 } 5297 if !isRepeatableError(err) { 5298 return result, err 5299 } 5300 tries++ 5301 if tries >= 3 { 5302 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5303 return result, err 5304 } 5305 } 5306 5307 } 5308 5309 func (s *RetryLayerPluginStore) Delete(pluginID string, key string) error { 5310 5311 tries := 0 5312 for { 5313 err := s.PluginStore.Delete(pluginID, key) 5314 if err == nil { 5315 return nil 5316 } 5317 if !isRepeatableError(err) { 5318 return err 5319 } 5320 tries++ 5321 if tries >= 3 { 5322 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5323 return err 5324 } 5325 } 5326 5327 } 5328 5329 func (s *RetryLayerPluginStore) DeleteAllExpired() error { 5330 5331 tries := 0 5332 for { 5333 err := s.PluginStore.DeleteAllExpired() 5334 if err == nil { 5335 return nil 5336 } 5337 if !isRepeatableError(err) { 5338 return err 5339 } 5340 tries++ 5341 if tries >= 3 { 5342 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5343 return err 5344 } 5345 } 5346 5347 } 5348 5349 func (s *RetryLayerPluginStore) DeleteAllForPlugin(PluginID string) error { 5350 5351 tries := 0 5352 for { 5353 err := s.PluginStore.DeleteAllForPlugin(PluginID) 5354 if err == nil { 5355 return nil 5356 } 5357 if !isRepeatableError(err) { 5358 return err 5359 } 5360 tries++ 5361 if tries >= 3 { 5362 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5363 return err 5364 } 5365 } 5366 5367 } 5368 5369 func (s *RetryLayerPluginStore) Get(pluginID string, key string) (*model.PluginKeyValue, error) { 5370 5371 tries := 0 5372 for { 5373 result, err := s.PluginStore.Get(pluginID, key) 5374 if err == nil { 5375 return result, nil 5376 } 5377 if !isRepeatableError(err) { 5378 return result, err 5379 } 5380 tries++ 5381 if tries >= 3 { 5382 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5383 return result, err 5384 } 5385 } 5386 5387 } 5388 5389 func (s *RetryLayerPluginStore) List(pluginID string, page int, perPage int) ([]string, error) { 5390 5391 tries := 0 5392 for { 5393 result, err := s.PluginStore.List(pluginID, page, perPage) 5394 if err == nil { 5395 return result, nil 5396 } 5397 if !isRepeatableError(err) { 5398 return result, err 5399 } 5400 tries++ 5401 if tries >= 3 { 5402 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5403 return result, err 5404 } 5405 } 5406 5407 } 5408 5409 func (s *RetryLayerPluginStore) SaveOrUpdate(keyVal *model.PluginKeyValue) (*model.PluginKeyValue, error) { 5410 5411 tries := 0 5412 for { 5413 result, err := s.PluginStore.SaveOrUpdate(keyVal) 5414 if err == nil { 5415 return result, nil 5416 } 5417 if !isRepeatableError(err) { 5418 return result, err 5419 } 5420 tries++ 5421 if tries >= 3 { 5422 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5423 return result, err 5424 } 5425 } 5426 5427 } 5428 5429 func (s *RetryLayerPluginStore) SetWithOptions(pluginID string, key string, value []byte, options model.PluginKVSetOptions) (bool, error) { 5430 5431 tries := 0 5432 for { 5433 result, err := s.PluginStore.SetWithOptions(pluginID, key, value, options) 5434 if err == nil { 5435 return result, nil 5436 } 5437 if !isRepeatableError(err) { 5438 return result, err 5439 } 5440 tries++ 5441 if tries >= 3 { 5442 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5443 return result, err 5444 } 5445 } 5446 5447 } 5448 5449 func (s *RetryLayerPostStore) AnalyticsPostCount(teamID string, mustHaveFile bool, mustHaveHashtag bool) (int64, error) { 5450 5451 tries := 0 5452 for { 5453 result, err := s.PostStore.AnalyticsPostCount(teamID, mustHaveFile, mustHaveHashtag) 5454 if err == nil { 5455 return result, nil 5456 } 5457 if !isRepeatableError(err) { 5458 return result, err 5459 } 5460 tries++ 5461 if tries >= 3 { 5462 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5463 return result, err 5464 } 5465 } 5466 5467 } 5468 5469 func (s *RetryLayerPostStore) AnalyticsPostCountsByDay(options *model.AnalyticsPostCountsOptions) (model.AnalyticsRows, error) { 5470 5471 tries := 0 5472 for { 5473 result, err := s.PostStore.AnalyticsPostCountsByDay(options) 5474 if err == nil { 5475 return result, nil 5476 } 5477 if !isRepeatableError(err) { 5478 return result, err 5479 } 5480 tries++ 5481 if tries >= 3 { 5482 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5483 return result, err 5484 } 5485 } 5486 5487 } 5488 5489 func (s *RetryLayerPostStore) AnalyticsUserCountsWithPostsByDay(teamID string) (model.AnalyticsRows, error) { 5490 5491 tries := 0 5492 for { 5493 result, err := s.PostStore.AnalyticsUserCountsWithPostsByDay(teamID) 5494 if err == nil { 5495 return result, nil 5496 } 5497 if !isRepeatableError(err) { 5498 return result, err 5499 } 5500 tries++ 5501 if tries >= 3 { 5502 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5503 return result, err 5504 } 5505 } 5506 5507 } 5508 5509 func (s *RetryLayerPostStore) ClearCaches() { 5510 5511 s.PostStore.ClearCaches() 5512 5513 } 5514 5515 func (s *RetryLayerPostStore) Delete(postID string, time int64, deleteByID string) error { 5516 5517 tries := 0 5518 for { 5519 err := s.PostStore.Delete(postID, time, deleteByID) 5520 if err == nil { 5521 return nil 5522 } 5523 if !isRepeatableError(err) { 5524 return err 5525 } 5526 tries++ 5527 if tries >= 3 { 5528 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5529 return err 5530 } 5531 } 5532 5533 } 5534 5535 func (s *RetryLayerPostStore) DeleteOrphanedRows(limit int) (int64, error) { 5536 5537 tries := 0 5538 for { 5539 result, err := s.PostStore.DeleteOrphanedRows(limit) 5540 if err == nil { 5541 return result, nil 5542 } 5543 if !isRepeatableError(err) { 5544 return result, err 5545 } 5546 tries++ 5547 if tries >= 3 { 5548 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5549 return result, err 5550 } 5551 } 5552 5553 } 5554 5555 func (s *RetryLayerPostStore) Get(ctx context.Context, id string, skipFetchThreads bool, collapsedThreads bool, collapsedThreadsExtended bool, userID string) (*model.PostList, error) { 5556 5557 tries := 0 5558 for { 5559 result, err := s.PostStore.Get(ctx, id, skipFetchThreads, collapsedThreads, collapsedThreadsExtended, userID) 5560 if err == nil { 5561 return result, nil 5562 } 5563 if !isRepeatableError(err) { 5564 return result, err 5565 } 5566 tries++ 5567 if tries >= 3 { 5568 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5569 return result, err 5570 } 5571 } 5572 5573 } 5574 5575 func (s *RetryLayerPostStore) GetDirectPostParentsForExportAfter(limit int, afterID string) ([]*model.DirectPostForExport, error) { 5576 5577 tries := 0 5578 for { 5579 result, err := s.PostStore.GetDirectPostParentsForExportAfter(limit, afterID) 5580 if err == nil { 5581 return result, nil 5582 } 5583 if !isRepeatableError(err) { 5584 return result, err 5585 } 5586 tries++ 5587 if tries >= 3 { 5588 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5589 return result, err 5590 } 5591 } 5592 5593 } 5594 5595 func (s *RetryLayerPostStore) GetEtag(channelID string, allowFromCache bool, collapsedThreads bool) string { 5596 5597 return s.PostStore.GetEtag(channelID, allowFromCache, collapsedThreads) 5598 5599 } 5600 5601 func (s *RetryLayerPostStore) GetFlaggedPosts(userID string, offset int, limit int) (*model.PostList, error) { 5602 5603 tries := 0 5604 for { 5605 result, err := s.PostStore.GetFlaggedPosts(userID, offset, limit) 5606 if err == nil { 5607 return result, nil 5608 } 5609 if !isRepeatableError(err) { 5610 return result, err 5611 } 5612 tries++ 5613 if tries >= 3 { 5614 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5615 return result, err 5616 } 5617 } 5618 5619 } 5620 5621 func (s *RetryLayerPostStore) GetFlaggedPostsForChannel(userID string, channelID string, offset int, limit int) (*model.PostList, error) { 5622 5623 tries := 0 5624 for { 5625 result, err := s.PostStore.GetFlaggedPostsForChannel(userID, channelID, offset, limit) 5626 if err == nil { 5627 return result, nil 5628 } 5629 if !isRepeatableError(err) { 5630 return result, err 5631 } 5632 tries++ 5633 if tries >= 3 { 5634 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5635 return result, err 5636 } 5637 } 5638 5639 } 5640 5641 func (s *RetryLayerPostStore) GetFlaggedPostsForTeam(userID string, teamID string, offset int, limit int) (*model.PostList, error) { 5642 5643 tries := 0 5644 for { 5645 result, err := s.PostStore.GetFlaggedPostsForTeam(userID, teamID, offset, limit) 5646 if err == nil { 5647 return result, nil 5648 } 5649 if !isRepeatableError(err) { 5650 return result, err 5651 } 5652 tries++ 5653 if tries >= 3 { 5654 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5655 return result, err 5656 } 5657 } 5658 5659 } 5660 5661 func (s *RetryLayerPostStore) GetMaxPostSize() int { 5662 5663 return s.PostStore.GetMaxPostSize() 5664 5665 } 5666 5667 func (s *RetryLayerPostStore) GetOldest() (*model.Post, error) { 5668 5669 tries := 0 5670 for { 5671 result, err := s.PostStore.GetOldest() 5672 if err == nil { 5673 return result, nil 5674 } 5675 if !isRepeatableError(err) { 5676 return result, err 5677 } 5678 tries++ 5679 if tries >= 3 { 5680 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5681 return result, err 5682 } 5683 } 5684 5685 } 5686 5687 func (s *RetryLayerPostStore) GetOldestEntityCreationTime() (int64, error) { 5688 5689 tries := 0 5690 for { 5691 result, err := s.PostStore.GetOldestEntityCreationTime() 5692 if err == nil { 5693 return result, nil 5694 } 5695 if !isRepeatableError(err) { 5696 return result, err 5697 } 5698 tries++ 5699 if tries >= 3 { 5700 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5701 return result, err 5702 } 5703 } 5704 5705 } 5706 5707 func (s *RetryLayerPostStore) GetParentsForExportAfter(limit int, afterID string) ([]*model.PostForExport, error) { 5708 5709 tries := 0 5710 for { 5711 result, err := s.PostStore.GetParentsForExportAfter(limit, afterID) 5712 if err == nil { 5713 return result, nil 5714 } 5715 if !isRepeatableError(err) { 5716 return result, err 5717 } 5718 tries++ 5719 if tries >= 3 { 5720 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5721 return result, err 5722 } 5723 } 5724 5725 } 5726 5727 func (s *RetryLayerPostStore) GetPostAfterTime(channelID string, time int64, collapsedThreads bool) (*model.Post, error) { 5728 5729 tries := 0 5730 for { 5731 result, err := s.PostStore.GetPostAfterTime(channelID, time, collapsedThreads) 5732 if err == nil { 5733 return result, nil 5734 } 5735 if !isRepeatableError(err) { 5736 return result, err 5737 } 5738 tries++ 5739 if tries >= 3 { 5740 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5741 return result, err 5742 } 5743 } 5744 5745 } 5746 5747 func (s *RetryLayerPostStore) GetPostIdAfterTime(channelID string, time int64, collapsedThreads bool) (string, error) { 5748 5749 tries := 0 5750 for { 5751 result, err := s.PostStore.GetPostIdAfterTime(channelID, time, collapsedThreads) 5752 if err == nil { 5753 return result, nil 5754 } 5755 if !isRepeatableError(err) { 5756 return result, err 5757 } 5758 tries++ 5759 if tries >= 3 { 5760 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5761 return result, err 5762 } 5763 } 5764 5765 } 5766 5767 func (s *RetryLayerPostStore) GetPostIdBeforeTime(channelID string, time int64, collapsedThreads bool) (string, error) { 5768 5769 tries := 0 5770 for { 5771 result, err := s.PostStore.GetPostIdBeforeTime(channelID, time, collapsedThreads) 5772 if err == nil { 5773 return result, nil 5774 } 5775 if !isRepeatableError(err) { 5776 return result, err 5777 } 5778 tries++ 5779 if tries >= 3 { 5780 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5781 return result, err 5782 } 5783 } 5784 5785 } 5786 5787 func (s *RetryLayerPostStore) GetPosts(options model.GetPostsOptions, allowFromCache bool) (*model.PostList, error) { 5788 5789 tries := 0 5790 for { 5791 result, err := s.PostStore.GetPosts(options, allowFromCache) 5792 if err == nil { 5793 return result, nil 5794 } 5795 if !isRepeatableError(err) { 5796 return result, err 5797 } 5798 tries++ 5799 if tries >= 3 { 5800 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5801 return result, err 5802 } 5803 } 5804 5805 } 5806 5807 func (s *RetryLayerPostStore) GetPostsAfter(options model.GetPostsOptions) (*model.PostList, error) { 5808 5809 tries := 0 5810 for { 5811 result, err := s.PostStore.GetPostsAfter(options) 5812 if err == nil { 5813 return result, nil 5814 } 5815 if !isRepeatableError(err) { 5816 return result, err 5817 } 5818 tries++ 5819 if tries >= 3 { 5820 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5821 return result, err 5822 } 5823 } 5824 5825 } 5826 5827 func (s *RetryLayerPostStore) GetPostsBatchForIndexing(startTime int64, endTime int64, limit int) ([]*model.PostForIndexing, error) { 5828 5829 tries := 0 5830 for { 5831 result, err := s.PostStore.GetPostsBatchForIndexing(startTime, endTime, limit) 5832 if err == nil { 5833 return result, nil 5834 } 5835 if !isRepeatableError(err) { 5836 return result, err 5837 } 5838 tries++ 5839 if tries >= 3 { 5840 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5841 return result, err 5842 } 5843 } 5844 5845 } 5846 5847 func (s *RetryLayerPostStore) GetPostsBefore(options model.GetPostsOptions) (*model.PostList, error) { 5848 5849 tries := 0 5850 for { 5851 result, err := s.PostStore.GetPostsBefore(options) 5852 if err == nil { 5853 return result, nil 5854 } 5855 if !isRepeatableError(err) { 5856 return result, err 5857 } 5858 tries++ 5859 if tries >= 3 { 5860 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5861 return result, err 5862 } 5863 } 5864 5865 } 5866 5867 func (s *RetryLayerPostStore) GetPostsByIds(postIds []string) ([]*model.Post, error) { 5868 5869 tries := 0 5870 for { 5871 result, err := s.PostStore.GetPostsByIds(postIds) 5872 if err == nil { 5873 return result, nil 5874 } 5875 if !isRepeatableError(err) { 5876 return result, err 5877 } 5878 tries++ 5879 if tries >= 3 { 5880 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5881 return result, err 5882 } 5883 } 5884 5885 } 5886 5887 func (s *RetryLayerPostStore) GetPostsCreatedAt(channelID string, time int64) ([]*model.Post, error) { 5888 5889 tries := 0 5890 for { 5891 result, err := s.PostStore.GetPostsCreatedAt(channelID, time) 5892 if err == nil { 5893 return result, nil 5894 } 5895 if !isRepeatableError(err) { 5896 return result, err 5897 } 5898 tries++ 5899 if tries >= 3 { 5900 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5901 return result, err 5902 } 5903 } 5904 5905 } 5906 5907 func (s *RetryLayerPostStore) GetPostsSince(options model.GetPostsSinceOptions, allowFromCache bool) (*model.PostList, error) { 5908 5909 tries := 0 5910 for { 5911 result, err := s.PostStore.GetPostsSince(options, allowFromCache) 5912 if err == nil { 5913 return result, nil 5914 } 5915 if !isRepeatableError(err) { 5916 return result, err 5917 } 5918 tries++ 5919 if tries >= 3 { 5920 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5921 return result, err 5922 } 5923 } 5924 5925 } 5926 5927 func (s *RetryLayerPostStore) GetPostsSinceForSync(options model.GetPostsSinceForSyncOptions, cursor model.GetPostsSinceForSyncCursor, limit int) ([]*model.Post, model.GetPostsSinceForSyncCursor, error) { 5928 5929 tries := 0 5930 for { 5931 result, resultVar1, err := s.PostStore.GetPostsSinceForSync(options, cursor, limit) 5932 if err == nil { 5933 return result, resultVar1, nil 5934 } 5935 if !isRepeatableError(err) { 5936 return result, resultVar1, err 5937 } 5938 tries++ 5939 if tries >= 3 { 5940 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5941 return result, resultVar1, err 5942 } 5943 } 5944 5945 } 5946 5947 func (s *RetryLayerPostStore) GetRepliesForExport(parentID string) ([]*model.ReplyForExport, error) { 5948 5949 tries := 0 5950 for { 5951 result, err := s.PostStore.GetRepliesForExport(parentID) 5952 if err == nil { 5953 return result, nil 5954 } 5955 if !isRepeatableError(err) { 5956 return result, err 5957 } 5958 tries++ 5959 if tries >= 3 { 5960 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5961 return result, err 5962 } 5963 } 5964 5965 } 5966 5967 func (s *RetryLayerPostStore) GetSingle(id string, inclDeleted bool) (*model.Post, error) { 5968 5969 tries := 0 5970 for { 5971 result, err := s.PostStore.GetSingle(id, inclDeleted) 5972 if err == nil { 5973 return result, nil 5974 } 5975 if !isRepeatableError(err) { 5976 return result, err 5977 } 5978 tries++ 5979 if tries >= 3 { 5980 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5981 return result, err 5982 } 5983 } 5984 5985 } 5986 5987 func (s *RetryLayerPostStore) HasAutoResponsePostByUserSince(options model.GetPostsSinceOptions, userId string) (bool, error) { 5988 5989 tries := 0 5990 for { 5991 result, err := s.PostStore.HasAutoResponsePostByUserSince(options, userId) 5992 if err == nil { 5993 return result, nil 5994 } 5995 if !isRepeatableError(err) { 5996 return result, err 5997 } 5998 tries++ 5999 if tries >= 3 { 6000 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6001 return result, err 6002 } 6003 } 6004 6005 } 6006 6007 func (s *RetryLayerPostStore) InvalidateLastPostTimeCache(channelID string) { 6008 6009 s.PostStore.InvalidateLastPostTimeCache(channelID) 6010 6011 } 6012 6013 func (s *RetryLayerPostStore) Overwrite(post *model.Post) (*model.Post, error) { 6014 6015 tries := 0 6016 for { 6017 result, err := s.PostStore.Overwrite(post) 6018 if err == nil { 6019 return result, nil 6020 } 6021 if !isRepeatableError(err) { 6022 return result, err 6023 } 6024 tries++ 6025 if tries >= 3 { 6026 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6027 return result, err 6028 } 6029 } 6030 6031 } 6032 6033 func (s *RetryLayerPostStore) OverwriteMultiple(posts []*model.Post) ([]*model.Post, int, error) { 6034 6035 tries := 0 6036 for { 6037 result, resultVar1, err := s.PostStore.OverwriteMultiple(posts) 6038 if err == nil { 6039 return result, resultVar1, nil 6040 } 6041 if !isRepeatableError(err) { 6042 return result, resultVar1, err 6043 } 6044 tries++ 6045 if tries >= 3 { 6046 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6047 return result, resultVar1, err 6048 } 6049 } 6050 6051 } 6052 6053 func (s *RetryLayerPostStore) PermanentDeleteBatch(endTime int64, limit int64) (int64, error) { 6054 6055 tries := 0 6056 for { 6057 result, err := s.PostStore.PermanentDeleteBatch(endTime, limit) 6058 if err == nil { 6059 return result, nil 6060 } 6061 if !isRepeatableError(err) { 6062 return result, err 6063 } 6064 tries++ 6065 if tries >= 3 { 6066 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6067 return result, err 6068 } 6069 } 6070 6071 } 6072 6073 func (s *RetryLayerPostStore) PermanentDeleteBatchForRetentionPolicies(now int64, globalPolicyEndTime int64, limit int64, cursor model.RetentionPolicyCursor) (int64, model.RetentionPolicyCursor, error) { 6074 6075 tries := 0 6076 for { 6077 result, resultVar1, err := s.PostStore.PermanentDeleteBatchForRetentionPolicies(now, globalPolicyEndTime, limit, cursor) 6078 if err == nil { 6079 return result, resultVar1, nil 6080 } 6081 if !isRepeatableError(err) { 6082 return result, resultVar1, err 6083 } 6084 tries++ 6085 if tries >= 3 { 6086 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6087 return result, resultVar1, err 6088 } 6089 } 6090 6091 } 6092 6093 func (s *RetryLayerPostStore) PermanentDeleteByChannel(channelID string) error { 6094 6095 tries := 0 6096 for { 6097 err := s.PostStore.PermanentDeleteByChannel(channelID) 6098 if err == nil { 6099 return nil 6100 } 6101 if !isRepeatableError(err) { 6102 return err 6103 } 6104 tries++ 6105 if tries >= 3 { 6106 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6107 return err 6108 } 6109 } 6110 6111 } 6112 6113 func (s *RetryLayerPostStore) PermanentDeleteByUser(userID string) error { 6114 6115 tries := 0 6116 for { 6117 err := s.PostStore.PermanentDeleteByUser(userID) 6118 if err == nil { 6119 return nil 6120 } 6121 if !isRepeatableError(err) { 6122 return err 6123 } 6124 tries++ 6125 if tries >= 3 { 6126 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6127 return err 6128 } 6129 } 6130 6131 } 6132 6133 func (s *RetryLayerPostStore) Save(post *model.Post) (*model.Post, error) { 6134 6135 tries := 0 6136 for { 6137 result, err := s.PostStore.Save(post) 6138 if err == nil { 6139 return result, nil 6140 } 6141 if !isRepeatableError(err) { 6142 return result, err 6143 } 6144 tries++ 6145 if tries >= 3 { 6146 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6147 return result, err 6148 } 6149 } 6150 6151 } 6152 6153 func (s *RetryLayerPostStore) SaveMultiple(posts []*model.Post) ([]*model.Post, int, error) { 6154 6155 tries := 0 6156 for { 6157 result, resultVar1, err := s.PostStore.SaveMultiple(posts) 6158 if err == nil { 6159 return result, resultVar1, nil 6160 } 6161 if !isRepeatableError(err) { 6162 return result, resultVar1, err 6163 } 6164 tries++ 6165 if tries >= 3 { 6166 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6167 return result, resultVar1, err 6168 } 6169 } 6170 6171 } 6172 6173 func (s *RetryLayerPostStore) Search(teamID string, userID string, params *model.SearchParams) (*model.PostList, error) { 6174 6175 tries := 0 6176 for { 6177 result, err := s.PostStore.Search(teamID, userID, params) 6178 if err == nil { 6179 return result, nil 6180 } 6181 if !isRepeatableError(err) { 6182 return result, err 6183 } 6184 tries++ 6185 if tries >= 3 { 6186 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6187 return result, err 6188 } 6189 } 6190 6191 } 6192 6193 func (s *RetryLayerPostStore) SearchPostsInTeamForUser(paramsList []*model.SearchParams, userID string, teamID string, page int, perPage int) (*model.PostSearchResults, error) { 6194 6195 tries := 0 6196 for { 6197 result, err := s.PostStore.SearchPostsInTeamForUser(paramsList, userID, teamID, page, perPage) 6198 if err == nil { 6199 return result, nil 6200 } 6201 if !isRepeatableError(err) { 6202 return result, err 6203 } 6204 tries++ 6205 if tries >= 3 { 6206 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6207 return result, err 6208 } 6209 } 6210 6211 } 6212 6213 func (s *RetryLayerPostStore) Update(newPost *model.Post, oldPost *model.Post) (*model.Post, error) { 6214 6215 tries := 0 6216 for { 6217 result, err := s.PostStore.Update(newPost, oldPost) 6218 if err == nil { 6219 return result, nil 6220 } 6221 if !isRepeatableError(err) { 6222 return result, err 6223 } 6224 tries++ 6225 if tries >= 3 { 6226 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6227 return result, err 6228 } 6229 } 6230 6231 } 6232 6233 func (s *RetryLayerPreferenceStore) CleanupFlagsBatch(limit int64) (int64, error) { 6234 6235 tries := 0 6236 for { 6237 result, err := s.PreferenceStore.CleanupFlagsBatch(limit) 6238 if err == nil { 6239 return result, nil 6240 } 6241 if !isRepeatableError(err) { 6242 return result, err 6243 } 6244 tries++ 6245 if tries >= 3 { 6246 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6247 return result, err 6248 } 6249 } 6250 6251 } 6252 6253 func (s *RetryLayerPreferenceStore) Delete(userID string, category string, name string) error { 6254 6255 tries := 0 6256 for { 6257 err := s.PreferenceStore.Delete(userID, category, name) 6258 if err == nil { 6259 return nil 6260 } 6261 if !isRepeatableError(err) { 6262 return err 6263 } 6264 tries++ 6265 if tries >= 3 { 6266 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6267 return err 6268 } 6269 } 6270 6271 } 6272 6273 func (s *RetryLayerPreferenceStore) DeleteCategory(userID string, category string) error { 6274 6275 tries := 0 6276 for { 6277 err := s.PreferenceStore.DeleteCategory(userID, category) 6278 if err == nil { 6279 return nil 6280 } 6281 if !isRepeatableError(err) { 6282 return err 6283 } 6284 tries++ 6285 if tries >= 3 { 6286 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6287 return err 6288 } 6289 } 6290 6291 } 6292 6293 func (s *RetryLayerPreferenceStore) DeleteCategoryAndName(category string, name string) error { 6294 6295 tries := 0 6296 for { 6297 err := s.PreferenceStore.DeleteCategoryAndName(category, name) 6298 if err == nil { 6299 return nil 6300 } 6301 if !isRepeatableError(err) { 6302 return err 6303 } 6304 tries++ 6305 if tries >= 3 { 6306 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6307 return err 6308 } 6309 } 6310 6311 } 6312 6313 func (s *RetryLayerPreferenceStore) DeleteOrphanedRows(limit int) (int64, error) { 6314 6315 tries := 0 6316 for { 6317 result, err := s.PreferenceStore.DeleteOrphanedRows(limit) 6318 if err == nil { 6319 return result, nil 6320 } 6321 if !isRepeatableError(err) { 6322 return result, err 6323 } 6324 tries++ 6325 if tries >= 3 { 6326 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6327 return result, err 6328 } 6329 } 6330 6331 } 6332 6333 func (s *RetryLayerPreferenceStore) Get(userID string, category string, name string) (*model.Preference, error) { 6334 6335 tries := 0 6336 for { 6337 result, err := s.PreferenceStore.Get(userID, category, name) 6338 if err == nil { 6339 return result, nil 6340 } 6341 if !isRepeatableError(err) { 6342 return result, err 6343 } 6344 tries++ 6345 if tries >= 3 { 6346 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6347 return result, err 6348 } 6349 } 6350 6351 } 6352 6353 func (s *RetryLayerPreferenceStore) GetAll(userID string) (model.Preferences, error) { 6354 6355 tries := 0 6356 for { 6357 result, err := s.PreferenceStore.GetAll(userID) 6358 if err == nil { 6359 return result, nil 6360 } 6361 if !isRepeatableError(err) { 6362 return result, err 6363 } 6364 tries++ 6365 if tries >= 3 { 6366 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6367 return result, err 6368 } 6369 } 6370 6371 } 6372 6373 func (s *RetryLayerPreferenceStore) GetCategory(userID string, category string) (model.Preferences, error) { 6374 6375 tries := 0 6376 for { 6377 result, err := s.PreferenceStore.GetCategory(userID, category) 6378 if err == nil { 6379 return result, nil 6380 } 6381 if !isRepeatableError(err) { 6382 return result, err 6383 } 6384 tries++ 6385 if tries >= 3 { 6386 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6387 return result, err 6388 } 6389 } 6390 6391 } 6392 6393 func (s *RetryLayerPreferenceStore) PermanentDeleteByUser(userID string) error { 6394 6395 tries := 0 6396 for { 6397 err := s.PreferenceStore.PermanentDeleteByUser(userID) 6398 if err == nil { 6399 return nil 6400 } 6401 if !isRepeatableError(err) { 6402 return err 6403 } 6404 tries++ 6405 if tries >= 3 { 6406 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6407 return err 6408 } 6409 } 6410 6411 } 6412 6413 func (s *RetryLayerPreferenceStore) Save(preferences *model.Preferences) error { 6414 6415 tries := 0 6416 for { 6417 err := s.PreferenceStore.Save(preferences) 6418 if err == nil { 6419 return nil 6420 } 6421 if !isRepeatableError(err) { 6422 return err 6423 } 6424 tries++ 6425 if tries >= 3 { 6426 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6427 return err 6428 } 6429 } 6430 6431 } 6432 6433 func (s *RetryLayerProductNoticesStore) Clear(notices []string) error { 6434 6435 tries := 0 6436 for { 6437 err := s.ProductNoticesStore.Clear(notices) 6438 if err == nil { 6439 return nil 6440 } 6441 if !isRepeatableError(err) { 6442 return err 6443 } 6444 tries++ 6445 if tries >= 3 { 6446 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6447 return err 6448 } 6449 } 6450 6451 } 6452 6453 func (s *RetryLayerProductNoticesStore) ClearOldNotices(currentNotices *model.ProductNotices) error { 6454 6455 tries := 0 6456 for { 6457 err := s.ProductNoticesStore.ClearOldNotices(currentNotices) 6458 if err == nil { 6459 return nil 6460 } 6461 if !isRepeatableError(err) { 6462 return err 6463 } 6464 tries++ 6465 if tries >= 3 { 6466 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6467 return err 6468 } 6469 } 6470 6471 } 6472 6473 func (s *RetryLayerProductNoticesStore) GetViews(userID string) ([]model.ProductNoticeViewState, error) { 6474 6475 tries := 0 6476 for { 6477 result, err := s.ProductNoticesStore.GetViews(userID) 6478 if err == nil { 6479 return result, nil 6480 } 6481 if !isRepeatableError(err) { 6482 return result, err 6483 } 6484 tries++ 6485 if tries >= 3 { 6486 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6487 return result, err 6488 } 6489 } 6490 6491 } 6492 6493 func (s *RetryLayerProductNoticesStore) View(userID string, notices []string) error { 6494 6495 tries := 0 6496 for { 6497 err := s.ProductNoticesStore.View(userID, notices) 6498 if err == nil { 6499 return nil 6500 } 6501 if !isRepeatableError(err) { 6502 return err 6503 } 6504 tries++ 6505 if tries >= 3 { 6506 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6507 return err 6508 } 6509 } 6510 6511 } 6512 6513 func (s *RetryLayerReactionStore) BulkGetForPosts(postIds []string) ([]*model.Reaction, error) { 6514 6515 tries := 0 6516 for { 6517 result, err := s.ReactionStore.BulkGetForPosts(postIds) 6518 if err == nil { 6519 return result, nil 6520 } 6521 if !isRepeatableError(err) { 6522 return result, err 6523 } 6524 tries++ 6525 if tries >= 3 { 6526 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6527 return result, err 6528 } 6529 } 6530 6531 } 6532 6533 func (s *RetryLayerReactionStore) Delete(reaction *model.Reaction) (*model.Reaction, error) { 6534 6535 tries := 0 6536 for { 6537 result, err := s.ReactionStore.Delete(reaction) 6538 if err == nil { 6539 return result, nil 6540 } 6541 if !isRepeatableError(err) { 6542 return result, err 6543 } 6544 tries++ 6545 if tries >= 3 { 6546 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6547 return result, err 6548 } 6549 } 6550 6551 } 6552 6553 func (s *RetryLayerReactionStore) DeleteAllWithEmojiName(emojiName string) error { 6554 6555 tries := 0 6556 for { 6557 err := s.ReactionStore.DeleteAllWithEmojiName(emojiName) 6558 if err == nil { 6559 return nil 6560 } 6561 if !isRepeatableError(err) { 6562 return err 6563 } 6564 tries++ 6565 if tries >= 3 { 6566 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6567 return err 6568 } 6569 } 6570 6571 } 6572 6573 func (s *RetryLayerReactionStore) DeleteOrphanedRows(limit int) (int64, error) { 6574 6575 tries := 0 6576 for { 6577 result, err := s.ReactionStore.DeleteOrphanedRows(limit) 6578 if err == nil { 6579 return result, nil 6580 } 6581 if !isRepeatableError(err) { 6582 return result, err 6583 } 6584 tries++ 6585 if tries >= 3 { 6586 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6587 return result, err 6588 } 6589 } 6590 6591 } 6592 6593 func (s *RetryLayerReactionStore) GetForPost(postID string, allowFromCache bool) ([]*model.Reaction, error) { 6594 6595 tries := 0 6596 for { 6597 result, err := s.ReactionStore.GetForPost(postID, allowFromCache) 6598 if err == nil { 6599 return result, nil 6600 } 6601 if !isRepeatableError(err) { 6602 return result, err 6603 } 6604 tries++ 6605 if tries >= 3 { 6606 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6607 return result, err 6608 } 6609 } 6610 6611 } 6612 6613 func (s *RetryLayerReactionStore) GetForPostSince(postId string, since int64, excludeRemoteId string, inclDeleted bool) ([]*model.Reaction, error) { 6614 6615 tries := 0 6616 for { 6617 result, err := s.ReactionStore.GetForPostSince(postId, since, excludeRemoteId, inclDeleted) 6618 if err == nil { 6619 return result, nil 6620 } 6621 if !isRepeatableError(err) { 6622 return result, err 6623 } 6624 tries++ 6625 if tries >= 3 { 6626 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6627 return result, err 6628 } 6629 } 6630 6631 } 6632 6633 func (s *RetryLayerReactionStore) PermanentDeleteBatch(endTime int64, limit int64) (int64, error) { 6634 6635 tries := 0 6636 for { 6637 result, err := s.ReactionStore.PermanentDeleteBatch(endTime, limit) 6638 if err == nil { 6639 return result, nil 6640 } 6641 if !isRepeatableError(err) { 6642 return result, err 6643 } 6644 tries++ 6645 if tries >= 3 { 6646 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6647 return result, err 6648 } 6649 } 6650 6651 } 6652 6653 func (s *RetryLayerReactionStore) Save(reaction *model.Reaction) (*model.Reaction, error) { 6654 6655 tries := 0 6656 for { 6657 result, err := s.ReactionStore.Save(reaction) 6658 if err == nil { 6659 return result, nil 6660 } 6661 if !isRepeatableError(err) { 6662 return result, err 6663 } 6664 tries++ 6665 if tries >= 3 { 6666 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6667 return result, err 6668 } 6669 } 6670 6671 } 6672 6673 func (s *RetryLayerRemoteClusterStore) Delete(remoteClusterId string) (bool, error) { 6674 6675 tries := 0 6676 for { 6677 result, err := s.RemoteClusterStore.Delete(remoteClusterId) 6678 if err == nil { 6679 return result, nil 6680 } 6681 if !isRepeatableError(err) { 6682 return result, err 6683 } 6684 tries++ 6685 if tries >= 3 { 6686 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6687 return result, err 6688 } 6689 } 6690 6691 } 6692 6693 func (s *RetryLayerRemoteClusterStore) Get(remoteClusterId string) (*model.RemoteCluster, error) { 6694 6695 tries := 0 6696 for { 6697 result, err := s.RemoteClusterStore.Get(remoteClusterId) 6698 if err == nil { 6699 return result, nil 6700 } 6701 if !isRepeatableError(err) { 6702 return result, err 6703 } 6704 tries++ 6705 if tries >= 3 { 6706 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6707 return result, err 6708 } 6709 } 6710 6711 } 6712 6713 func (s *RetryLayerRemoteClusterStore) GetAll(filter model.RemoteClusterQueryFilter) ([]*model.RemoteCluster, error) { 6714 6715 tries := 0 6716 for { 6717 result, err := s.RemoteClusterStore.GetAll(filter) 6718 if err == nil { 6719 return result, nil 6720 } 6721 if !isRepeatableError(err) { 6722 return result, err 6723 } 6724 tries++ 6725 if tries >= 3 { 6726 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6727 return result, err 6728 } 6729 } 6730 6731 } 6732 6733 func (s *RetryLayerRemoteClusterStore) Save(rc *model.RemoteCluster) (*model.RemoteCluster, error) { 6734 6735 tries := 0 6736 for { 6737 result, err := s.RemoteClusterStore.Save(rc) 6738 if err == nil { 6739 return result, nil 6740 } 6741 if !isRepeatableError(err) { 6742 return result, err 6743 } 6744 tries++ 6745 if tries >= 3 { 6746 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6747 return result, err 6748 } 6749 } 6750 6751 } 6752 6753 func (s *RetryLayerRemoteClusterStore) SetLastPingAt(remoteClusterId string) error { 6754 6755 tries := 0 6756 for { 6757 err := s.RemoteClusterStore.SetLastPingAt(remoteClusterId) 6758 if err == nil { 6759 return nil 6760 } 6761 if !isRepeatableError(err) { 6762 return err 6763 } 6764 tries++ 6765 if tries >= 3 { 6766 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6767 return err 6768 } 6769 } 6770 6771 } 6772 6773 func (s *RetryLayerRemoteClusterStore) Update(rc *model.RemoteCluster) (*model.RemoteCluster, error) { 6774 6775 tries := 0 6776 for { 6777 result, err := s.RemoteClusterStore.Update(rc) 6778 if err == nil { 6779 return result, nil 6780 } 6781 if !isRepeatableError(err) { 6782 return result, err 6783 } 6784 tries++ 6785 if tries >= 3 { 6786 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6787 return result, err 6788 } 6789 } 6790 6791 } 6792 6793 func (s *RetryLayerRemoteClusterStore) UpdateTopics(remoteClusterId string, topics string) (*model.RemoteCluster, error) { 6794 6795 tries := 0 6796 for { 6797 result, err := s.RemoteClusterStore.UpdateTopics(remoteClusterId, topics) 6798 if err == nil { 6799 return result, nil 6800 } 6801 if !isRepeatableError(err) { 6802 return result, err 6803 } 6804 tries++ 6805 if tries >= 3 { 6806 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6807 return result, err 6808 } 6809 } 6810 6811 } 6812 6813 func (s *RetryLayerRetentionPolicyStore) AddChannels(policyId string, channelIds []string) error { 6814 6815 tries := 0 6816 for { 6817 err := s.RetentionPolicyStore.AddChannels(policyId, channelIds) 6818 if err == nil { 6819 return nil 6820 } 6821 if !isRepeatableError(err) { 6822 return err 6823 } 6824 tries++ 6825 if tries >= 3 { 6826 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6827 return err 6828 } 6829 } 6830 6831 } 6832 6833 func (s *RetryLayerRetentionPolicyStore) AddTeams(policyId string, teamIds []string) error { 6834 6835 tries := 0 6836 for { 6837 err := s.RetentionPolicyStore.AddTeams(policyId, teamIds) 6838 if err == nil { 6839 return nil 6840 } 6841 if !isRepeatableError(err) { 6842 return err 6843 } 6844 tries++ 6845 if tries >= 3 { 6846 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6847 return err 6848 } 6849 } 6850 6851 } 6852 6853 func (s *RetryLayerRetentionPolicyStore) Delete(id string) error { 6854 6855 tries := 0 6856 for { 6857 err := s.RetentionPolicyStore.Delete(id) 6858 if err == nil { 6859 return nil 6860 } 6861 if !isRepeatableError(err) { 6862 return err 6863 } 6864 tries++ 6865 if tries >= 3 { 6866 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6867 return err 6868 } 6869 } 6870 6871 } 6872 6873 func (s *RetryLayerRetentionPolicyStore) DeleteOrphanedRows(limit int) (int64, error) { 6874 6875 tries := 0 6876 for { 6877 result, err := s.RetentionPolicyStore.DeleteOrphanedRows(limit) 6878 if err == nil { 6879 return result, nil 6880 } 6881 if !isRepeatableError(err) { 6882 return result, err 6883 } 6884 tries++ 6885 if tries >= 3 { 6886 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6887 return result, err 6888 } 6889 } 6890 6891 } 6892 6893 func (s *RetryLayerRetentionPolicyStore) Get(id string) (*model.RetentionPolicyWithTeamAndChannelCounts, error) { 6894 6895 tries := 0 6896 for { 6897 result, err := s.RetentionPolicyStore.Get(id) 6898 if err == nil { 6899 return result, nil 6900 } 6901 if !isRepeatableError(err) { 6902 return result, err 6903 } 6904 tries++ 6905 if tries >= 3 { 6906 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6907 return result, err 6908 } 6909 } 6910 6911 } 6912 6913 func (s *RetryLayerRetentionPolicyStore) GetAll(offset int, limit int) ([]*model.RetentionPolicyWithTeamAndChannelCounts, error) { 6914 6915 tries := 0 6916 for { 6917 result, err := s.RetentionPolicyStore.GetAll(offset, limit) 6918 if err == nil { 6919 return result, nil 6920 } 6921 if !isRepeatableError(err) { 6922 return result, err 6923 } 6924 tries++ 6925 if tries >= 3 { 6926 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6927 return result, err 6928 } 6929 } 6930 6931 } 6932 6933 func (s *RetryLayerRetentionPolicyStore) GetChannelPoliciesCountForUser(userID string) (int64, error) { 6934 6935 tries := 0 6936 for { 6937 result, err := s.RetentionPolicyStore.GetChannelPoliciesCountForUser(userID) 6938 if err == nil { 6939 return result, nil 6940 } 6941 if !isRepeatableError(err) { 6942 return result, err 6943 } 6944 tries++ 6945 if tries >= 3 { 6946 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6947 return result, err 6948 } 6949 } 6950 6951 } 6952 6953 func (s *RetryLayerRetentionPolicyStore) GetChannelPoliciesForUser(userID string, offset int, limit int) ([]*model.RetentionPolicyForChannel, error) { 6954 6955 tries := 0 6956 for { 6957 result, err := s.RetentionPolicyStore.GetChannelPoliciesForUser(userID, offset, limit) 6958 if err == nil { 6959 return result, nil 6960 } 6961 if !isRepeatableError(err) { 6962 return result, err 6963 } 6964 tries++ 6965 if tries >= 3 { 6966 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6967 return result, err 6968 } 6969 } 6970 6971 } 6972 6973 func (s *RetryLayerRetentionPolicyStore) GetChannels(policyId string, offset int, limit int) (model.ChannelListWithTeamData, error) { 6974 6975 tries := 0 6976 for { 6977 result, err := s.RetentionPolicyStore.GetChannels(policyId, offset, limit) 6978 if err == nil { 6979 return result, nil 6980 } 6981 if !isRepeatableError(err) { 6982 return result, err 6983 } 6984 tries++ 6985 if tries >= 3 { 6986 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6987 return result, err 6988 } 6989 } 6990 6991 } 6992 6993 func (s *RetryLayerRetentionPolicyStore) GetChannelsCount(policyId string) (int64, error) { 6994 6995 tries := 0 6996 for { 6997 result, err := s.RetentionPolicyStore.GetChannelsCount(policyId) 6998 if err == nil { 6999 return result, nil 7000 } 7001 if !isRepeatableError(err) { 7002 return result, err 7003 } 7004 tries++ 7005 if tries >= 3 { 7006 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7007 return result, err 7008 } 7009 } 7010 7011 } 7012 7013 func (s *RetryLayerRetentionPolicyStore) GetCount() (int64, error) { 7014 7015 tries := 0 7016 for { 7017 result, err := s.RetentionPolicyStore.GetCount() 7018 if err == nil { 7019 return result, nil 7020 } 7021 if !isRepeatableError(err) { 7022 return result, err 7023 } 7024 tries++ 7025 if tries >= 3 { 7026 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7027 return result, err 7028 } 7029 } 7030 7031 } 7032 7033 func (s *RetryLayerRetentionPolicyStore) GetTeamPoliciesCountForUser(userID string) (int64, error) { 7034 7035 tries := 0 7036 for { 7037 result, err := s.RetentionPolicyStore.GetTeamPoliciesCountForUser(userID) 7038 if err == nil { 7039 return result, nil 7040 } 7041 if !isRepeatableError(err) { 7042 return result, err 7043 } 7044 tries++ 7045 if tries >= 3 { 7046 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7047 return result, err 7048 } 7049 } 7050 7051 } 7052 7053 func (s *RetryLayerRetentionPolicyStore) GetTeamPoliciesForUser(userID string, offset int, limit int) ([]*model.RetentionPolicyForTeam, error) { 7054 7055 tries := 0 7056 for { 7057 result, err := s.RetentionPolicyStore.GetTeamPoliciesForUser(userID, offset, limit) 7058 if err == nil { 7059 return result, nil 7060 } 7061 if !isRepeatableError(err) { 7062 return result, err 7063 } 7064 tries++ 7065 if tries >= 3 { 7066 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7067 return result, err 7068 } 7069 } 7070 7071 } 7072 7073 func (s *RetryLayerRetentionPolicyStore) GetTeams(policyId string, offset int, limit int) ([]*model.Team, error) { 7074 7075 tries := 0 7076 for { 7077 result, err := s.RetentionPolicyStore.GetTeams(policyId, offset, limit) 7078 if err == nil { 7079 return result, nil 7080 } 7081 if !isRepeatableError(err) { 7082 return result, err 7083 } 7084 tries++ 7085 if tries >= 3 { 7086 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7087 return result, err 7088 } 7089 } 7090 7091 } 7092 7093 func (s *RetryLayerRetentionPolicyStore) GetTeamsCount(policyId string) (int64, error) { 7094 7095 tries := 0 7096 for { 7097 result, err := s.RetentionPolicyStore.GetTeamsCount(policyId) 7098 if err == nil { 7099 return result, nil 7100 } 7101 if !isRepeatableError(err) { 7102 return result, err 7103 } 7104 tries++ 7105 if tries >= 3 { 7106 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7107 return result, err 7108 } 7109 } 7110 7111 } 7112 7113 func (s *RetryLayerRetentionPolicyStore) Patch(patch *model.RetentionPolicyWithTeamAndChannelIDs) (*model.RetentionPolicyWithTeamAndChannelCounts, error) { 7114 7115 tries := 0 7116 for { 7117 result, err := s.RetentionPolicyStore.Patch(patch) 7118 if err == nil { 7119 return result, nil 7120 } 7121 if !isRepeatableError(err) { 7122 return result, err 7123 } 7124 tries++ 7125 if tries >= 3 { 7126 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7127 return result, err 7128 } 7129 } 7130 7131 } 7132 7133 func (s *RetryLayerRetentionPolicyStore) RemoveChannels(policyId string, channelIds []string) error { 7134 7135 tries := 0 7136 for { 7137 err := s.RetentionPolicyStore.RemoveChannels(policyId, channelIds) 7138 if err == nil { 7139 return nil 7140 } 7141 if !isRepeatableError(err) { 7142 return err 7143 } 7144 tries++ 7145 if tries >= 3 { 7146 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7147 return err 7148 } 7149 } 7150 7151 } 7152 7153 func (s *RetryLayerRetentionPolicyStore) RemoveTeams(policyId string, teamIds []string) error { 7154 7155 tries := 0 7156 for { 7157 err := s.RetentionPolicyStore.RemoveTeams(policyId, teamIds) 7158 if err == nil { 7159 return nil 7160 } 7161 if !isRepeatableError(err) { 7162 return err 7163 } 7164 tries++ 7165 if tries >= 3 { 7166 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7167 return err 7168 } 7169 } 7170 7171 } 7172 7173 func (s *RetryLayerRetentionPolicyStore) Save(policy *model.RetentionPolicyWithTeamAndChannelIDs) (*model.RetentionPolicyWithTeamAndChannelCounts, error) { 7174 7175 tries := 0 7176 for { 7177 result, err := s.RetentionPolicyStore.Save(policy) 7178 if err == nil { 7179 return result, nil 7180 } 7181 if !isRepeatableError(err) { 7182 return result, err 7183 } 7184 tries++ 7185 if tries >= 3 { 7186 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7187 return result, err 7188 } 7189 } 7190 7191 } 7192 7193 func (s *RetryLayerRoleStore) AllChannelSchemeRoles() ([]*model.Role, error) { 7194 7195 tries := 0 7196 for { 7197 result, err := s.RoleStore.AllChannelSchemeRoles() 7198 if err == nil { 7199 return result, nil 7200 } 7201 if !isRepeatableError(err) { 7202 return result, err 7203 } 7204 tries++ 7205 if tries >= 3 { 7206 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7207 return result, err 7208 } 7209 } 7210 7211 } 7212 7213 func (s *RetryLayerRoleStore) ChannelHigherScopedPermissions(roleNames []string) (map[string]*model.RolePermissions, error) { 7214 7215 tries := 0 7216 for { 7217 result, err := s.RoleStore.ChannelHigherScopedPermissions(roleNames) 7218 if err == nil { 7219 return result, nil 7220 } 7221 if !isRepeatableError(err) { 7222 return result, err 7223 } 7224 tries++ 7225 if tries >= 3 { 7226 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7227 return result, err 7228 } 7229 } 7230 7231 } 7232 7233 func (s *RetryLayerRoleStore) ChannelRolesUnderTeamRole(roleName string) ([]*model.Role, error) { 7234 7235 tries := 0 7236 for { 7237 result, err := s.RoleStore.ChannelRolesUnderTeamRole(roleName) 7238 if err == nil { 7239 return result, nil 7240 } 7241 if !isRepeatableError(err) { 7242 return result, err 7243 } 7244 tries++ 7245 if tries >= 3 { 7246 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7247 return result, err 7248 } 7249 } 7250 7251 } 7252 7253 func (s *RetryLayerRoleStore) Delete(roleID string) (*model.Role, error) { 7254 7255 tries := 0 7256 for { 7257 result, err := s.RoleStore.Delete(roleID) 7258 if err == nil { 7259 return result, nil 7260 } 7261 if !isRepeatableError(err) { 7262 return result, err 7263 } 7264 tries++ 7265 if tries >= 3 { 7266 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7267 return result, err 7268 } 7269 } 7270 7271 } 7272 7273 func (s *RetryLayerRoleStore) Get(roleID string) (*model.Role, error) { 7274 7275 tries := 0 7276 for { 7277 result, err := s.RoleStore.Get(roleID) 7278 if err == nil { 7279 return result, nil 7280 } 7281 if !isRepeatableError(err) { 7282 return result, err 7283 } 7284 tries++ 7285 if tries >= 3 { 7286 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7287 return result, err 7288 } 7289 } 7290 7291 } 7292 7293 func (s *RetryLayerRoleStore) GetAll() ([]*model.Role, error) { 7294 7295 tries := 0 7296 for { 7297 result, err := s.RoleStore.GetAll() 7298 if err == nil { 7299 return result, nil 7300 } 7301 if !isRepeatableError(err) { 7302 return result, err 7303 } 7304 tries++ 7305 if tries >= 3 { 7306 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7307 return result, err 7308 } 7309 } 7310 7311 } 7312 7313 func (s *RetryLayerRoleStore) GetByName(ctx context.Context, name string) (*model.Role, error) { 7314 7315 tries := 0 7316 for { 7317 result, err := s.RoleStore.GetByName(ctx, name) 7318 if err == nil { 7319 return result, nil 7320 } 7321 if !isRepeatableError(err) { 7322 return result, err 7323 } 7324 tries++ 7325 if tries >= 3 { 7326 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7327 return result, err 7328 } 7329 } 7330 7331 } 7332 7333 func (s *RetryLayerRoleStore) GetByNames(names []string) ([]*model.Role, error) { 7334 7335 tries := 0 7336 for { 7337 result, err := s.RoleStore.GetByNames(names) 7338 if err == nil { 7339 return result, nil 7340 } 7341 if !isRepeatableError(err) { 7342 return result, err 7343 } 7344 tries++ 7345 if tries >= 3 { 7346 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7347 return result, err 7348 } 7349 } 7350 7351 } 7352 7353 func (s *RetryLayerRoleStore) PermanentDeleteAll() error { 7354 7355 tries := 0 7356 for { 7357 err := s.RoleStore.PermanentDeleteAll() 7358 if err == nil { 7359 return nil 7360 } 7361 if !isRepeatableError(err) { 7362 return err 7363 } 7364 tries++ 7365 if tries >= 3 { 7366 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7367 return err 7368 } 7369 } 7370 7371 } 7372 7373 func (s *RetryLayerRoleStore) Save(role *model.Role) (*model.Role, error) { 7374 7375 tries := 0 7376 for { 7377 result, err := s.RoleStore.Save(role) 7378 if err == nil { 7379 return result, nil 7380 } 7381 if !isRepeatableError(err) { 7382 return result, err 7383 } 7384 tries++ 7385 if tries >= 3 { 7386 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7387 return result, err 7388 } 7389 } 7390 7391 } 7392 7393 func (s *RetryLayerSchemeStore) CountByScope(scope string) (int64, error) { 7394 7395 tries := 0 7396 for { 7397 result, err := s.SchemeStore.CountByScope(scope) 7398 if err == nil { 7399 return result, nil 7400 } 7401 if !isRepeatableError(err) { 7402 return result, err 7403 } 7404 tries++ 7405 if tries >= 3 { 7406 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7407 return result, err 7408 } 7409 } 7410 7411 } 7412 7413 func (s *RetryLayerSchemeStore) CountWithoutPermission(scope string, permissionID string, roleScope model.RoleScope, roleType model.RoleType) (int64, error) { 7414 7415 tries := 0 7416 for { 7417 result, err := s.SchemeStore.CountWithoutPermission(scope, permissionID, roleScope, roleType) 7418 if err == nil { 7419 return result, nil 7420 } 7421 if !isRepeatableError(err) { 7422 return result, err 7423 } 7424 tries++ 7425 if tries >= 3 { 7426 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7427 return result, err 7428 } 7429 } 7430 7431 } 7432 7433 func (s *RetryLayerSchemeStore) Delete(schemeID string) (*model.Scheme, error) { 7434 7435 tries := 0 7436 for { 7437 result, err := s.SchemeStore.Delete(schemeID) 7438 if err == nil { 7439 return result, nil 7440 } 7441 if !isRepeatableError(err) { 7442 return result, err 7443 } 7444 tries++ 7445 if tries >= 3 { 7446 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7447 return result, err 7448 } 7449 } 7450 7451 } 7452 7453 func (s *RetryLayerSchemeStore) Get(schemeID string) (*model.Scheme, error) { 7454 7455 tries := 0 7456 for { 7457 result, err := s.SchemeStore.Get(schemeID) 7458 if err == nil { 7459 return result, nil 7460 } 7461 if !isRepeatableError(err) { 7462 return result, err 7463 } 7464 tries++ 7465 if tries >= 3 { 7466 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7467 return result, err 7468 } 7469 } 7470 7471 } 7472 7473 func (s *RetryLayerSchemeStore) GetAllPage(scope string, offset int, limit int) ([]*model.Scheme, error) { 7474 7475 tries := 0 7476 for { 7477 result, err := s.SchemeStore.GetAllPage(scope, offset, limit) 7478 if err == nil { 7479 return result, nil 7480 } 7481 if !isRepeatableError(err) { 7482 return result, err 7483 } 7484 tries++ 7485 if tries >= 3 { 7486 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7487 return result, err 7488 } 7489 } 7490 7491 } 7492 7493 func (s *RetryLayerSchemeStore) GetByName(schemeName string) (*model.Scheme, error) { 7494 7495 tries := 0 7496 for { 7497 result, err := s.SchemeStore.GetByName(schemeName) 7498 if err == nil { 7499 return result, nil 7500 } 7501 if !isRepeatableError(err) { 7502 return result, err 7503 } 7504 tries++ 7505 if tries >= 3 { 7506 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7507 return result, err 7508 } 7509 } 7510 7511 } 7512 7513 func (s *RetryLayerSchemeStore) PermanentDeleteAll() error { 7514 7515 tries := 0 7516 for { 7517 err := s.SchemeStore.PermanentDeleteAll() 7518 if err == nil { 7519 return nil 7520 } 7521 if !isRepeatableError(err) { 7522 return err 7523 } 7524 tries++ 7525 if tries >= 3 { 7526 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7527 return err 7528 } 7529 } 7530 7531 } 7532 7533 func (s *RetryLayerSchemeStore) Save(scheme *model.Scheme) (*model.Scheme, error) { 7534 7535 tries := 0 7536 for { 7537 result, err := s.SchemeStore.Save(scheme) 7538 if err == nil { 7539 return result, nil 7540 } 7541 if !isRepeatableError(err) { 7542 return result, err 7543 } 7544 tries++ 7545 if tries >= 3 { 7546 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7547 return result, err 7548 } 7549 } 7550 7551 } 7552 7553 func (s *RetryLayerSessionStore) AnalyticsSessionCount() (int64, error) { 7554 7555 tries := 0 7556 for { 7557 result, err := s.SessionStore.AnalyticsSessionCount() 7558 if err == nil { 7559 return result, nil 7560 } 7561 if !isRepeatableError(err) { 7562 return result, err 7563 } 7564 tries++ 7565 if tries >= 3 { 7566 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7567 return result, err 7568 } 7569 } 7570 7571 } 7572 7573 func (s *RetryLayerSessionStore) Cleanup(expiryTime int64, batchSize int64) { 7574 7575 s.SessionStore.Cleanup(expiryTime, batchSize) 7576 7577 } 7578 7579 func (s *RetryLayerSessionStore) Get(ctx context.Context, sessionIDOrToken string) (*model.Session, error) { 7580 7581 tries := 0 7582 for { 7583 result, err := s.SessionStore.Get(ctx, sessionIDOrToken) 7584 if err == nil { 7585 return result, nil 7586 } 7587 if !isRepeatableError(err) { 7588 return result, err 7589 } 7590 tries++ 7591 if tries >= 3 { 7592 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7593 return result, err 7594 } 7595 } 7596 7597 } 7598 7599 func (s *RetryLayerSessionStore) GetSessions(userID string) ([]*model.Session, error) { 7600 7601 tries := 0 7602 for { 7603 result, err := s.SessionStore.GetSessions(userID) 7604 if err == nil { 7605 return result, nil 7606 } 7607 if !isRepeatableError(err) { 7608 return result, err 7609 } 7610 tries++ 7611 if tries >= 3 { 7612 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7613 return result, err 7614 } 7615 } 7616 7617 } 7618 7619 func (s *RetryLayerSessionStore) GetSessionsExpired(thresholdMillis int64, mobileOnly bool, unnotifiedOnly bool) ([]*model.Session, error) { 7620 7621 tries := 0 7622 for { 7623 result, err := s.SessionStore.GetSessionsExpired(thresholdMillis, mobileOnly, unnotifiedOnly) 7624 if err == nil { 7625 return result, nil 7626 } 7627 if !isRepeatableError(err) { 7628 return result, err 7629 } 7630 tries++ 7631 if tries >= 3 { 7632 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7633 return result, err 7634 } 7635 } 7636 7637 } 7638 7639 func (s *RetryLayerSessionStore) GetSessionsWithActiveDeviceIds(userID string) ([]*model.Session, error) { 7640 7641 tries := 0 7642 for { 7643 result, err := s.SessionStore.GetSessionsWithActiveDeviceIds(userID) 7644 if err == nil { 7645 return result, nil 7646 } 7647 if !isRepeatableError(err) { 7648 return result, err 7649 } 7650 tries++ 7651 if tries >= 3 { 7652 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7653 return result, err 7654 } 7655 } 7656 7657 } 7658 7659 func (s *RetryLayerSessionStore) PermanentDeleteSessionsByUser(teamID string) error { 7660 7661 tries := 0 7662 for { 7663 err := s.SessionStore.PermanentDeleteSessionsByUser(teamID) 7664 if err == nil { 7665 return nil 7666 } 7667 if !isRepeatableError(err) { 7668 return err 7669 } 7670 tries++ 7671 if tries >= 3 { 7672 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7673 return err 7674 } 7675 } 7676 7677 } 7678 7679 func (s *RetryLayerSessionStore) Remove(sessionIDOrToken string) error { 7680 7681 tries := 0 7682 for { 7683 err := s.SessionStore.Remove(sessionIDOrToken) 7684 if err == nil { 7685 return nil 7686 } 7687 if !isRepeatableError(err) { 7688 return err 7689 } 7690 tries++ 7691 if tries >= 3 { 7692 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7693 return err 7694 } 7695 } 7696 7697 } 7698 7699 func (s *RetryLayerSessionStore) RemoveAllSessions() error { 7700 7701 tries := 0 7702 for { 7703 err := s.SessionStore.RemoveAllSessions() 7704 if err == nil { 7705 return nil 7706 } 7707 if !isRepeatableError(err) { 7708 return err 7709 } 7710 tries++ 7711 if tries >= 3 { 7712 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7713 return err 7714 } 7715 } 7716 7717 } 7718 7719 func (s *RetryLayerSessionStore) Save(session *model.Session) (*model.Session, error) { 7720 7721 tries := 0 7722 for { 7723 result, err := s.SessionStore.Save(session) 7724 if err == nil { 7725 return result, nil 7726 } 7727 if !isRepeatableError(err) { 7728 return result, err 7729 } 7730 tries++ 7731 if tries >= 3 { 7732 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7733 return result, err 7734 } 7735 } 7736 7737 } 7738 7739 func (s *RetryLayerSessionStore) UpdateDeviceId(id string, deviceID string, expiresAt int64) (string, error) { 7740 7741 tries := 0 7742 for { 7743 result, err := s.SessionStore.UpdateDeviceId(id, deviceID, expiresAt) 7744 if err == nil { 7745 return result, nil 7746 } 7747 if !isRepeatableError(err) { 7748 return result, err 7749 } 7750 tries++ 7751 if tries >= 3 { 7752 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7753 return result, err 7754 } 7755 } 7756 7757 } 7758 7759 func (s *RetryLayerSessionStore) UpdateExpiredNotify(sessionid string, notified bool) error { 7760 7761 tries := 0 7762 for { 7763 err := s.SessionStore.UpdateExpiredNotify(sessionid, notified) 7764 if err == nil { 7765 return nil 7766 } 7767 if !isRepeatableError(err) { 7768 return err 7769 } 7770 tries++ 7771 if tries >= 3 { 7772 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7773 return err 7774 } 7775 } 7776 7777 } 7778 7779 func (s *RetryLayerSessionStore) UpdateExpiresAt(sessionID string, time int64) error { 7780 7781 tries := 0 7782 for { 7783 err := s.SessionStore.UpdateExpiresAt(sessionID, time) 7784 if err == nil { 7785 return nil 7786 } 7787 if !isRepeatableError(err) { 7788 return err 7789 } 7790 tries++ 7791 if tries >= 3 { 7792 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7793 return err 7794 } 7795 } 7796 7797 } 7798 7799 func (s *RetryLayerSessionStore) UpdateLastActivityAt(sessionID string, time int64) error { 7800 7801 tries := 0 7802 for { 7803 err := s.SessionStore.UpdateLastActivityAt(sessionID, time) 7804 if err == nil { 7805 return nil 7806 } 7807 if !isRepeatableError(err) { 7808 return err 7809 } 7810 tries++ 7811 if tries >= 3 { 7812 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7813 return err 7814 } 7815 } 7816 7817 } 7818 7819 func (s *RetryLayerSessionStore) UpdateProps(session *model.Session) error { 7820 7821 tries := 0 7822 for { 7823 err := s.SessionStore.UpdateProps(session) 7824 if err == nil { 7825 return nil 7826 } 7827 if !isRepeatableError(err) { 7828 return err 7829 } 7830 tries++ 7831 if tries >= 3 { 7832 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7833 return err 7834 } 7835 } 7836 7837 } 7838 7839 func (s *RetryLayerSessionStore) UpdateRoles(userID string, roles string) (string, error) { 7840 7841 tries := 0 7842 for { 7843 result, err := s.SessionStore.UpdateRoles(userID, roles) 7844 if err == nil { 7845 return result, nil 7846 } 7847 if !isRepeatableError(err) { 7848 return result, err 7849 } 7850 tries++ 7851 if tries >= 3 { 7852 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7853 return result, err 7854 } 7855 } 7856 7857 } 7858 7859 func (s *RetryLayerSharedChannelStore) Delete(channelId string) (bool, error) { 7860 7861 tries := 0 7862 for { 7863 result, err := s.SharedChannelStore.Delete(channelId) 7864 if err == nil { 7865 return result, nil 7866 } 7867 if !isRepeatableError(err) { 7868 return result, err 7869 } 7870 tries++ 7871 if tries >= 3 { 7872 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7873 return result, err 7874 } 7875 } 7876 7877 } 7878 7879 func (s *RetryLayerSharedChannelStore) DeleteRemote(remoteId string) (bool, error) { 7880 7881 tries := 0 7882 for { 7883 result, err := s.SharedChannelStore.DeleteRemote(remoteId) 7884 if err == nil { 7885 return result, nil 7886 } 7887 if !isRepeatableError(err) { 7888 return result, err 7889 } 7890 tries++ 7891 if tries >= 3 { 7892 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7893 return result, err 7894 } 7895 } 7896 7897 } 7898 7899 func (s *RetryLayerSharedChannelStore) Get(channelId string) (*model.SharedChannel, error) { 7900 7901 tries := 0 7902 for { 7903 result, err := s.SharedChannelStore.Get(channelId) 7904 if err == nil { 7905 return result, nil 7906 } 7907 if !isRepeatableError(err) { 7908 return result, err 7909 } 7910 tries++ 7911 if tries >= 3 { 7912 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7913 return result, err 7914 } 7915 } 7916 7917 } 7918 7919 func (s *RetryLayerSharedChannelStore) GetAll(offset int, limit int, opts model.SharedChannelFilterOpts) ([]*model.SharedChannel, error) { 7920 7921 tries := 0 7922 for { 7923 result, err := s.SharedChannelStore.GetAll(offset, limit, opts) 7924 if err == nil { 7925 return result, nil 7926 } 7927 if !isRepeatableError(err) { 7928 return result, err 7929 } 7930 tries++ 7931 if tries >= 3 { 7932 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7933 return result, err 7934 } 7935 } 7936 7937 } 7938 7939 func (s *RetryLayerSharedChannelStore) GetAllCount(opts model.SharedChannelFilterOpts) (int64, error) { 7940 7941 tries := 0 7942 for { 7943 result, err := s.SharedChannelStore.GetAllCount(opts) 7944 if err == nil { 7945 return result, nil 7946 } 7947 if !isRepeatableError(err) { 7948 return result, err 7949 } 7950 tries++ 7951 if tries >= 3 { 7952 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7953 return result, err 7954 } 7955 } 7956 7957 } 7958 7959 func (s *RetryLayerSharedChannelStore) GetAttachment(fileId string, remoteId string) (*model.SharedChannelAttachment, error) { 7960 7961 tries := 0 7962 for { 7963 result, err := s.SharedChannelStore.GetAttachment(fileId, remoteId) 7964 if err == nil { 7965 return result, nil 7966 } 7967 if !isRepeatableError(err) { 7968 return result, err 7969 } 7970 tries++ 7971 if tries >= 3 { 7972 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7973 return result, err 7974 } 7975 } 7976 7977 } 7978 7979 func (s *RetryLayerSharedChannelStore) GetRemote(id string) (*model.SharedChannelRemote, error) { 7980 7981 tries := 0 7982 for { 7983 result, err := s.SharedChannelStore.GetRemote(id) 7984 if err == nil { 7985 return result, nil 7986 } 7987 if !isRepeatableError(err) { 7988 return result, err 7989 } 7990 tries++ 7991 if tries >= 3 { 7992 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7993 return result, err 7994 } 7995 } 7996 7997 } 7998 7999 func (s *RetryLayerSharedChannelStore) GetRemoteByIds(channelId string, remoteId string) (*model.SharedChannelRemote, error) { 8000 8001 tries := 0 8002 for { 8003 result, err := s.SharedChannelStore.GetRemoteByIds(channelId, remoteId) 8004 if err == nil { 8005 return result, nil 8006 } 8007 if !isRepeatableError(err) { 8008 return result, err 8009 } 8010 tries++ 8011 if tries >= 3 { 8012 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8013 return result, err 8014 } 8015 } 8016 8017 } 8018 8019 func (s *RetryLayerSharedChannelStore) GetRemoteForUser(remoteId string, userId string) (*model.RemoteCluster, error) { 8020 8021 tries := 0 8022 for { 8023 result, err := s.SharedChannelStore.GetRemoteForUser(remoteId, userId) 8024 if err == nil { 8025 return result, nil 8026 } 8027 if !isRepeatableError(err) { 8028 return result, err 8029 } 8030 tries++ 8031 if tries >= 3 { 8032 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8033 return result, err 8034 } 8035 } 8036 8037 } 8038 8039 func (s *RetryLayerSharedChannelStore) GetRemotes(opts model.SharedChannelRemoteFilterOpts) ([]*model.SharedChannelRemote, error) { 8040 8041 tries := 0 8042 for { 8043 result, err := s.SharedChannelStore.GetRemotes(opts) 8044 if err == nil { 8045 return result, nil 8046 } 8047 if !isRepeatableError(err) { 8048 return result, err 8049 } 8050 tries++ 8051 if tries >= 3 { 8052 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8053 return result, err 8054 } 8055 } 8056 8057 } 8058 8059 func (s *RetryLayerSharedChannelStore) GetRemotesStatus(channelId string) ([]*model.SharedChannelRemoteStatus, error) { 8060 8061 tries := 0 8062 for { 8063 result, err := s.SharedChannelStore.GetRemotesStatus(channelId) 8064 if err == nil { 8065 return result, nil 8066 } 8067 if !isRepeatableError(err) { 8068 return result, err 8069 } 8070 tries++ 8071 if tries >= 3 { 8072 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8073 return result, err 8074 } 8075 } 8076 8077 } 8078 8079 func (s *RetryLayerSharedChannelStore) GetSingleUser(userID string, channelID string, remoteID string) (*model.SharedChannelUser, error) { 8080 8081 tries := 0 8082 for { 8083 result, err := s.SharedChannelStore.GetSingleUser(userID, channelID, remoteID) 8084 if err == nil { 8085 return result, nil 8086 } 8087 if !isRepeatableError(err) { 8088 return result, err 8089 } 8090 tries++ 8091 if tries >= 3 { 8092 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8093 return result, err 8094 } 8095 } 8096 8097 } 8098 8099 func (s *RetryLayerSharedChannelStore) GetUsersForSync(filter model.GetUsersForSyncFilter) ([]*model.User, error) { 8100 8101 tries := 0 8102 for { 8103 result, err := s.SharedChannelStore.GetUsersForSync(filter) 8104 if err == nil { 8105 return result, nil 8106 } 8107 if !isRepeatableError(err) { 8108 return result, err 8109 } 8110 tries++ 8111 if tries >= 3 { 8112 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8113 return result, err 8114 } 8115 } 8116 8117 } 8118 8119 func (s *RetryLayerSharedChannelStore) GetUsersForUser(userID string) ([]*model.SharedChannelUser, error) { 8120 8121 tries := 0 8122 for { 8123 result, err := s.SharedChannelStore.GetUsersForUser(userID) 8124 if err == nil { 8125 return result, nil 8126 } 8127 if !isRepeatableError(err) { 8128 return result, err 8129 } 8130 tries++ 8131 if tries >= 3 { 8132 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8133 return result, err 8134 } 8135 } 8136 8137 } 8138 8139 func (s *RetryLayerSharedChannelStore) HasChannel(channelID string) (bool, error) { 8140 8141 tries := 0 8142 for { 8143 result, err := s.SharedChannelStore.HasChannel(channelID) 8144 if err == nil { 8145 return result, nil 8146 } 8147 if !isRepeatableError(err) { 8148 return result, err 8149 } 8150 tries++ 8151 if tries >= 3 { 8152 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8153 return result, err 8154 } 8155 } 8156 8157 } 8158 8159 func (s *RetryLayerSharedChannelStore) HasRemote(channelID string, remoteId string) (bool, error) { 8160 8161 tries := 0 8162 for { 8163 result, err := s.SharedChannelStore.HasRemote(channelID, remoteId) 8164 if err == nil { 8165 return result, nil 8166 } 8167 if !isRepeatableError(err) { 8168 return result, err 8169 } 8170 tries++ 8171 if tries >= 3 { 8172 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8173 return result, err 8174 } 8175 } 8176 8177 } 8178 8179 func (s *RetryLayerSharedChannelStore) Save(sc *model.SharedChannel) (*model.SharedChannel, error) { 8180 8181 tries := 0 8182 for { 8183 result, err := s.SharedChannelStore.Save(sc) 8184 if err == nil { 8185 return result, nil 8186 } 8187 if !isRepeatableError(err) { 8188 return result, err 8189 } 8190 tries++ 8191 if tries >= 3 { 8192 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8193 return result, err 8194 } 8195 } 8196 8197 } 8198 8199 func (s *RetryLayerSharedChannelStore) SaveAttachment(remote *model.SharedChannelAttachment) (*model.SharedChannelAttachment, error) { 8200 8201 tries := 0 8202 for { 8203 result, err := s.SharedChannelStore.SaveAttachment(remote) 8204 if err == nil { 8205 return result, nil 8206 } 8207 if !isRepeatableError(err) { 8208 return result, err 8209 } 8210 tries++ 8211 if tries >= 3 { 8212 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8213 return result, err 8214 } 8215 } 8216 8217 } 8218 8219 func (s *RetryLayerSharedChannelStore) SaveRemote(remote *model.SharedChannelRemote) (*model.SharedChannelRemote, error) { 8220 8221 tries := 0 8222 for { 8223 result, err := s.SharedChannelStore.SaveRemote(remote) 8224 if err == nil { 8225 return result, nil 8226 } 8227 if !isRepeatableError(err) { 8228 return result, err 8229 } 8230 tries++ 8231 if tries >= 3 { 8232 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8233 return result, err 8234 } 8235 } 8236 8237 } 8238 8239 func (s *RetryLayerSharedChannelStore) SaveUser(remote *model.SharedChannelUser) (*model.SharedChannelUser, error) { 8240 8241 tries := 0 8242 for { 8243 result, err := s.SharedChannelStore.SaveUser(remote) 8244 if err == nil { 8245 return result, nil 8246 } 8247 if !isRepeatableError(err) { 8248 return result, err 8249 } 8250 tries++ 8251 if tries >= 3 { 8252 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8253 return result, err 8254 } 8255 } 8256 8257 } 8258 8259 func (s *RetryLayerSharedChannelStore) Update(sc *model.SharedChannel) (*model.SharedChannel, error) { 8260 8261 tries := 0 8262 for { 8263 result, err := s.SharedChannelStore.Update(sc) 8264 if err == nil { 8265 return result, nil 8266 } 8267 if !isRepeatableError(err) { 8268 return result, err 8269 } 8270 tries++ 8271 if tries >= 3 { 8272 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8273 return result, err 8274 } 8275 } 8276 8277 } 8278 8279 func (s *RetryLayerSharedChannelStore) UpdateAttachmentLastSyncAt(id string, syncTime int64) error { 8280 8281 tries := 0 8282 for { 8283 err := s.SharedChannelStore.UpdateAttachmentLastSyncAt(id, syncTime) 8284 if err == nil { 8285 return nil 8286 } 8287 if !isRepeatableError(err) { 8288 return err 8289 } 8290 tries++ 8291 if tries >= 3 { 8292 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8293 return err 8294 } 8295 } 8296 8297 } 8298 8299 func (s *RetryLayerSharedChannelStore) UpdateRemote(remote *model.SharedChannelRemote) (*model.SharedChannelRemote, error) { 8300 8301 tries := 0 8302 for { 8303 result, err := s.SharedChannelStore.UpdateRemote(remote) 8304 if err == nil { 8305 return result, nil 8306 } 8307 if !isRepeatableError(err) { 8308 return result, err 8309 } 8310 tries++ 8311 if tries >= 3 { 8312 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8313 return result, err 8314 } 8315 } 8316 8317 } 8318 8319 func (s *RetryLayerSharedChannelStore) UpdateRemoteCursor(id string, cursor model.GetPostsSinceForSyncCursor) error { 8320 8321 tries := 0 8322 for { 8323 err := s.SharedChannelStore.UpdateRemoteCursor(id, cursor) 8324 if err == nil { 8325 return nil 8326 } 8327 if !isRepeatableError(err) { 8328 return err 8329 } 8330 tries++ 8331 if tries >= 3 { 8332 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8333 return err 8334 } 8335 } 8336 8337 } 8338 8339 func (s *RetryLayerSharedChannelStore) UpdateUserLastSyncAt(userID string, channelID string, remoteID string) error { 8340 8341 tries := 0 8342 for { 8343 err := s.SharedChannelStore.UpdateUserLastSyncAt(userID, channelID, remoteID) 8344 if err == nil { 8345 return nil 8346 } 8347 if !isRepeatableError(err) { 8348 return err 8349 } 8350 tries++ 8351 if tries >= 3 { 8352 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8353 return err 8354 } 8355 } 8356 8357 } 8358 8359 func (s *RetryLayerSharedChannelStore) UpsertAttachment(remote *model.SharedChannelAttachment) (string, error) { 8360 8361 tries := 0 8362 for { 8363 result, err := s.SharedChannelStore.UpsertAttachment(remote) 8364 if err == nil { 8365 return result, nil 8366 } 8367 if !isRepeatableError(err) { 8368 return result, err 8369 } 8370 tries++ 8371 if tries >= 3 { 8372 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8373 return result, err 8374 } 8375 } 8376 8377 } 8378 8379 func (s *RetryLayerStatusStore) Get(userID string) (*model.Status, error) { 8380 8381 tries := 0 8382 for { 8383 result, err := s.StatusStore.Get(userID) 8384 if err == nil { 8385 return result, nil 8386 } 8387 if !isRepeatableError(err) { 8388 return result, err 8389 } 8390 tries++ 8391 if tries >= 3 { 8392 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8393 return result, err 8394 } 8395 } 8396 8397 } 8398 8399 func (s *RetryLayerStatusStore) GetByIds(userIds []string) ([]*model.Status, error) { 8400 8401 tries := 0 8402 for { 8403 result, err := s.StatusStore.GetByIds(userIds) 8404 if err == nil { 8405 return result, nil 8406 } 8407 if !isRepeatableError(err) { 8408 return result, err 8409 } 8410 tries++ 8411 if tries >= 3 { 8412 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8413 return result, err 8414 } 8415 } 8416 8417 } 8418 8419 func (s *RetryLayerStatusStore) GetTotalActiveUsersCount() (int64, error) { 8420 8421 tries := 0 8422 for { 8423 result, err := s.StatusStore.GetTotalActiveUsersCount() 8424 if err == nil { 8425 return result, nil 8426 } 8427 if !isRepeatableError(err) { 8428 return result, err 8429 } 8430 tries++ 8431 if tries >= 3 { 8432 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8433 return result, err 8434 } 8435 } 8436 8437 } 8438 8439 func (s *RetryLayerStatusStore) ResetAll() error { 8440 8441 tries := 0 8442 for { 8443 err := s.StatusStore.ResetAll() 8444 if err == nil { 8445 return nil 8446 } 8447 if !isRepeatableError(err) { 8448 return err 8449 } 8450 tries++ 8451 if tries >= 3 { 8452 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8453 return err 8454 } 8455 } 8456 8457 } 8458 8459 func (s *RetryLayerStatusStore) SaveOrUpdate(status *model.Status) error { 8460 8461 tries := 0 8462 for { 8463 err := s.StatusStore.SaveOrUpdate(status) 8464 if err == nil { 8465 return nil 8466 } 8467 if !isRepeatableError(err) { 8468 return err 8469 } 8470 tries++ 8471 if tries >= 3 { 8472 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8473 return err 8474 } 8475 } 8476 8477 } 8478 8479 func (s *RetryLayerStatusStore) UpdateExpiredDNDStatuses() ([]*model.Status, error) { 8480 8481 tries := 0 8482 for { 8483 result, err := s.StatusStore.UpdateExpiredDNDStatuses() 8484 if err == nil { 8485 return result, nil 8486 } 8487 if !isRepeatableError(err) { 8488 return result, err 8489 } 8490 tries++ 8491 if tries >= 3 { 8492 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8493 return result, err 8494 } 8495 } 8496 8497 } 8498 8499 func (s *RetryLayerStatusStore) UpdateLastActivityAt(userID string, lastActivityAt int64) error { 8500 8501 tries := 0 8502 for { 8503 err := s.StatusStore.UpdateLastActivityAt(userID, lastActivityAt) 8504 if err == nil { 8505 return nil 8506 } 8507 if !isRepeatableError(err) { 8508 return err 8509 } 8510 tries++ 8511 if tries >= 3 { 8512 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8513 return err 8514 } 8515 } 8516 8517 } 8518 8519 func (s *RetryLayerSystemStore) Get() (model.StringMap, error) { 8520 8521 tries := 0 8522 for { 8523 result, err := s.SystemStore.Get() 8524 if err == nil { 8525 return result, nil 8526 } 8527 if !isRepeatableError(err) { 8528 return result, err 8529 } 8530 tries++ 8531 if tries >= 3 { 8532 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8533 return result, err 8534 } 8535 } 8536 8537 } 8538 8539 func (s *RetryLayerSystemStore) GetByName(name string) (*model.System, error) { 8540 8541 tries := 0 8542 for { 8543 result, err := s.SystemStore.GetByName(name) 8544 if err == nil { 8545 return result, nil 8546 } 8547 if !isRepeatableError(err) { 8548 return result, err 8549 } 8550 tries++ 8551 if tries >= 3 { 8552 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8553 return result, err 8554 } 8555 } 8556 8557 } 8558 8559 func (s *RetryLayerSystemStore) InsertIfExists(system *model.System) (*model.System, error) { 8560 8561 tries := 0 8562 for { 8563 result, err := s.SystemStore.InsertIfExists(system) 8564 if err == nil { 8565 return result, nil 8566 } 8567 if !isRepeatableError(err) { 8568 return result, err 8569 } 8570 tries++ 8571 if tries >= 3 { 8572 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8573 return result, err 8574 } 8575 } 8576 8577 } 8578 8579 func (s *RetryLayerSystemStore) PermanentDeleteByName(name string) (*model.System, error) { 8580 8581 tries := 0 8582 for { 8583 result, err := s.SystemStore.PermanentDeleteByName(name) 8584 if err == nil { 8585 return result, nil 8586 } 8587 if !isRepeatableError(err) { 8588 return result, err 8589 } 8590 tries++ 8591 if tries >= 3 { 8592 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8593 return result, err 8594 } 8595 } 8596 8597 } 8598 8599 func (s *RetryLayerSystemStore) Save(system *model.System) error { 8600 8601 tries := 0 8602 for { 8603 err := s.SystemStore.Save(system) 8604 if err == nil { 8605 return nil 8606 } 8607 if !isRepeatableError(err) { 8608 return err 8609 } 8610 tries++ 8611 if tries >= 3 { 8612 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8613 return err 8614 } 8615 } 8616 8617 } 8618 8619 func (s *RetryLayerSystemStore) SaveOrUpdate(system *model.System) error { 8620 8621 tries := 0 8622 for { 8623 err := s.SystemStore.SaveOrUpdate(system) 8624 if err == nil { 8625 return nil 8626 } 8627 if !isRepeatableError(err) { 8628 return err 8629 } 8630 tries++ 8631 if tries >= 3 { 8632 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8633 return err 8634 } 8635 } 8636 8637 } 8638 8639 func (s *RetryLayerSystemStore) SaveOrUpdateWithWarnMetricHandling(system *model.System) error { 8640 8641 tries := 0 8642 for { 8643 err := s.SystemStore.SaveOrUpdateWithWarnMetricHandling(system) 8644 if err == nil { 8645 return nil 8646 } 8647 if !isRepeatableError(err) { 8648 return err 8649 } 8650 tries++ 8651 if tries >= 3 { 8652 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8653 return err 8654 } 8655 } 8656 8657 } 8658 8659 func (s *RetryLayerSystemStore) Update(system *model.System) error { 8660 8661 tries := 0 8662 for { 8663 err := s.SystemStore.Update(system) 8664 if err == nil { 8665 return nil 8666 } 8667 if !isRepeatableError(err) { 8668 return err 8669 } 8670 tries++ 8671 if tries >= 3 { 8672 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8673 return err 8674 } 8675 } 8676 8677 } 8678 8679 func (s *RetryLayerTeamStore) AnalyticsGetTeamCountForScheme(schemeID string) (int64, error) { 8680 8681 tries := 0 8682 for { 8683 result, err := s.TeamStore.AnalyticsGetTeamCountForScheme(schemeID) 8684 if err == nil { 8685 return result, nil 8686 } 8687 if !isRepeatableError(err) { 8688 return result, err 8689 } 8690 tries++ 8691 if tries >= 3 { 8692 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8693 return result, err 8694 } 8695 } 8696 8697 } 8698 8699 func (s *RetryLayerTeamStore) AnalyticsTeamCount(opts *model.TeamSearch) (int64, error) { 8700 8701 tries := 0 8702 for { 8703 result, err := s.TeamStore.AnalyticsTeamCount(opts) 8704 if err == nil { 8705 return result, nil 8706 } 8707 if !isRepeatableError(err) { 8708 return result, err 8709 } 8710 tries++ 8711 if tries >= 3 { 8712 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8713 return result, err 8714 } 8715 } 8716 8717 } 8718 8719 func (s *RetryLayerTeamStore) ClearAllCustomRoleAssignments() error { 8720 8721 tries := 0 8722 for { 8723 err := s.TeamStore.ClearAllCustomRoleAssignments() 8724 if err == nil { 8725 return nil 8726 } 8727 if !isRepeatableError(err) { 8728 return err 8729 } 8730 tries++ 8731 if tries >= 3 { 8732 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8733 return err 8734 } 8735 } 8736 8737 } 8738 8739 func (s *RetryLayerTeamStore) ClearCaches() { 8740 8741 s.TeamStore.ClearCaches() 8742 8743 } 8744 8745 func (s *RetryLayerTeamStore) Get(id string) (*model.Team, error) { 8746 8747 tries := 0 8748 for { 8749 result, err := s.TeamStore.Get(id) 8750 if err == nil { 8751 return result, nil 8752 } 8753 if !isRepeatableError(err) { 8754 return result, err 8755 } 8756 tries++ 8757 if tries >= 3 { 8758 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8759 return result, err 8760 } 8761 } 8762 8763 } 8764 8765 func (s *RetryLayerTeamStore) GetActiveMemberCount(teamID string, restrictions *model.ViewUsersRestrictions) (int64, error) { 8766 8767 tries := 0 8768 for { 8769 result, err := s.TeamStore.GetActiveMemberCount(teamID, restrictions) 8770 if err == nil { 8771 return result, nil 8772 } 8773 if !isRepeatableError(err) { 8774 return result, err 8775 } 8776 tries++ 8777 if tries >= 3 { 8778 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8779 return result, err 8780 } 8781 } 8782 8783 } 8784 8785 func (s *RetryLayerTeamStore) GetAll() ([]*model.Team, error) { 8786 8787 tries := 0 8788 for { 8789 result, err := s.TeamStore.GetAll() 8790 if err == nil { 8791 return result, nil 8792 } 8793 if !isRepeatableError(err) { 8794 return result, err 8795 } 8796 tries++ 8797 if tries >= 3 { 8798 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8799 return result, err 8800 } 8801 } 8802 8803 } 8804 8805 func (s *RetryLayerTeamStore) GetAllForExportAfter(limit int, afterID string) ([]*model.TeamForExport, error) { 8806 8807 tries := 0 8808 for { 8809 result, err := s.TeamStore.GetAllForExportAfter(limit, afterID) 8810 if err == nil { 8811 return result, nil 8812 } 8813 if !isRepeatableError(err) { 8814 return result, err 8815 } 8816 tries++ 8817 if tries >= 3 { 8818 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8819 return result, err 8820 } 8821 } 8822 8823 } 8824 8825 func (s *RetryLayerTeamStore) GetAllPage(offset int, limit int, opts *model.TeamSearch) ([]*model.Team, error) { 8826 8827 tries := 0 8828 for { 8829 result, err := s.TeamStore.GetAllPage(offset, limit, opts) 8830 if err == nil { 8831 return result, nil 8832 } 8833 if !isRepeatableError(err) { 8834 return result, err 8835 } 8836 tries++ 8837 if tries >= 3 { 8838 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8839 return result, err 8840 } 8841 } 8842 8843 } 8844 8845 func (s *RetryLayerTeamStore) GetAllPrivateTeamListing() ([]*model.Team, error) { 8846 8847 tries := 0 8848 for { 8849 result, err := s.TeamStore.GetAllPrivateTeamListing() 8850 if err == nil { 8851 return result, nil 8852 } 8853 if !isRepeatableError(err) { 8854 return result, err 8855 } 8856 tries++ 8857 if tries >= 3 { 8858 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8859 return result, err 8860 } 8861 } 8862 8863 } 8864 8865 func (s *RetryLayerTeamStore) GetAllTeamListing() ([]*model.Team, error) { 8866 8867 tries := 0 8868 for { 8869 result, err := s.TeamStore.GetAllTeamListing() 8870 if err == nil { 8871 return result, nil 8872 } 8873 if !isRepeatableError(err) { 8874 return result, err 8875 } 8876 tries++ 8877 if tries >= 3 { 8878 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8879 return result, err 8880 } 8881 } 8882 8883 } 8884 8885 func (s *RetryLayerTeamStore) GetByInviteId(inviteID string) (*model.Team, error) { 8886 8887 tries := 0 8888 for { 8889 result, err := s.TeamStore.GetByInviteId(inviteID) 8890 if err == nil { 8891 return result, nil 8892 } 8893 if !isRepeatableError(err) { 8894 return result, err 8895 } 8896 tries++ 8897 if tries >= 3 { 8898 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8899 return result, err 8900 } 8901 } 8902 8903 } 8904 8905 func (s *RetryLayerTeamStore) GetByName(name string) (*model.Team, error) { 8906 8907 tries := 0 8908 for { 8909 result, err := s.TeamStore.GetByName(name) 8910 if err == nil { 8911 return result, nil 8912 } 8913 if !isRepeatableError(err) { 8914 return result, err 8915 } 8916 tries++ 8917 if tries >= 3 { 8918 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8919 return result, err 8920 } 8921 } 8922 8923 } 8924 8925 func (s *RetryLayerTeamStore) GetByNames(name []string) ([]*model.Team, error) { 8926 8927 tries := 0 8928 for { 8929 result, err := s.TeamStore.GetByNames(name) 8930 if err == nil { 8931 return result, nil 8932 } 8933 if !isRepeatableError(err) { 8934 return result, err 8935 } 8936 tries++ 8937 if tries >= 3 { 8938 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8939 return result, err 8940 } 8941 } 8942 8943 } 8944 8945 func (s *RetryLayerTeamStore) GetChannelUnreadsForAllTeams(excludeTeamID string, userID string) ([]*model.ChannelUnread, error) { 8946 8947 tries := 0 8948 for { 8949 result, err := s.TeamStore.GetChannelUnreadsForAllTeams(excludeTeamID, userID) 8950 if err == nil { 8951 return result, nil 8952 } 8953 if !isRepeatableError(err) { 8954 return result, err 8955 } 8956 tries++ 8957 if tries >= 3 { 8958 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8959 return result, err 8960 } 8961 } 8962 8963 } 8964 8965 func (s *RetryLayerTeamStore) GetChannelUnreadsForTeam(teamID string, userID string) ([]*model.ChannelUnread, error) { 8966 8967 tries := 0 8968 for { 8969 result, err := s.TeamStore.GetChannelUnreadsForTeam(teamID, userID) 8970 if err == nil { 8971 return result, nil 8972 } 8973 if !isRepeatableError(err) { 8974 return result, err 8975 } 8976 tries++ 8977 if tries >= 3 { 8978 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8979 return result, err 8980 } 8981 } 8982 8983 } 8984 8985 func (s *RetryLayerTeamStore) GetCommonTeamIDsForTwoUsers(userID string, otherUserID string) ([]string, error) { 8986 8987 tries := 0 8988 for { 8989 result, err := s.TeamStore.GetCommonTeamIDsForTwoUsers(userID, otherUserID) 8990 if err == nil { 8991 return result, nil 8992 } 8993 if !isRepeatableError(err) { 8994 return result, err 8995 } 8996 tries++ 8997 if tries >= 3 { 8998 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8999 return result, err 9000 } 9001 } 9002 9003 } 9004 9005 func (s *RetryLayerTeamStore) GetMember(ctx context.Context, teamID string, userID string) (*model.TeamMember, error) { 9006 9007 tries := 0 9008 for { 9009 result, err := s.TeamStore.GetMember(ctx, teamID, userID) 9010 if err == nil { 9011 return result, nil 9012 } 9013 if !isRepeatableError(err) { 9014 return result, err 9015 } 9016 tries++ 9017 if tries >= 3 { 9018 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9019 return result, err 9020 } 9021 } 9022 9023 } 9024 9025 func (s *RetryLayerTeamStore) GetMembers(teamID string, offset int, limit int, teamMembersGetOptions *model.TeamMembersGetOptions) ([]*model.TeamMember, error) { 9026 9027 tries := 0 9028 for { 9029 result, err := s.TeamStore.GetMembers(teamID, offset, limit, teamMembersGetOptions) 9030 if err == nil { 9031 return result, nil 9032 } 9033 if !isRepeatableError(err) { 9034 return result, err 9035 } 9036 tries++ 9037 if tries >= 3 { 9038 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9039 return result, err 9040 } 9041 } 9042 9043 } 9044 9045 func (s *RetryLayerTeamStore) GetMembersByIds(teamID string, userIds []string, restrictions *model.ViewUsersRestrictions) ([]*model.TeamMember, error) { 9046 9047 tries := 0 9048 for { 9049 result, err := s.TeamStore.GetMembersByIds(teamID, userIds, restrictions) 9050 if err == nil { 9051 return result, nil 9052 } 9053 if !isRepeatableError(err) { 9054 return result, err 9055 } 9056 tries++ 9057 if tries >= 3 { 9058 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9059 return result, err 9060 } 9061 } 9062 9063 } 9064 9065 func (s *RetryLayerTeamStore) GetTeamMembersForExport(userID string) ([]*model.TeamMemberForExport, error) { 9066 9067 tries := 0 9068 for { 9069 result, err := s.TeamStore.GetTeamMembersForExport(userID) 9070 if err == nil { 9071 return result, nil 9072 } 9073 if !isRepeatableError(err) { 9074 return result, err 9075 } 9076 tries++ 9077 if tries >= 3 { 9078 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9079 return result, err 9080 } 9081 } 9082 9083 } 9084 9085 func (s *RetryLayerTeamStore) GetTeamsByScheme(schemeID string, offset int, limit int) ([]*model.Team, error) { 9086 9087 tries := 0 9088 for { 9089 result, err := s.TeamStore.GetTeamsByScheme(schemeID, offset, limit) 9090 if err == nil { 9091 return result, nil 9092 } 9093 if !isRepeatableError(err) { 9094 return result, err 9095 } 9096 tries++ 9097 if tries >= 3 { 9098 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9099 return result, err 9100 } 9101 } 9102 9103 } 9104 9105 func (s *RetryLayerTeamStore) GetTeamsByUserId(userID string) ([]*model.Team, error) { 9106 9107 tries := 0 9108 for { 9109 result, err := s.TeamStore.GetTeamsByUserId(userID) 9110 if err == nil { 9111 return result, nil 9112 } 9113 if !isRepeatableError(err) { 9114 return result, err 9115 } 9116 tries++ 9117 if tries >= 3 { 9118 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9119 return result, err 9120 } 9121 } 9122 9123 } 9124 9125 func (s *RetryLayerTeamStore) GetTeamsForUser(ctx context.Context, userID string) ([]*model.TeamMember, error) { 9126 9127 tries := 0 9128 for { 9129 result, err := s.TeamStore.GetTeamsForUser(ctx, userID) 9130 if err == nil { 9131 return result, nil 9132 } 9133 if !isRepeatableError(err) { 9134 return result, err 9135 } 9136 tries++ 9137 if tries >= 3 { 9138 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9139 return result, err 9140 } 9141 } 9142 9143 } 9144 9145 func (s *RetryLayerTeamStore) GetTeamsForUserWithPagination(userID string, page int, perPage int) ([]*model.TeamMember, error) { 9146 9147 tries := 0 9148 for { 9149 result, err := s.TeamStore.GetTeamsForUserWithPagination(userID, page, perPage) 9150 if err == nil { 9151 return result, nil 9152 } 9153 if !isRepeatableError(err) { 9154 return result, err 9155 } 9156 tries++ 9157 if tries >= 3 { 9158 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9159 return result, err 9160 } 9161 } 9162 9163 } 9164 9165 func (s *RetryLayerTeamStore) GetTotalMemberCount(teamID string, restrictions *model.ViewUsersRestrictions) (int64, error) { 9166 9167 tries := 0 9168 for { 9169 result, err := s.TeamStore.GetTotalMemberCount(teamID, restrictions) 9170 if err == nil { 9171 return result, nil 9172 } 9173 if !isRepeatableError(err) { 9174 return result, err 9175 } 9176 tries++ 9177 if tries >= 3 { 9178 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9179 return result, err 9180 } 9181 } 9182 9183 } 9184 9185 func (s *RetryLayerTeamStore) GetUserTeamIds(userID string, allowFromCache bool) ([]string, error) { 9186 9187 tries := 0 9188 for { 9189 result, err := s.TeamStore.GetUserTeamIds(userID, allowFromCache) 9190 if err == nil { 9191 return result, nil 9192 } 9193 if !isRepeatableError(err) { 9194 return result, err 9195 } 9196 tries++ 9197 if tries >= 3 { 9198 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9199 return result, err 9200 } 9201 } 9202 9203 } 9204 9205 func (s *RetryLayerTeamStore) GroupSyncedTeamCount() (int64, error) { 9206 9207 tries := 0 9208 for { 9209 result, err := s.TeamStore.GroupSyncedTeamCount() 9210 if err == nil { 9211 return result, nil 9212 } 9213 if !isRepeatableError(err) { 9214 return result, err 9215 } 9216 tries++ 9217 if tries >= 3 { 9218 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9219 return result, err 9220 } 9221 } 9222 9223 } 9224 9225 func (s *RetryLayerTeamStore) InvalidateAllTeamIdsForUser(userID string) { 9226 9227 s.TeamStore.InvalidateAllTeamIdsForUser(userID) 9228 9229 } 9230 9231 func (s *RetryLayerTeamStore) MigrateTeamMembers(fromTeamID string, fromUserID string) (map[string]string, error) { 9232 9233 tries := 0 9234 for { 9235 result, err := s.TeamStore.MigrateTeamMembers(fromTeamID, fromUserID) 9236 if err == nil { 9237 return result, nil 9238 } 9239 if !isRepeatableError(err) { 9240 return result, err 9241 } 9242 tries++ 9243 if tries >= 3 { 9244 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9245 return result, err 9246 } 9247 } 9248 9249 } 9250 9251 func (s *RetryLayerTeamStore) PermanentDelete(teamID string) error { 9252 9253 tries := 0 9254 for { 9255 err := s.TeamStore.PermanentDelete(teamID) 9256 if err == nil { 9257 return nil 9258 } 9259 if !isRepeatableError(err) { 9260 return err 9261 } 9262 tries++ 9263 if tries >= 3 { 9264 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9265 return err 9266 } 9267 } 9268 9269 } 9270 9271 func (s *RetryLayerTeamStore) RemoveAllMembersByTeam(teamID string) error { 9272 9273 tries := 0 9274 for { 9275 err := s.TeamStore.RemoveAllMembersByTeam(teamID) 9276 if err == nil { 9277 return nil 9278 } 9279 if !isRepeatableError(err) { 9280 return err 9281 } 9282 tries++ 9283 if tries >= 3 { 9284 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9285 return err 9286 } 9287 } 9288 9289 } 9290 9291 func (s *RetryLayerTeamStore) RemoveAllMembersByUser(userID string) error { 9292 9293 tries := 0 9294 for { 9295 err := s.TeamStore.RemoveAllMembersByUser(userID) 9296 if err == nil { 9297 return nil 9298 } 9299 if !isRepeatableError(err) { 9300 return err 9301 } 9302 tries++ 9303 if tries >= 3 { 9304 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9305 return err 9306 } 9307 } 9308 9309 } 9310 9311 func (s *RetryLayerTeamStore) RemoveMember(teamID string, userID string) error { 9312 9313 tries := 0 9314 for { 9315 err := s.TeamStore.RemoveMember(teamID, userID) 9316 if err == nil { 9317 return nil 9318 } 9319 if !isRepeatableError(err) { 9320 return err 9321 } 9322 tries++ 9323 if tries >= 3 { 9324 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9325 return err 9326 } 9327 } 9328 9329 } 9330 9331 func (s *RetryLayerTeamStore) RemoveMembers(teamID string, userIds []string) error { 9332 9333 tries := 0 9334 for { 9335 err := s.TeamStore.RemoveMembers(teamID, userIds) 9336 if err == nil { 9337 return nil 9338 } 9339 if !isRepeatableError(err) { 9340 return err 9341 } 9342 tries++ 9343 if tries >= 3 { 9344 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9345 return err 9346 } 9347 } 9348 9349 } 9350 9351 func (s *RetryLayerTeamStore) ResetAllTeamSchemes() error { 9352 9353 tries := 0 9354 for { 9355 err := s.TeamStore.ResetAllTeamSchemes() 9356 if err == nil { 9357 return nil 9358 } 9359 if !isRepeatableError(err) { 9360 return err 9361 } 9362 tries++ 9363 if tries >= 3 { 9364 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9365 return err 9366 } 9367 } 9368 9369 } 9370 9371 func (s *RetryLayerTeamStore) Save(team *model.Team) (*model.Team, error) { 9372 9373 tries := 0 9374 for { 9375 result, err := s.TeamStore.Save(team) 9376 if err == nil { 9377 return result, nil 9378 } 9379 if !isRepeatableError(err) { 9380 return result, err 9381 } 9382 tries++ 9383 if tries >= 3 { 9384 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9385 return result, err 9386 } 9387 } 9388 9389 } 9390 9391 func (s *RetryLayerTeamStore) SaveMember(member *model.TeamMember, maxUsersPerTeam int) (*model.TeamMember, error) { 9392 9393 tries := 0 9394 for { 9395 result, err := s.TeamStore.SaveMember(member, maxUsersPerTeam) 9396 if err == nil { 9397 return result, nil 9398 } 9399 if !isRepeatableError(err) { 9400 return result, err 9401 } 9402 tries++ 9403 if tries >= 3 { 9404 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9405 return result, err 9406 } 9407 } 9408 9409 } 9410 9411 func (s *RetryLayerTeamStore) SaveMultipleMembers(members []*model.TeamMember, maxUsersPerTeam int) ([]*model.TeamMember, error) { 9412 9413 tries := 0 9414 for { 9415 result, err := s.TeamStore.SaveMultipleMembers(members, maxUsersPerTeam) 9416 if err == nil { 9417 return result, nil 9418 } 9419 if !isRepeatableError(err) { 9420 return result, err 9421 } 9422 tries++ 9423 if tries >= 3 { 9424 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9425 return result, err 9426 } 9427 } 9428 9429 } 9430 9431 func (s *RetryLayerTeamStore) SearchAll(opts *model.TeamSearch) ([]*model.Team, error) { 9432 9433 tries := 0 9434 for { 9435 result, err := s.TeamStore.SearchAll(opts) 9436 if err == nil { 9437 return result, nil 9438 } 9439 if !isRepeatableError(err) { 9440 return result, err 9441 } 9442 tries++ 9443 if tries >= 3 { 9444 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9445 return result, err 9446 } 9447 } 9448 9449 } 9450 9451 func (s *RetryLayerTeamStore) SearchAllPaged(opts *model.TeamSearch) ([]*model.Team, int64, error) { 9452 9453 tries := 0 9454 for { 9455 result, resultVar1, err := s.TeamStore.SearchAllPaged(opts) 9456 if err == nil { 9457 return result, resultVar1, nil 9458 } 9459 if !isRepeatableError(err) { 9460 return result, resultVar1, err 9461 } 9462 tries++ 9463 if tries >= 3 { 9464 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9465 return result, resultVar1, err 9466 } 9467 } 9468 9469 } 9470 9471 func (s *RetryLayerTeamStore) SearchOpen(opts *model.TeamSearch) ([]*model.Team, error) { 9472 9473 tries := 0 9474 for { 9475 result, err := s.TeamStore.SearchOpen(opts) 9476 if err == nil { 9477 return result, nil 9478 } 9479 if !isRepeatableError(err) { 9480 return result, err 9481 } 9482 tries++ 9483 if tries >= 3 { 9484 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9485 return result, err 9486 } 9487 } 9488 9489 } 9490 9491 func (s *RetryLayerTeamStore) SearchPrivate(opts *model.TeamSearch) ([]*model.Team, error) { 9492 9493 tries := 0 9494 for { 9495 result, err := s.TeamStore.SearchPrivate(opts) 9496 if err == nil { 9497 return result, nil 9498 } 9499 if !isRepeatableError(err) { 9500 return result, err 9501 } 9502 tries++ 9503 if tries >= 3 { 9504 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9505 return result, err 9506 } 9507 } 9508 9509 } 9510 9511 func (s *RetryLayerTeamStore) Update(team *model.Team) (*model.Team, error) { 9512 9513 tries := 0 9514 for { 9515 result, err := s.TeamStore.Update(team) 9516 if err == nil { 9517 return result, nil 9518 } 9519 if !isRepeatableError(err) { 9520 return result, err 9521 } 9522 tries++ 9523 if tries >= 3 { 9524 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9525 return result, err 9526 } 9527 } 9528 9529 } 9530 9531 func (s *RetryLayerTeamStore) UpdateLastTeamIconUpdate(teamID string, curTime int64) error { 9532 9533 tries := 0 9534 for { 9535 err := s.TeamStore.UpdateLastTeamIconUpdate(teamID, curTime) 9536 if err == nil { 9537 return nil 9538 } 9539 if !isRepeatableError(err) { 9540 return err 9541 } 9542 tries++ 9543 if tries >= 3 { 9544 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9545 return err 9546 } 9547 } 9548 9549 } 9550 9551 func (s *RetryLayerTeamStore) UpdateMember(member *model.TeamMember) (*model.TeamMember, error) { 9552 9553 tries := 0 9554 for { 9555 result, err := s.TeamStore.UpdateMember(member) 9556 if err == nil { 9557 return result, nil 9558 } 9559 if !isRepeatableError(err) { 9560 return result, err 9561 } 9562 tries++ 9563 if tries >= 3 { 9564 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9565 return result, err 9566 } 9567 } 9568 9569 } 9570 9571 func (s *RetryLayerTeamStore) UpdateMembersRole(teamID string, userIDs []string) error { 9572 9573 tries := 0 9574 for { 9575 err := s.TeamStore.UpdateMembersRole(teamID, userIDs) 9576 if err == nil { 9577 return nil 9578 } 9579 if !isRepeatableError(err) { 9580 return err 9581 } 9582 tries++ 9583 if tries >= 3 { 9584 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9585 return err 9586 } 9587 } 9588 9589 } 9590 9591 func (s *RetryLayerTeamStore) UpdateMultipleMembers(members []*model.TeamMember) ([]*model.TeamMember, error) { 9592 9593 tries := 0 9594 for { 9595 result, err := s.TeamStore.UpdateMultipleMembers(members) 9596 if err == nil { 9597 return result, nil 9598 } 9599 if !isRepeatableError(err) { 9600 return result, err 9601 } 9602 tries++ 9603 if tries >= 3 { 9604 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9605 return result, err 9606 } 9607 } 9608 9609 } 9610 9611 func (s *RetryLayerTeamStore) UserBelongsToTeams(userID string, teamIds []string) (bool, error) { 9612 9613 tries := 0 9614 for { 9615 result, err := s.TeamStore.UserBelongsToTeams(userID, teamIds) 9616 if err == nil { 9617 return result, nil 9618 } 9619 if !isRepeatableError(err) { 9620 return result, err 9621 } 9622 tries++ 9623 if tries >= 3 { 9624 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9625 return result, err 9626 } 9627 } 9628 9629 } 9630 9631 func (s *RetryLayerTermsOfServiceStore) Get(id string, allowFromCache bool) (*model.TermsOfService, error) { 9632 9633 tries := 0 9634 for { 9635 result, err := s.TermsOfServiceStore.Get(id, allowFromCache) 9636 if err == nil { 9637 return result, nil 9638 } 9639 if !isRepeatableError(err) { 9640 return result, err 9641 } 9642 tries++ 9643 if tries >= 3 { 9644 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9645 return result, err 9646 } 9647 } 9648 9649 } 9650 9651 func (s *RetryLayerTermsOfServiceStore) GetLatest(allowFromCache bool) (*model.TermsOfService, error) { 9652 9653 tries := 0 9654 for { 9655 result, err := s.TermsOfServiceStore.GetLatest(allowFromCache) 9656 if err == nil { 9657 return result, nil 9658 } 9659 if !isRepeatableError(err) { 9660 return result, err 9661 } 9662 tries++ 9663 if tries >= 3 { 9664 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9665 return result, err 9666 } 9667 } 9668 9669 } 9670 9671 func (s *RetryLayerTermsOfServiceStore) Save(termsOfService *model.TermsOfService) (*model.TermsOfService, error) { 9672 9673 tries := 0 9674 for { 9675 result, err := s.TermsOfServiceStore.Save(termsOfService) 9676 if err == nil { 9677 return result, nil 9678 } 9679 if !isRepeatableError(err) { 9680 return result, err 9681 } 9682 tries++ 9683 if tries >= 3 { 9684 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9685 return result, err 9686 } 9687 } 9688 9689 } 9690 9691 func (s *RetryLayerThreadStore) CollectThreadsWithNewerReplies(userId string, channelIds []string, timestamp int64) ([]string, error) { 9692 9693 tries := 0 9694 for { 9695 result, err := s.ThreadStore.CollectThreadsWithNewerReplies(userId, channelIds, timestamp) 9696 if err == nil { 9697 return result, nil 9698 } 9699 if !isRepeatableError(err) { 9700 return result, err 9701 } 9702 tries++ 9703 if tries >= 3 { 9704 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9705 return result, err 9706 } 9707 } 9708 9709 } 9710 9711 func (s *RetryLayerThreadStore) Delete(postID string) error { 9712 9713 tries := 0 9714 for { 9715 err := s.ThreadStore.Delete(postID) 9716 if err == nil { 9717 return nil 9718 } 9719 if !isRepeatableError(err) { 9720 return err 9721 } 9722 tries++ 9723 if tries >= 3 { 9724 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9725 return err 9726 } 9727 } 9728 9729 } 9730 9731 func (s *RetryLayerThreadStore) DeleteMembershipForUser(userId string, postID string) error { 9732 9733 tries := 0 9734 for { 9735 err := s.ThreadStore.DeleteMembershipForUser(userId, postID) 9736 if err == nil { 9737 return nil 9738 } 9739 if !isRepeatableError(err) { 9740 return err 9741 } 9742 tries++ 9743 if tries >= 3 { 9744 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9745 return err 9746 } 9747 } 9748 9749 } 9750 9751 func (s *RetryLayerThreadStore) DeleteOrphanedRows(limit int) (int64, error) { 9752 9753 tries := 0 9754 for { 9755 result, err := s.ThreadStore.DeleteOrphanedRows(limit) 9756 if err == nil { 9757 return result, nil 9758 } 9759 if !isRepeatableError(err) { 9760 return result, err 9761 } 9762 tries++ 9763 if tries >= 3 { 9764 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9765 return result, err 9766 } 9767 } 9768 9769 } 9770 9771 func (s *RetryLayerThreadStore) Get(id string) (*model.Thread, error) { 9772 9773 tries := 0 9774 for { 9775 result, err := s.ThreadStore.Get(id) 9776 if err == nil { 9777 return result, nil 9778 } 9779 if !isRepeatableError(err) { 9780 return result, err 9781 } 9782 tries++ 9783 if tries >= 3 { 9784 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9785 return result, err 9786 } 9787 } 9788 9789 } 9790 9791 func (s *RetryLayerThreadStore) GetMembershipForUser(userId string, postID string) (*model.ThreadMembership, error) { 9792 9793 tries := 0 9794 for { 9795 result, err := s.ThreadStore.GetMembershipForUser(userId, postID) 9796 if err == nil { 9797 return result, nil 9798 } 9799 if !isRepeatableError(err) { 9800 return result, err 9801 } 9802 tries++ 9803 if tries >= 3 { 9804 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9805 return result, err 9806 } 9807 } 9808 9809 } 9810 9811 func (s *RetryLayerThreadStore) GetMembershipsForUser(userId string, teamID string) ([]*model.ThreadMembership, error) { 9812 9813 tries := 0 9814 for { 9815 result, err := s.ThreadStore.GetMembershipsForUser(userId, teamID) 9816 if err == nil { 9817 return result, nil 9818 } 9819 if !isRepeatableError(err) { 9820 return result, err 9821 } 9822 tries++ 9823 if tries >= 3 { 9824 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9825 return result, err 9826 } 9827 } 9828 9829 } 9830 9831 func (s *RetryLayerThreadStore) GetPosts(threadID string, since int64) ([]*model.Post, error) { 9832 9833 tries := 0 9834 for { 9835 result, err := s.ThreadStore.GetPosts(threadID, since) 9836 if err == nil { 9837 return result, nil 9838 } 9839 if !isRepeatableError(err) { 9840 return result, err 9841 } 9842 tries++ 9843 if tries >= 3 { 9844 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9845 return result, err 9846 } 9847 } 9848 9849 } 9850 9851 func (s *RetryLayerThreadStore) GetThreadFollowers(threadID string) ([]string, error) { 9852 9853 tries := 0 9854 for { 9855 result, err := s.ThreadStore.GetThreadFollowers(threadID) 9856 if err == nil { 9857 return result, nil 9858 } 9859 if !isRepeatableError(err) { 9860 return result, err 9861 } 9862 tries++ 9863 if tries >= 3 { 9864 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9865 return result, err 9866 } 9867 } 9868 9869 } 9870 9871 func (s *RetryLayerThreadStore) GetThreadForUser(teamID string, threadMembership *model.ThreadMembership, extended bool) (*model.ThreadResponse, error) { 9872 9873 tries := 0 9874 for { 9875 result, err := s.ThreadStore.GetThreadForUser(teamID, threadMembership, extended) 9876 if err == nil { 9877 return result, nil 9878 } 9879 if !isRepeatableError(err) { 9880 return result, err 9881 } 9882 tries++ 9883 if tries >= 3 { 9884 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9885 return result, err 9886 } 9887 } 9888 9889 } 9890 9891 func (s *RetryLayerThreadStore) GetThreadsForUser(userId string, teamID string, opts model.GetUserThreadsOpts) (*model.Threads, error) { 9892 9893 tries := 0 9894 for { 9895 result, err := s.ThreadStore.GetThreadsForUser(userId, teamID, opts) 9896 if err == nil { 9897 return result, nil 9898 } 9899 if !isRepeatableError(err) { 9900 return result, err 9901 } 9902 tries++ 9903 if tries >= 3 { 9904 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9905 return result, err 9906 } 9907 } 9908 9909 } 9910 9911 func (s *RetryLayerThreadStore) MaintainMembership(userID string, postID string, opts store.ThreadMembershipOpts) (*model.ThreadMembership, error) { 9912 9913 tries := 0 9914 for { 9915 result, err := s.ThreadStore.MaintainMembership(userID, postID, opts) 9916 if err == nil { 9917 return result, nil 9918 } 9919 if !isRepeatableError(err) { 9920 return result, err 9921 } 9922 tries++ 9923 if tries >= 3 { 9924 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9925 return result, err 9926 } 9927 } 9928 9929 } 9930 9931 func (s *RetryLayerThreadStore) MarkAllAsRead(userID string, teamID string) error { 9932 9933 tries := 0 9934 for { 9935 err := s.ThreadStore.MarkAllAsRead(userID, teamID) 9936 if err == nil { 9937 return nil 9938 } 9939 if !isRepeatableError(err) { 9940 return err 9941 } 9942 tries++ 9943 if tries >= 3 { 9944 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9945 return err 9946 } 9947 } 9948 9949 } 9950 9951 func (s *RetryLayerThreadStore) MarkAllAsReadInChannels(userID string, channelIDs []string) error { 9952 9953 tries := 0 9954 for { 9955 err := s.ThreadStore.MarkAllAsReadInChannels(userID, channelIDs) 9956 if err == nil { 9957 return nil 9958 } 9959 if !isRepeatableError(err) { 9960 return err 9961 } 9962 tries++ 9963 if tries >= 3 { 9964 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9965 return err 9966 } 9967 } 9968 9969 } 9970 9971 func (s *RetryLayerThreadStore) MarkAsRead(userID string, threadID string, timestamp int64) error { 9972 9973 tries := 0 9974 for { 9975 err := s.ThreadStore.MarkAsRead(userID, threadID, timestamp) 9976 if err == nil { 9977 return nil 9978 } 9979 if !isRepeatableError(err) { 9980 return err 9981 } 9982 tries++ 9983 if tries >= 3 { 9984 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9985 return err 9986 } 9987 } 9988 9989 } 9990 9991 func (s *RetryLayerThreadStore) PermanentDeleteBatchForRetentionPolicies(now int64, globalPolicyEndTime int64, limit int64, cursor model.RetentionPolicyCursor) (int64, model.RetentionPolicyCursor, error) { 9992 9993 tries := 0 9994 for { 9995 result, resultVar1, err := s.ThreadStore.PermanentDeleteBatchForRetentionPolicies(now, globalPolicyEndTime, limit, cursor) 9996 if err == nil { 9997 return result, resultVar1, nil 9998 } 9999 if !isRepeatableError(err) { 10000 return result, resultVar1, err 10001 } 10002 tries++ 10003 if tries >= 3 { 10004 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10005 return result, resultVar1, err 10006 } 10007 } 10008 10009 } 10010 10011 func (s *RetryLayerThreadStore) PermanentDeleteBatchThreadMembershipsForRetentionPolicies(now int64, globalPolicyEndTime int64, limit int64, cursor model.RetentionPolicyCursor) (int64, model.RetentionPolicyCursor, error) { 10012 10013 tries := 0 10014 for { 10015 result, resultVar1, err := s.ThreadStore.PermanentDeleteBatchThreadMembershipsForRetentionPolicies(now, globalPolicyEndTime, limit, cursor) 10016 if err == nil { 10017 return result, resultVar1, nil 10018 } 10019 if !isRepeatableError(err) { 10020 return result, resultVar1, err 10021 } 10022 tries++ 10023 if tries >= 3 { 10024 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10025 return result, resultVar1, err 10026 } 10027 } 10028 10029 } 10030 10031 func (s *RetryLayerThreadStore) Save(thread *model.Thread) (*model.Thread, error) { 10032 10033 tries := 0 10034 for { 10035 result, err := s.ThreadStore.Save(thread) 10036 if err == nil { 10037 return result, nil 10038 } 10039 if !isRepeatableError(err) { 10040 return result, err 10041 } 10042 tries++ 10043 if tries >= 3 { 10044 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10045 return result, err 10046 } 10047 } 10048 10049 } 10050 10051 func (s *RetryLayerThreadStore) SaveMembership(membership *model.ThreadMembership) (*model.ThreadMembership, error) { 10052 10053 tries := 0 10054 for { 10055 result, err := s.ThreadStore.SaveMembership(membership) 10056 if err == nil { 10057 return result, nil 10058 } 10059 if !isRepeatableError(err) { 10060 return result, err 10061 } 10062 tries++ 10063 if tries >= 3 { 10064 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10065 return result, err 10066 } 10067 } 10068 10069 } 10070 10071 func (s *RetryLayerThreadStore) SaveMultiple(thread []*model.Thread) ([]*model.Thread, int, error) { 10072 10073 tries := 0 10074 for { 10075 result, resultVar1, err := s.ThreadStore.SaveMultiple(thread) 10076 if err == nil { 10077 return result, resultVar1, nil 10078 } 10079 if !isRepeatableError(err) { 10080 return result, resultVar1, err 10081 } 10082 tries++ 10083 if tries >= 3 { 10084 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10085 return result, resultVar1, err 10086 } 10087 } 10088 10089 } 10090 10091 func (s *RetryLayerThreadStore) Update(thread *model.Thread) (*model.Thread, error) { 10092 10093 tries := 0 10094 for { 10095 result, err := s.ThreadStore.Update(thread) 10096 if err == nil { 10097 return result, nil 10098 } 10099 if !isRepeatableError(err) { 10100 return result, err 10101 } 10102 tries++ 10103 if tries >= 3 { 10104 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10105 return result, err 10106 } 10107 } 10108 10109 } 10110 10111 func (s *RetryLayerThreadStore) UpdateMembership(membership *model.ThreadMembership) (*model.ThreadMembership, error) { 10112 10113 tries := 0 10114 for { 10115 result, err := s.ThreadStore.UpdateMembership(membership) 10116 if err == nil { 10117 return result, nil 10118 } 10119 if !isRepeatableError(err) { 10120 return result, err 10121 } 10122 tries++ 10123 if tries >= 3 { 10124 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10125 return result, err 10126 } 10127 } 10128 10129 } 10130 10131 func (s *RetryLayerThreadStore) UpdateUnreadsByChannel(userId string, changedThreads []string, timestamp int64, updateViewedTimestamp bool) error { 10132 10133 tries := 0 10134 for { 10135 err := s.ThreadStore.UpdateUnreadsByChannel(userId, changedThreads, timestamp, updateViewedTimestamp) 10136 if err == nil { 10137 return nil 10138 } 10139 if !isRepeatableError(err) { 10140 return err 10141 } 10142 tries++ 10143 if tries >= 3 { 10144 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10145 return err 10146 } 10147 } 10148 10149 } 10150 10151 func (s *RetryLayerTokenStore) Cleanup() { 10152 10153 s.TokenStore.Cleanup() 10154 10155 } 10156 10157 func (s *RetryLayerTokenStore) Delete(token string) error { 10158 10159 tries := 0 10160 for { 10161 err := s.TokenStore.Delete(token) 10162 if err == nil { 10163 return nil 10164 } 10165 if !isRepeatableError(err) { 10166 return err 10167 } 10168 tries++ 10169 if tries >= 3 { 10170 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10171 return err 10172 } 10173 } 10174 10175 } 10176 10177 func (s *RetryLayerTokenStore) GetAllTokensByType(tokenType string) ([]*model.Token, error) { 10178 10179 tries := 0 10180 for { 10181 result, err := s.TokenStore.GetAllTokensByType(tokenType) 10182 if err == nil { 10183 return result, nil 10184 } 10185 if !isRepeatableError(err) { 10186 return result, err 10187 } 10188 tries++ 10189 if tries >= 3 { 10190 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10191 return result, err 10192 } 10193 } 10194 10195 } 10196 10197 func (s *RetryLayerTokenStore) GetByToken(token string) (*model.Token, error) { 10198 10199 tries := 0 10200 for { 10201 result, err := s.TokenStore.GetByToken(token) 10202 if err == nil { 10203 return result, nil 10204 } 10205 if !isRepeatableError(err) { 10206 return result, err 10207 } 10208 tries++ 10209 if tries >= 3 { 10210 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10211 return result, err 10212 } 10213 } 10214 10215 } 10216 10217 func (s *RetryLayerTokenStore) RemoveAllTokensByType(tokenType string) error { 10218 10219 tries := 0 10220 for { 10221 err := s.TokenStore.RemoveAllTokensByType(tokenType) 10222 if err == nil { 10223 return nil 10224 } 10225 if !isRepeatableError(err) { 10226 return err 10227 } 10228 tries++ 10229 if tries >= 3 { 10230 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10231 return err 10232 } 10233 } 10234 10235 } 10236 10237 func (s *RetryLayerTokenStore) Save(recovery *model.Token) error { 10238 10239 tries := 0 10240 for { 10241 err := s.TokenStore.Save(recovery) 10242 if err == nil { 10243 return nil 10244 } 10245 if !isRepeatableError(err) { 10246 return err 10247 } 10248 tries++ 10249 if tries >= 3 { 10250 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10251 return err 10252 } 10253 } 10254 10255 } 10256 10257 func (s *RetryLayerTrackPointStore) Get(trackPointId string) (*model.TrackPoint, error) { 10258 10259 tries := 0 10260 for { 10261 result, err := s.TrackPointStore.Get(trackPointId) 10262 if err == nil { 10263 return result, nil 10264 } 10265 if !isRepeatableError(err) { 10266 return result, err 10267 } 10268 tries++ 10269 if tries >= 3 { 10270 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10271 return result, err 10272 } 10273 } 10274 10275 } 10276 10277 func (s *RetryLayerTrackPointStore) GetByTargetId(targetId string) ([]*model.TrackPoint, error) { 10278 10279 tries := 0 10280 for { 10281 result, err := s.TrackPointStore.GetByTargetId(targetId) 10282 if err == nil { 10283 return result, nil 10284 } 10285 if !isRepeatableError(err) { 10286 return result, err 10287 } 10288 tries++ 10289 if tries >= 3 { 10290 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10291 return result, err 10292 } 10293 } 10294 10295 } 10296 10297 func (s *RetryLayerTrackPointStore) Save(trackPoint *model.TrackPoint) (*model.TrackPoint, error) { 10298 10299 tries := 0 10300 for { 10301 result, err := s.TrackPointStore.Save(trackPoint) 10302 if err == nil { 10303 return result, nil 10304 } 10305 if !isRepeatableError(err) { 10306 return result, err 10307 } 10308 tries++ 10309 if tries >= 3 { 10310 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10311 return result, err 10312 } 10313 } 10314 10315 } 10316 10317 func (s *RetryLayerTrackRecordStore) End(trackRecordId string) (*model.TrackRecord, error) { 10318 10319 tries := 0 10320 for { 10321 result, err := s.TrackRecordStore.End(trackRecordId) 10322 if err == nil { 10323 return result, nil 10324 } 10325 if !isRepeatableError(err) { 10326 return result, err 10327 } 10328 tries++ 10329 if tries >= 3 { 10330 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10331 return result, err 10332 } 10333 } 10334 10335 } 10336 10337 func (s *RetryLayerTrackRecordStore) Get(trackRecordId string) (*model.TrackRecord, error) { 10338 10339 tries := 0 10340 for { 10341 result, err := s.TrackRecordStore.Get(trackRecordId) 10342 if err == nil { 10343 return result, nil 10344 } 10345 if !isRepeatableError(err) { 10346 return result, err 10347 } 10348 tries++ 10349 if tries >= 3 { 10350 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10351 return result, err 10352 } 10353 } 10354 10355 } 10356 10357 func (s *RetryLayerTrackRecordStore) Save(trackRecord *model.TrackRecord) (*model.TrackRecord, error) { 10358 10359 tries := 0 10360 for { 10361 result, err := s.TrackRecordStore.Save(trackRecord) 10362 if err == nil { 10363 return result, nil 10364 } 10365 if !isRepeatableError(err) { 10366 return result, err 10367 } 10368 tries++ 10369 if tries >= 3 { 10370 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10371 return result, err 10372 } 10373 } 10374 10375 } 10376 10377 func (s *RetryLayerTrackRecordStore) Start(trackRecordId string) (*model.TrackRecord, error) { 10378 10379 tries := 0 10380 for { 10381 result, err := s.TrackRecordStore.Start(trackRecordId) 10382 if err == nil { 10383 return result, nil 10384 } 10385 if !isRepeatableError(err) { 10386 return result, err 10387 } 10388 tries++ 10389 if tries >= 3 { 10390 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10391 return result, err 10392 } 10393 } 10394 10395 } 10396 10397 func (s *RetryLayerTrackRecordStore) Update(trackRecord *model.TrackRecord) (*model.TrackRecord, error) { 10398 10399 tries := 0 10400 for { 10401 result, err := s.TrackRecordStore.Update(trackRecord) 10402 if err == nil { 10403 return result, nil 10404 } 10405 if !isRepeatableError(err) { 10406 return result, err 10407 } 10408 tries++ 10409 if tries >= 3 { 10410 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10411 return result, err 10412 } 10413 } 10414 10415 } 10416 10417 func (s *RetryLayerUploadSessionStore) Delete(id string) error { 10418 10419 tries := 0 10420 for { 10421 err := s.UploadSessionStore.Delete(id) 10422 if err == nil { 10423 return nil 10424 } 10425 if !isRepeatableError(err) { 10426 return err 10427 } 10428 tries++ 10429 if tries >= 3 { 10430 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10431 return err 10432 } 10433 } 10434 10435 } 10436 10437 func (s *RetryLayerUploadSessionStore) Get(id string) (*model.UploadSession, error) { 10438 10439 tries := 0 10440 for { 10441 result, err := s.UploadSessionStore.Get(id) 10442 if err == nil { 10443 return result, nil 10444 } 10445 if !isRepeatableError(err) { 10446 return result, err 10447 } 10448 tries++ 10449 if tries >= 3 { 10450 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10451 return result, err 10452 } 10453 } 10454 10455 } 10456 10457 func (s *RetryLayerUploadSessionStore) GetForUser(userID string) ([]*model.UploadSession, error) { 10458 10459 tries := 0 10460 for { 10461 result, err := s.UploadSessionStore.GetForUser(userID) 10462 if err == nil { 10463 return result, nil 10464 } 10465 if !isRepeatableError(err) { 10466 return result, err 10467 } 10468 tries++ 10469 if tries >= 3 { 10470 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10471 return result, err 10472 } 10473 } 10474 10475 } 10476 10477 func (s *RetryLayerUploadSessionStore) Save(session *model.UploadSession) (*model.UploadSession, error) { 10478 10479 tries := 0 10480 for { 10481 result, err := s.UploadSessionStore.Save(session) 10482 if err == nil { 10483 return result, nil 10484 } 10485 if !isRepeatableError(err) { 10486 return result, err 10487 } 10488 tries++ 10489 if tries >= 3 { 10490 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10491 return result, err 10492 } 10493 } 10494 10495 } 10496 10497 func (s *RetryLayerUploadSessionStore) Update(session *model.UploadSession) error { 10498 10499 tries := 0 10500 for { 10501 err := s.UploadSessionStore.Update(session) 10502 if err == nil { 10503 return nil 10504 } 10505 if !isRepeatableError(err) { 10506 return err 10507 } 10508 tries++ 10509 if tries >= 3 { 10510 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10511 return err 10512 } 10513 } 10514 10515 } 10516 10517 func (s *RetryLayerUserStore) AnalyticsActiveCount(time int64, options model.UserCountOptions) (int64, error) { 10518 10519 tries := 0 10520 for { 10521 result, err := s.UserStore.AnalyticsActiveCount(time, options) 10522 if err == nil { 10523 return result, nil 10524 } 10525 if !isRepeatableError(err) { 10526 return result, err 10527 } 10528 tries++ 10529 if tries >= 3 { 10530 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10531 return result, err 10532 } 10533 } 10534 10535 } 10536 10537 func (s *RetryLayerUserStore) AnalyticsActiveCountForPeriod(startTime int64, endTime int64, options model.UserCountOptions) (int64, error) { 10538 10539 tries := 0 10540 for { 10541 result, err := s.UserStore.AnalyticsActiveCountForPeriod(startTime, endTime, options) 10542 if err == nil { 10543 return result, nil 10544 } 10545 if !isRepeatableError(err) { 10546 return result, err 10547 } 10548 tries++ 10549 if tries >= 3 { 10550 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10551 return result, err 10552 } 10553 } 10554 10555 } 10556 10557 func (s *RetryLayerUserStore) AnalyticsGetExternalUsers(hostDomain string) (bool, error) { 10558 10559 tries := 0 10560 for { 10561 result, err := s.UserStore.AnalyticsGetExternalUsers(hostDomain) 10562 if err == nil { 10563 return result, nil 10564 } 10565 if !isRepeatableError(err) { 10566 return result, err 10567 } 10568 tries++ 10569 if tries >= 3 { 10570 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10571 return result, err 10572 } 10573 } 10574 10575 } 10576 10577 func (s *RetryLayerUserStore) AnalyticsGetGuestCount() (int64, error) { 10578 10579 tries := 0 10580 for { 10581 result, err := s.UserStore.AnalyticsGetGuestCount() 10582 if err == nil { 10583 return result, nil 10584 } 10585 if !isRepeatableError(err) { 10586 return result, err 10587 } 10588 tries++ 10589 if tries >= 3 { 10590 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10591 return result, err 10592 } 10593 } 10594 10595 } 10596 10597 func (s *RetryLayerUserStore) AnalyticsGetInactiveUsersCount() (int64, error) { 10598 10599 tries := 0 10600 for { 10601 result, err := s.UserStore.AnalyticsGetInactiveUsersCount() 10602 if err == nil { 10603 return result, nil 10604 } 10605 if !isRepeatableError(err) { 10606 return result, err 10607 } 10608 tries++ 10609 if tries >= 3 { 10610 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10611 return result, err 10612 } 10613 } 10614 10615 } 10616 10617 func (s *RetryLayerUserStore) AnalyticsGetSystemAdminCount() (int64, error) { 10618 10619 tries := 0 10620 for { 10621 result, err := s.UserStore.AnalyticsGetSystemAdminCount() 10622 if err == nil { 10623 return result, nil 10624 } 10625 if !isRepeatableError(err) { 10626 return result, err 10627 } 10628 tries++ 10629 if tries >= 3 { 10630 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10631 return result, err 10632 } 10633 } 10634 10635 } 10636 10637 func (s *RetryLayerUserStore) AutocompleteUsersInChannel(teamID string, channelID string, term string, options *model.UserSearchOptions) (*model.UserAutocompleteInChannel, error) { 10638 10639 tries := 0 10640 for { 10641 result, err := s.UserStore.AutocompleteUsersInChannel(teamID, channelID, term, options) 10642 if err == nil { 10643 return result, nil 10644 } 10645 if !isRepeatableError(err) { 10646 return result, err 10647 } 10648 tries++ 10649 if tries >= 3 { 10650 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10651 return result, err 10652 } 10653 } 10654 10655 } 10656 10657 func (s *RetryLayerUserStore) ClearAllCustomRoleAssignments() error { 10658 10659 tries := 0 10660 for { 10661 err := s.UserStore.ClearAllCustomRoleAssignments() 10662 if err == nil { 10663 return nil 10664 } 10665 if !isRepeatableError(err) { 10666 return err 10667 } 10668 tries++ 10669 if tries >= 3 { 10670 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10671 return err 10672 } 10673 } 10674 10675 } 10676 10677 func (s *RetryLayerUserStore) ClearCaches() { 10678 10679 s.UserStore.ClearCaches() 10680 10681 } 10682 10683 func (s *RetryLayerUserStore) Count(options model.UserCountOptions) (int64, error) { 10684 10685 tries := 0 10686 for { 10687 result, err := s.UserStore.Count(options) 10688 if err == nil { 10689 return result, nil 10690 } 10691 if !isRepeatableError(err) { 10692 return result, err 10693 } 10694 tries++ 10695 if tries >= 3 { 10696 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10697 return result, err 10698 } 10699 } 10700 10701 } 10702 10703 func (s *RetryLayerUserStore) DeactivateGuests() ([]string, error) { 10704 10705 tries := 0 10706 for { 10707 result, err := s.UserStore.DeactivateGuests() 10708 if err == nil { 10709 return result, nil 10710 } 10711 if !isRepeatableError(err) { 10712 return result, err 10713 } 10714 tries++ 10715 if tries >= 3 { 10716 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10717 return result, err 10718 } 10719 } 10720 10721 } 10722 10723 func (s *RetryLayerUserStore) DemoteUserToGuest(userID string) (*model.User, error) { 10724 10725 tries := 0 10726 for { 10727 result, err := s.UserStore.DemoteUserToGuest(userID) 10728 if err == nil { 10729 return result, nil 10730 } 10731 if !isRepeatableError(err) { 10732 return result, err 10733 } 10734 tries++ 10735 if tries >= 3 { 10736 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10737 return result, err 10738 } 10739 } 10740 10741 } 10742 10743 func (s *RetryLayerUserStore) Get(ctx context.Context, id string) (*model.User, error) { 10744 10745 tries := 0 10746 for { 10747 result, err := s.UserStore.Get(ctx, id) 10748 if err == nil { 10749 return result, nil 10750 } 10751 if !isRepeatableError(err) { 10752 return result, err 10753 } 10754 tries++ 10755 if tries >= 3 { 10756 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10757 return result, err 10758 } 10759 } 10760 10761 } 10762 10763 func (s *RetryLayerUserStore) GetAll() ([]*model.User, error) { 10764 10765 tries := 0 10766 for { 10767 result, err := s.UserStore.GetAll() 10768 if err == nil { 10769 return result, nil 10770 } 10771 if !isRepeatableError(err) { 10772 return result, err 10773 } 10774 tries++ 10775 if tries >= 3 { 10776 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10777 return result, err 10778 } 10779 } 10780 10781 } 10782 10783 func (s *RetryLayerUserStore) GetAllAfter(limit int, afterID string) ([]*model.User, error) { 10784 10785 tries := 0 10786 for { 10787 result, err := s.UserStore.GetAllAfter(limit, afterID) 10788 if err == nil { 10789 return result, nil 10790 } 10791 if !isRepeatableError(err) { 10792 return result, err 10793 } 10794 tries++ 10795 if tries >= 3 { 10796 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10797 return result, err 10798 } 10799 } 10800 10801 } 10802 10803 func (s *RetryLayerUserStore) GetAllNotInAuthService(authServices []string) ([]*model.User, error) { 10804 10805 tries := 0 10806 for { 10807 result, err := s.UserStore.GetAllNotInAuthService(authServices) 10808 if err == nil { 10809 return result, nil 10810 } 10811 if !isRepeatableError(err) { 10812 return result, err 10813 } 10814 tries++ 10815 if tries >= 3 { 10816 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10817 return result, err 10818 } 10819 } 10820 10821 } 10822 10823 func (s *RetryLayerUserStore) GetAllProfiles(options *model.UserGetOptions) ([]*model.User, error) { 10824 10825 tries := 0 10826 for { 10827 result, err := s.UserStore.GetAllProfiles(options) 10828 if err == nil { 10829 return result, nil 10830 } 10831 if !isRepeatableError(err) { 10832 return result, err 10833 } 10834 tries++ 10835 if tries >= 3 { 10836 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10837 return result, err 10838 } 10839 } 10840 10841 } 10842 10843 func (s *RetryLayerUserStore) GetAllProfilesInChannel(ctx context.Context, channelID string, allowFromCache bool) (map[string]*model.User, error) { 10844 10845 tries := 0 10846 for { 10847 result, err := s.UserStore.GetAllProfilesInChannel(ctx, channelID, allowFromCache) 10848 if err == nil { 10849 return result, nil 10850 } 10851 if !isRepeatableError(err) { 10852 return result, err 10853 } 10854 tries++ 10855 if tries >= 3 { 10856 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10857 return result, err 10858 } 10859 } 10860 10861 } 10862 10863 func (s *RetryLayerUserStore) GetAllUsingAuthService(authService string) ([]*model.User, error) { 10864 10865 tries := 0 10866 for { 10867 result, err := s.UserStore.GetAllUsingAuthService(authService) 10868 if err == nil { 10869 return result, nil 10870 } 10871 if !isRepeatableError(err) { 10872 return result, err 10873 } 10874 tries++ 10875 if tries >= 3 { 10876 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10877 return result, err 10878 } 10879 } 10880 10881 } 10882 10883 func (s *RetryLayerUserStore) GetAnyUnreadPostCountForChannel(userID string, channelID string) (int64, error) { 10884 10885 tries := 0 10886 for { 10887 result, err := s.UserStore.GetAnyUnreadPostCountForChannel(userID, channelID) 10888 if err == nil { 10889 return result, nil 10890 } 10891 if !isRepeatableError(err) { 10892 return result, err 10893 } 10894 tries++ 10895 if tries >= 3 { 10896 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10897 return result, err 10898 } 10899 } 10900 10901 } 10902 10903 func (s *RetryLayerUserStore) GetByAuth(authData *string, authService string) (*model.User, error) { 10904 10905 tries := 0 10906 for { 10907 result, err := s.UserStore.GetByAuth(authData, authService) 10908 if err == nil { 10909 return result, nil 10910 } 10911 if !isRepeatableError(err) { 10912 return result, err 10913 } 10914 tries++ 10915 if tries >= 3 { 10916 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10917 return result, err 10918 } 10919 } 10920 10921 } 10922 10923 func (s *RetryLayerUserStore) GetByEmail(email string) (*model.User, error) { 10924 10925 tries := 0 10926 for { 10927 result, err := s.UserStore.GetByEmail(email) 10928 if err == nil { 10929 return result, nil 10930 } 10931 if !isRepeatableError(err) { 10932 return result, err 10933 } 10934 tries++ 10935 if tries >= 3 { 10936 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10937 return result, err 10938 } 10939 } 10940 10941 } 10942 10943 func (s *RetryLayerUserStore) GetByUsername(username string) (*model.User, error) { 10944 10945 tries := 0 10946 for { 10947 result, err := s.UserStore.GetByUsername(username) 10948 if err == nil { 10949 return result, nil 10950 } 10951 if !isRepeatableError(err) { 10952 return result, err 10953 } 10954 tries++ 10955 if tries >= 3 { 10956 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10957 return result, err 10958 } 10959 } 10960 10961 } 10962 10963 func (s *RetryLayerUserStore) GetChannelGroupUsers(channelID string) ([]*model.User, error) { 10964 10965 tries := 0 10966 for { 10967 result, err := s.UserStore.GetChannelGroupUsers(channelID) 10968 if err == nil { 10969 return result, nil 10970 } 10971 if !isRepeatableError(err) { 10972 return result, err 10973 } 10974 tries++ 10975 if tries >= 3 { 10976 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10977 return result, err 10978 } 10979 } 10980 10981 } 10982 10983 func (s *RetryLayerUserStore) GetEtagForAllProfiles() string { 10984 10985 return s.UserStore.GetEtagForAllProfiles() 10986 10987 } 10988 10989 func (s *RetryLayerUserStore) GetEtagForProfiles(teamID string) string { 10990 10991 return s.UserStore.GetEtagForProfiles(teamID) 10992 10993 } 10994 10995 func (s *RetryLayerUserStore) GetEtagForProfilesNotInTeam(teamID string) string { 10996 10997 return s.UserStore.GetEtagForProfilesNotInTeam(teamID) 10998 10999 } 11000 11001 func (s *RetryLayerUserStore) GetForLogin(loginID string, allowSignInWithUsername bool, allowSignInWithEmail bool) (*model.User, error) { 11002 11003 tries := 0 11004 for { 11005 result, err := s.UserStore.GetForLogin(loginID, allowSignInWithUsername, allowSignInWithEmail) 11006 if err == nil { 11007 return result, nil 11008 } 11009 if !isRepeatableError(err) { 11010 return result, err 11011 } 11012 tries++ 11013 if tries >= 3 { 11014 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11015 return result, err 11016 } 11017 } 11018 11019 } 11020 11021 func (s *RetryLayerUserStore) GetKnownUsers(userID string) ([]string, error) { 11022 11023 tries := 0 11024 for { 11025 result, err := s.UserStore.GetKnownUsers(userID) 11026 if err == nil { 11027 return result, nil 11028 } 11029 if !isRepeatableError(err) { 11030 return result, err 11031 } 11032 tries++ 11033 if tries >= 3 { 11034 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11035 return result, err 11036 } 11037 } 11038 11039 } 11040 11041 func (s *RetryLayerUserStore) GetMany(ctx context.Context, ids []string) ([]*model.User, error) { 11042 11043 tries := 0 11044 for { 11045 result, err := s.UserStore.GetMany(ctx, ids) 11046 if err == nil { 11047 return result, nil 11048 } 11049 if !isRepeatableError(err) { 11050 return result, err 11051 } 11052 tries++ 11053 if tries >= 3 { 11054 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11055 return result, err 11056 } 11057 } 11058 11059 } 11060 11061 func (s *RetryLayerUserStore) GetNewUsersForTeam(teamID string, offset int, limit int, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, error) { 11062 11063 tries := 0 11064 for { 11065 result, err := s.UserStore.GetNewUsersForTeam(teamID, offset, limit, viewRestrictions) 11066 if err == nil { 11067 return result, nil 11068 } 11069 if !isRepeatableError(err) { 11070 return result, err 11071 } 11072 tries++ 11073 if tries >= 3 { 11074 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11075 return result, err 11076 } 11077 } 11078 11079 } 11080 11081 func (s *RetryLayerUserStore) GetProfileByGroupChannelIdsForUser(userID string, channelIds []string) (map[string][]*model.User, error) { 11082 11083 tries := 0 11084 for { 11085 result, err := s.UserStore.GetProfileByGroupChannelIdsForUser(userID, channelIds) 11086 if err == nil { 11087 return result, nil 11088 } 11089 if !isRepeatableError(err) { 11090 return result, err 11091 } 11092 tries++ 11093 if tries >= 3 { 11094 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11095 return result, err 11096 } 11097 } 11098 11099 } 11100 11101 func (s *RetryLayerUserStore) GetProfileByIds(ctx context.Context, userIds []string, options *store.UserGetByIdsOpts, allowFromCache bool) ([]*model.User, error) { 11102 11103 tries := 0 11104 for { 11105 result, err := s.UserStore.GetProfileByIds(ctx, userIds, options, allowFromCache) 11106 if err == nil { 11107 return result, nil 11108 } 11109 if !isRepeatableError(err) { 11110 return result, err 11111 } 11112 tries++ 11113 if tries >= 3 { 11114 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11115 return result, err 11116 } 11117 } 11118 11119 } 11120 11121 func (s *RetryLayerUserStore) GetProfiles(options *model.UserGetOptions) ([]*model.User, error) { 11122 11123 tries := 0 11124 for { 11125 result, err := s.UserStore.GetProfiles(options) 11126 if err == nil { 11127 return result, nil 11128 } 11129 if !isRepeatableError(err) { 11130 return result, err 11131 } 11132 tries++ 11133 if tries >= 3 { 11134 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11135 return result, err 11136 } 11137 } 11138 11139 } 11140 11141 func (s *RetryLayerUserStore) GetProfilesByUsernames(usernames []string, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, error) { 11142 11143 tries := 0 11144 for { 11145 result, err := s.UserStore.GetProfilesByUsernames(usernames, viewRestrictions) 11146 if err == nil { 11147 return result, nil 11148 } 11149 if !isRepeatableError(err) { 11150 return result, err 11151 } 11152 tries++ 11153 if tries >= 3 { 11154 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11155 return result, err 11156 } 11157 } 11158 11159 } 11160 11161 func (s *RetryLayerUserStore) GetProfilesInChannel(options *model.UserGetOptions) ([]*model.User, error) { 11162 11163 tries := 0 11164 for { 11165 result, err := s.UserStore.GetProfilesInChannel(options) 11166 if err == nil { 11167 return result, nil 11168 } 11169 if !isRepeatableError(err) { 11170 return result, err 11171 } 11172 tries++ 11173 if tries >= 3 { 11174 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11175 return result, err 11176 } 11177 } 11178 11179 } 11180 11181 func (s *RetryLayerUserStore) GetProfilesInChannelByStatus(options *model.UserGetOptions) ([]*model.User, error) { 11182 11183 tries := 0 11184 for { 11185 result, err := s.UserStore.GetProfilesInChannelByStatus(options) 11186 if err == nil { 11187 return result, nil 11188 } 11189 if !isRepeatableError(err) { 11190 return result, err 11191 } 11192 tries++ 11193 if tries >= 3 { 11194 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11195 return result, err 11196 } 11197 } 11198 11199 } 11200 11201 func (s *RetryLayerUserStore) GetProfilesNotInChannel(teamID string, channelId string, groupConstrained bool, offset int, limit int, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, error) { 11202 11203 tries := 0 11204 for { 11205 result, err := s.UserStore.GetProfilesNotInChannel(teamID, channelId, groupConstrained, offset, limit, viewRestrictions) 11206 if err == nil { 11207 return result, nil 11208 } 11209 if !isRepeatableError(err) { 11210 return result, err 11211 } 11212 tries++ 11213 if tries >= 3 { 11214 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11215 return result, err 11216 } 11217 } 11218 11219 } 11220 11221 func (s *RetryLayerUserStore) GetProfilesNotInTeam(teamID string, groupConstrained bool, offset int, limit int, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, error) { 11222 11223 tries := 0 11224 for { 11225 result, err := s.UserStore.GetProfilesNotInTeam(teamID, groupConstrained, offset, limit, viewRestrictions) 11226 if err == nil { 11227 return result, nil 11228 } 11229 if !isRepeatableError(err) { 11230 return result, err 11231 } 11232 tries++ 11233 if tries >= 3 { 11234 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11235 return result, err 11236 } 11237 } 11238 11239 } 11240 11241 func (s *RetryLayerUserStore) GetProfilesWithoutTeam(options *model.UserGetOptions) ([]*model.User, error) { 11242 11243 tries := 0 11244 for { 11245 result, err := s.UserStore.GetProfilesWithoutTeam(options) 11246 if err == nil { 11247 return result, nil 11248 } 11249 if !isRepeatableError(err) { 11250 return result, err 11251 } 11252 tries++ 11253 if tries >= 3 { 11254 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11255 return result, err 11256 } 11257 } 11258 11259 } 11260 11261 func (s *RetryLayerUserStore) GetRecentlyActiveUsersForTeam(teamID string, offset int, limit int, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, error) { 11262 11263 tries := 0 11264 for { 11265 result, err := s.UserStore.GetRecentlyActiveUsersForTeam(teamID, offset, limit, viewRestrictions) 11266 if err == nil { 11267 return result, nil 11268 } 11269 if !isRepeatableError(err) { 11270 return result, err 11271 } 11272 tries++ 11273 if tries >= 3 { 11274 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11275 return result, err 11276 } 11277 } 11278 11279 } 11280 11281 func (s *RetryLayerUserStore) GetSystemAdminProfiles() (map[string]*model.User, error) { 11282 11283 tries := 0 11284 for { 11285 result, err := s.UserStore.GetSystemAdminProfiles() 11286 if err == nil { 11287 return result, nil 11288 } 11289 if !isRepeatableError(err) { 11290 return result, err 11291 } 11292 tries++ 11293 if tries >= 3 { 11294 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11295 return result, err 11296 } 11297 } 11298 11299 } 11300 11301 func (s *RetryLayerUserStore) GetTeamGroupUsers(teamID string) ([]*model.User, error) { 11302 11303 tries := 0 11304 for { 11305 result, err := s.UserStore.GetTeamGroupUsers(teamID) 11306 if err == nil { 11307 return result, nil 11308 } 11309 if !isRepeatableError(err) { 11310 return result, err 11311 } 11312 tries++ 11313 if tries >= 3 { 11314 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11315 return result, err 11316 } 11317 } 11318 11319 } 11320 11321 func (s *RetryLayerUserStore) GetUnreadCount(userID string) (int64, error) { 11322 11323 tries := 0 11324 for { 11325 result, err := s.UserStore.GetUnreadCount(userID) 11326 if err == nil { 11327 return result, nil 11328 } 11329 if !isRepeatableError(err) { 11330 return result, err 11331 } 11332 tries++ 11333 if tries >= 3 { 11334 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11335 return result, err 11336 } 11337 } 11338 11339 } 11340 11341 func (s *RetryLayerUserStore) GetUnreadCountForChannel(userID string, channelID string) (int64, error) { 11342 11343 tries := 0 11344 for { 11345 result, err := s.UserStore.GetUnreadCountForChannel(userID, channelID) 11346 if err == nil { 11347 return result, nil 11348 } 11349 if !isRepeatableError(err) { 11350 return result, err 11351 } 11352 tries++ 11353 if tries >= 3 { 11354 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11355 return result, err 11356 } 11357 } 11358 11359 } 11360 11361 func (s *RetryLayerUserStore) GetUsersBatchForIndexing(startTime int64, endTime int64, limit int) ([]*model.UserForIndexing, error) { 11362 11363 tries := 0 11364 for { 11365 result, err := s.UserStore.GetUsersBatchForIndexing(startTime, endTime, limit) 11366 if err == nil { 11367 return result, nil 11368 } 11369 if !isRepeatableError(err) { 11370 return result, err 11371 } 11372 tries++ 11373 if tries >= 3 { 11374 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11375 return result, err 11376 } 11377 } 11378 11379 } 11380 11381 func (s *RetryLayerUserStore) InferSystemInstallDate() (int64, error) { 11382 11383 tries := 0 11384 for { 11385 result, err := s.UserStore.InferSystemInstallDate() 11386 if err == nil { 11387 return result, nil 11388 } 11389 if !isRepeatableError(err) { 11390 return result, err 11391 } 11392 tries++ 11393 if tries >= 3 { 11394 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11395 return result, err 11396 } 11397 } 11398 11399 } 11400 11401 func (s *RetryLayerUserStore) InvalidateProfileCacheForUser(userID string) { 11402 11403 s.UserStore.InvalidateProfileCacheForUser(userID) 11404 11405 } 11406 11407 func (s *RetryLayerUserStore) InvalidateProfilesInChannelCache(channelID string) { 11408 11409 s.UserStore.InvalidateProfilesInChannelCache(channelID) 11410 11411 } 11412 11413 func (s *RetryLayerUserStore) InvalidateProfilesInChannelCacheByUser(userID string) { 11414 11415 s.UserStore.InvalidateProfilesInChannelCacheByUser(userID) 11416 11417 } 11418 11419 func (s *RetryLayerUserStore) PermanentDelete(userID string) error { 11420 11421 tries := 0 11422 for { 11423 err := s.UserStore.PermanentDelete(userID) 11424 if err == nil { 11425 return nil 11426 } 11427 if !isRepeatableError(err) { 11428 return err 11429 } 11430 tries++ 11431 if tries >= 3 { 11432 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11433 return err 11434 } 11435 } 11436 11437 } 11438 11439 func (s *RetryLayerUserStore) PromoteGuestToUser(userID string) error { 11440 11441 tries := 0 11442 for { 11443 err := s.UserStore.PromoteGuestToUser(userID) 11444 if err == nil { 11445 return nil 11446 } 11447 if !isRepeatableError(err) { 11448 return err 11449 } 11450 tries++ 11451 if tries >= 3 { 11452 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11453 return err 11454 } 11455 } 11456 11457 } 11458 11459 func (s *RetryLayerUserStore) ResetAuthDataToEmailForUsers(service string, userIDs []string, includeDeleted bool, dryRun bool) (int, error) { 11460 11461 tries := 0 11462 for { 11463 result, err := s.UserStore.ResetAuthDataToEmailForUsers(service, userIDs, includeDeleted, dryRun) 11464 if err == nil { 11465 return result, nil 11466 } 11467 if !isRepeatableError(err) { 11468 return result, err 11469 } 11470 tries++ 11471 if tries >= 3 { 11472 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11473 return result, err 11474 } 11475 } 11476 11477 } 11478 11479 func (s *RetryLayerUserStore) ResetLastPictureUpdate(userID string) error { 11480 11481 tries := 0 11482 for { 11483 err := s.UserStore.ResetLastPictureUpdate(userID) 11484 if err == nil { 11485 return nil 11486 } 11487 if !isRepeatableError(err) { 11488 return err 11489 } 11490 tries++ 11491 if tries >= 3 { 11492 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11493 return err 11494 } 11495 } 11496 11497 } 11498 11499 func (s *RetryLayerUserStore) Save(user *model.User) (*model.User, error) { 11500 11501 tries := 0 11502 for { 11503 result, err := s.UserStore.Save(user) 11504 if err == nil { 11505 return result, nil 11506 } 11507 if !isRepeatableError(err) { 11508 return result, err 11509 } 11510 tries++ 11511 if tries >= 3 { 11512 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11513 return result, err 11514 } 11515 } 11516 11517 } 11518 11519 func (s *RetryLayerUserStore) Search(teamID string, term string, options *model.UserSearchOptions) ([]*model.User, error) { 11520 11521 tries := 0 11522 for { 11523 result, err := s.UserStore.Search(teamID, term, options) 11524 if err == nil { 11525 return result, nil 11526 } 11527 if !isRepeatableError(err) { 11528 return result, err 11529 } 11530 tries++ 11531 if tries >= 3 { 11532 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11533 return result, err 11534 } 11535 } 11536 11537 } 11538 11539 func (s *RetryLayerUserStore) SearchInChannel(channelID string, term string, options *model.UserSearchOptions) ([]*model.User, error) { 11540 11541 tries := 0 11542 for { 11543 result, err := s.UserStore.SearchInChannel(channelID, term, options) 11544 if err == nil { 11545 return result, nil 11546 } 11547 if !isRepeatableError(err) { 11548 return result, err 11549 } 11550 tries++ 11551 if tries >= 3 { 11552 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11553 return result, err 11554 } 11555 } 11556 11557 } 11558 11559 func (s *RetryLayerUserStore) SearchInGroup(groupID string, term string, options *model.UserSearchOptions) ([]*model.User, error) { 11560 11561 tries := 0 11562 for { 11563 result, err := s.UserStore.SearchInGroup(groupID, term, options) 11564 if err == nil { 11565 return result, nil 11566 } 11567 if !isRepeatableError(err) { 11568 return result, err 11569 } 11570 tries++ 11571 if tries >= 3 { 11572 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11573 return result, err 11574 } 11575 } 11576 11577 } 11578 11579 func (s *RetryLayerUserStore) SearchNotInChannel(teamID string, channelID string, term string, options *model.UserSearchOptions) ([]*model.User, error) { 11580 11581 tries := 0 11582 for { 11583 result, err := s.UserStore.SearchNotInChannel(teamID, channelID, term, options) 11584 if err == nil { 11585 return result, nil 11586 } 11587 if !isRepeatableError(err) { 11588 return result, err 11589 } 11590 tries++ 11591 if tries >= 3 { 11592 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11593 return result, err 11594 } 11595 } 11596 11597 } 11598 11599 func (s *RetryLayerUserStore) SearchNotInTeam(notInTeamID string, term string, options *model.UserSearchOptions) ([]*model.User, error) { 11600 11601 tries := 0 11602 for { 11603 result, err := s.UserStore.SearchNotInTeam(notInTeamID, term, options) 11604 if err == nil { 11605 return result, nil 11606 } 11607 if !isRepeatableError(err) { 11608 return result, err 11609 } 11610 tries++ 11611 if tries >= 3 { 11612 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11613 return result, err 11614 } 11615 } 11616 11617 } 11618 11619 func (s *RetryLayerUserStore) SearchWithoutTeam(term string, options *model.UserSearchOptions) ([]*model.User, error) { 11620 11621 tries := 0 11622 for { 11623 result, err := s.UserStore.SearchWithoutTeam(term, options) 11624 if err == nil { 11625 return result, nil 11626 } 11627 if !isRepeatableError(err) { 11628 return result, err 11629 } 11630 tries++ 11631 if tries >= 3 { 11632 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11633 return result, err 11634 } 11635 } 11636 11637 } 11638 11639 func (s *RetryLayerUserStore) Update(user *model.User, allowRoleUpdate bool) (*model.UserUpdate, error) { 11640 11641 tries := 0 11642 for { 11643 result, err := s.UserStore.Update(user, allowRoleUpdate) 11644 if err == nil { 11645 return result, nil 11646 } 11647 if !isRepeatableError(err) { 11648 return result, err 11649 } 11650 tries++ 11651 if tries >= 3 { 11652 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11653 return result, err 11654 } 11655 } 11656 11657 } 11658 11659 func (s *RetryLayerUserStore) UpdateAuthData(userID string, service string, authData *string, email string, resetMfa bool) (string, error) { 11660 11661 tries := 0 11662 for { 11663 result, err := s.UserStore.UpdateAuthData(userID, service, authData, email, resetMfa) 11664 if err == nil { 11665 return result, nil 11666 } 11667 if !isRepeatableError(err) { 11668 return result, err 11669 } 11670 tries++ 11671 if tries >= 3 { 11672 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11673 return result, err 11674 } 11675 } 11676 11677 } 11678 11679 func (s *RetryLayerUserStore) UpdateFailedPasswordAttempts(userID string, attempts int) error { 11680 11681 tries := 0 11682 for { 11683 err := s.UserStore.UpdateFailedPasswordAttempts(userID, attempts) 11684 if err == nil { 11685 return nil 11686 } 11687 if !isRepeatableError(err) { 11688 return err 11689 } 11690 tries++ 11691 if tries >= 3 { 11692 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11693 return err 11694 } 11695 } 11696 11697 } 11698 11699 func (s *RetryLayerUserStore) UpdateLastPictureUpdate(userID string) error { 11700 11701 tries := 0 11702 for { 11703 err := s.UserStore.UpdateLastPictureUpdate(userID) 11704 if err == nil { 11705 return nil 11706 } 11707 if !isRepeatableError(err) { 11708 return err 11709 } 11710 tries++ 11711 if tries >= 3 { 11712 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11713 return err 11714 } 11715 } 11716 11717 } 11718 11719 func (s *RetryLayerUserStore) UpdateMfaActive(userID string, active bool) error { 11720 11721 tries := 0 11722 for { 11723 err := s.UserStore.UpdateMfaActive(userID, active) 11724 if err == nil { 11725 return nil 11726 } 11727 if !isRepeatableError(err) { 11728 return err 11729 } 11730 tries++ 11731 if tries >= 3 { 11732 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11733 return err 11734 } 11735 } 11736 11737 } 11738 11739 func (s *RetryLayerUserStore) UpdateMfaSecret(userID string, secret string) error { 11740 11741 tries := 0 11742 for { 11743 err := s.UserStore.UpdateMfaSecret(userID, secret) 11744 if err == nil { 11745 return nil 11746 } 11747 if !isRepeatableError(err) { 11748 return err 11749 } 11750 tries++ 11751 if tries >= 3 { 11752 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11753 return err 11754 } 11755 } 11756 11757 } 11758 11759 func (s *RetryLayerUserStore) UpdatePassword(userID string, newPassword string) error { 11760 11761 tries := 0 11762 for { 11763 err := s.UserStore.UpdatePassword(userID, newPassword) 11764 if err == nil { 11765 return nil 11766 } 11767 if !isRepeatableError(err) { 11768 return err 11769 } 11770 tries++ 11771 if tries >= 3 { 11772 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11773 return err 11774 } 11775 } 11776 11777 } 11778 11779 func (s *RetryLayerUserStore) UpdateUpdateAt(userID string) (int64, error) { 11780 11781 tries := 0 11782 for { 11783 result, err := s.UserStore.UpdateUpdateAt(userID) 11784 if err == nil { 11785 return result, nil 11786 } 11787 if !isRepeatableError(err) { 11788 return result, err 11789 } 11790 tries++ 11791 if tries >= 3 { 11792 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11793 return result, err 11794 } 11795 } 11796 11797 } 11798 11799 func (s *RetryLayerUserStore) VerifyEmail(userID string, email string) (string, error) { 11800 11801 tries := 0 11802 for { 11803 result, err := s.UserStore.VerifyEmail(userID, email) 11804 if err == nil { 11805 return result, nil 11806 } 11807 if !isRepeatableError(err) { 11808 return result, err 11809 } 11810 tries++ 11811 if tries >= 3 { 11812 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11813 return result, err 11814 } 11815 } 11816 11817 } 11818 11819 func (s *RetryLayerUserAccessTokenStore) Delete(tokenID string) error { 11820 11821 tries := 0 11822 for { 11823 err := s.UserAccessTokenStore.Delete(tokenID) 11824 if err == nil { 11825 return nil 11826 } 11827 if !isRepeatableError(err) { 11828 return err 11829 } 11830 tries++ 11831 if tries >= 3 { 11832 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11833 return err 11834 } 11835 } 11836 11837 } 11838 11839 func (s *RetryLayerUserAccessTokenStore) DeleteAllForUser(userID string) error { 11840 11841 tries := 0 11842 for { 11843 err := s.UserAccessTokenStore.DeleteAllForUser(userID) 11844 if err == nil { 11845 return nil 11846 } 11847 if !isRepeatableError(err) { 11848 return err 11849 } 11850 tries++ 11851 if tries >= 3 { 11852 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11853 return err 11854 } 11855 } 11856 11857 } 11858 11859 func (s *RetryLayerUserAccessTokenStore) Get(tokenID string) (*model.UserAccessToken, error) { 11860 11861 tries := 0 11862 for { 11863 result, err := s.UserAccessTokenStore.Get(tokenID) 11864 if err == nil { 11865 return result, nil 11866 } 11867 if !isRepeatableError(err) { 11868 return result, err 11869 } 11870 tries++ 11871 if tries >= 3 { 11872 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11873 return result, err 11874 } 11875 } 11876 11877 } 11878 11879 func (s *RetryLayerUserAccessTokenStore) GetAll(offset int, limit int) ([]*model.UserAccessToken, error) { 11880 11881 tries := 0 11882 for { 11883 result, err := s.UserAccessTokenStore.GetAll(offset, limit) 11884 if err == nil { 11885 return result, nil 11886 } 11887 if !isRepeatableError(err) { 11888 return result, err 11889 } 11890 tries++ 11891 if tries >= 3 { 11892 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11893 return result, err 11894 } 11895 } 11896 11897 } 11898 11899 func (s *RetryLayerUserAccessTokenStore) GetByToken(tokenString string) (*model.UserAccessToken, error) { 11900 11901 tries := 0 11902 for { 11903 result, err := s.UserAccessTokenStore.GetByToken(tokenString) 11904 if err == nil { 11905 return result, nil 11906 } 11907 if !isRepeatableError(err) { 11908 return result, err 11909 } 11910 tries++ 11911 if tries >= 3 { 11912 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11913 return result, err 11914 } 11915 } 11916 11917 } 11918 11919 func (s *RetryLayerUserAccessTokenStore) GetByUser(userID string, page int, perPage int) ([]*model.UserAccessToken, error) { 11920 11921 tries := 0 11922 for { 11923 result, err := s.UserAccessTokenStore.GetByUser(userID, page, perPage) 11924 if err == nil { 11925 return result, nil 11926 } 11927 if !isRepeatableError(err) { 11928 return result, err 11929 } 11930 tries++ 11931 if tries >= 3 { 11932 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11933 return result, err 11934 } 11935 } 11936 11937 } 11938 11939 func (s *RetryLayerUserAccessTokenStore) Save(token *model.UserAccessToken) (*model.UserAccessToken, error) { 11940 11941 tries := 0 11942 for { 11943 result, err := s.UserAccessTokenStore.Save(token) 11944 if err == nil { 11945 return result, nil 11946 } 11947 if !isRepeatableError(err) { 11948 return result, err 11949 } 11950 tries++ 11951 if tries >= 3 { 11952 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11953 return result, err 11954 } 11955 } 11956 11957 } 11958 11959 func (s *RetryLayerUserAccessTokenStore) Search(term string) ([]*model.UserAccessToken, error) { 11960 11961 tries := 0 11962 for { 11963 result, err := s.UserAccessTokenStore.Search(term) 11964 if err == nil { 11965 return result, nil 11966 } 11967 if !isRepeatableError(err) { 11968 return result, err 11969 } 11970 tries++ 11971 if tries >= 3 { 11972 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11973 return result, err 11974 } 11975 } 11976 11977 } 11978 11979 func (s *RetryLayerUserAccessTokenStore) UpdateTokenDisable(tokenID string) error { 11980 11981 tries := 0 11982 for { 11983 err := s.UserAccessTokenStore.UpdateTokenDisable(tokenID) 11984 if err == nil { 11985 return nil 11986 } 11987 if !isRepeatableError(err) { 11988 return err 11989 } 11990 tries++ 11991 if tries >= 3 { 11992 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11993 return err 11994 } 11995 } 11996 11997 } 11998 11999 func (s *RetryLayerUserAccessTokenStore) UpdateTokenEnable(tokenID string) error { 12000 12001 tries := 0 12002 for { 12003 err := s.UserAccessTokenStore.UpdateTokenEnable(tokenID) 12004 if err == nil { 12005 return nil 12006 } 12007 if !isRepeatableError(err) { 12008 return err 12009 } 12010 tries++ 12011 if tries >= 3 { 12012 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12013 return err 12014 } 12015 } 12016 12017 } 12018 12019 func (s *RetryLayerUserTermsOfServiceStore) Delete(userID string, termsOfServiceId string) error { 12020 12021 tries := 0 12022 for { 12023 err := s.UserTermsOfServiceStore.Delete(userID, termsOfServiceId) 12024 if err == nil { 12025 return nil 12026 } 12027 if !isRepeatableError(err) { 12028 return err 12029 } 12030 tries++ 12031 if tries >= 3 { 12032 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12033 return err 12034 } 12035 } 12036 12037 } 12038 12039 func (s *RetryLayerUserTermsOfServiceStore) GetByUser(userID string) (*model.UserTermsOfService, error) { 12040 12041 tries := 0 12042 for { 12043 result, err := s.UserTermsOfServiceStore.GetByUser(userID) 12044 if err == nil { 12045 return result, nil 12046 } 12047 if !isRepeatableError(err) { 12048 return result, err 12049 } 12050 tries++ 12051 if tries >= 3 { 12052 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12053 return result, err 12054 } 12055 } 12056 12057 } 12058 12059 func (s *RetryLayerUserTermsOfServiceStore) Save(userTermsOfService *model.UserTermsOfService) (*model.UserTermsOfService, error) { 12060 12061 tries := 0 12062 for { 12063 result, err := s.UserTermsOfServiceStore.Save(userTermsOfService) 12064 if err == nil { 12065 return result, nil 12066 } 12067 if !isRepeatableError(err) { 12068 return result, err 12069 } 12070 tries++ 12071 if tries >= 3 { 12072 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12073 return result, err 12074 } 12075 } 12076 12077 } 12078 12079 func (s *RetryLayerWebhookStore) AnalyticsIncomingCount(teamID string) (int64, error) { 12080 12081 tries := 0 12082 for { 12083 result, err := s.WebhookStore.AnalyticsIncomingCount(teamID) 12084 if err == nil { 12085 return result, nil 12086 } 12087 if !isRepeatableError(err) { 12088 return result, err 12089 } 12090 tries++ 12091 if tries >= 3 { 12092 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12093 return result, err 12094 } 12095 } 12096 12097 } 12098 12099 func (s *RetryLayerWebhookStore) AnalyticsOutgoingCount(teamID string) (int64, error) { 12100 12101 tries := 0 12102 for { 12103 result, err := s.WebhookStore.AnalyticsOutgoingCount(teamID) 12104 if err == nil { 12105 return result, nil 12106 } 12107 if !isRepeatableError(err) { 12108 return result, err 12109 } 12110 tries++ 12111 if tries >= 3 { 12112 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12113 return result, err 12114 } 12115 } 12116 12117 } 12118 12119 func (s *RetryLayerWebhookStore) ClearCaches() { 12120 12121 s.WebhookStore.ClearCaches() 12122 12123 } 12124 12125 func (s *RetryLayerWebhookStore) DeleteIncoming(webhookID string, time int64) error { 12126 12127 tries := 0 12128 for { 12129 err := s.WebhookStore.DeleteIncoming(webhookID, time) 12130 if err == nil { 12131 return nil 12132 } 12133 if !isRepeatableError(err) { 12134 return err 12135 } 12136 tries++ 12137 if tries >= 3 { 12138 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12139 return err 12140 } 12141 } 12142 12143 } 12144 12145 func (s *RetryLayerWebhookStore) DeleteOutgoing(webhookID string, time int64) error { 12146 12147 tries := 0 12148 for { 12149 err := s.WebhookStore.DeleteOutgoing(webhookID, time) 12150 if err == nil { 12151 return nil 12152 } 12153 if !isRepeatableError(err) { 12154 return err 12155 } 12156 tries++ 12157 if tries >= 3 { 12158 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12159 return err 12160 } 12161 } 12162 12163 } 12164 12165 func (s *RetryLayerWebhookStore) GetIncoming(id string, allowFromCache bool) (*model.IncomingWebhook, error) { 12166 12167 tries := 0 12168 for { 12169 result, err := s.WebhookStore.GetIncoming(id, allowFromCache) 12170 if err == nil { 12171 return result, nil 12172 } 12173 if !isRepeatableError(err) { 12174 return result, err 12175 } 12176 tries++ 12177 if tries >= 3 { 12178 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12179 return result, err 12180 } 12181 } 12182 12183 } 12184 12185 func (s *RetryLayerWebhookStore) GetIncomingByChannel(channelID string) ([]*model.IncomingWebhook, error) { 12186 12187 tries := 0 12188 for { 12189 result, err := s.WebhookStore.GetIncomingByChannel(channelID) 12190 if err == nil { 12191 return result, nil 12192 } 12193 if !isRepeatableError(err) { 12194 return result, err 12195 } 12196 tries++ 12197 if tries >= 3 { 12198 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12199 return result, err 12200 } 12201 } 12202 12203 } 12204 12205 func (s *RetryLayerWebhookStore) GetIncomingByTeam(teamID string, offset int, limit int) ([]*model.IncomingWebhook, error) { 12206 12207 tries := 0 12208 for { 12209 result, err := s.WebhookStore.GetIncomingByTeam(teamID, offset, limit) 12210 if err == nil { 12211 return result, nil 12212 } 12213 if !isRepeatableError(err) { 12214 return result, err 12215 } 12216 tries++ 12217 if tries >= 3 { 12218 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12219 return result, err 12220 } 12221 } 12222 12223 } 12224 12225 func (s *RetryLayerWebhookStore) GetIncomingByTeamByUser(teamID string, userID string, offset int, limit int) ([]*model.IncomingWebhook, error) { 12226 12227 tries := 0 12228 for { 12229 result, err := s.WebhookStore.GetIncomingByTeamByUser(teamID, userID, offset, limit) 12230 if err == nil { 12231 return result, nil 12232 } 12233 if !isRepeatableError(err) { 12234 return result, err 12235 } 12236 tries++ 12237 if tries >= 3 { 12238 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12239 return result, err 12240 } 12241 } 12242 12243 } 12244 12245 func (s *RetryLayerWebhookStore) GetIncomingList(offset int, limit int) ([]*model.IncomingWebhook, error) { 12246 12247 tries := 0 12248 for { 12249 result, err := s.WebhookStore.GetIncomingList(offset, limit) 12250 if err == nil { 12251 return result, nil 12252 } 12253 if !isRepeatableError(err) { 12254 return result, err 12255 } 12256 tries++ 12257 if tries >= 3 { 12258 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12259 return result, err 12260 } 12261 } 12262 12263 } 12264 12265 func (s *RetryLayerWebhookStore) GetIncomingListByUser(userID string, offset int, limit int) ([]*model.IncomingWebhook, error) { 12266 12267 tries := 0 12268 for { 12269 result, err := s.WebhookStore.GetIncomingListByUser(userID, offset, limit) 12270 if err == nil { 12271 return result, nil 12272 } 12273 if !isRepeatableError(err) { 12274 return result, err 12275 } 12276 tries++ 12277 if tries >= 3 { 12278 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12279 return result, err 12280 } 12281 } 12282 12283 } 12284 12285 func (s *RetryLayerWebhookStore) GetOutgoing(id string) (*model.OutgoingWebhook, error) { 12286 12287 tries := 0 12288 for { 12289 result, err := s.WebhookStore.GetOutgoing(id) 12290 if err == nil { 12291 return result, nil 12292 } 12293 if !isRepeatableError(err) { 12294 return result, err 12295 } 12296 tries++ 12297 if tries >= 3 { 12298 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12299 return result, err 12300 } 12301 } 12302 12303 } 12304 12305 func (s *RetryLayerWebhookStore) GetOutgoingByChannel(channelID string, offset int, limit int) ([]*model.OutgoingWebhook, error) { 12306 12307 tries := 0 12308 for { 12309 result, err := s.WebhookStore.GetOutgoingByChannel(channelID, offset, limit) 12310 if err == nil { 12311 return result, nil 12312 } 12313 if !isRepeatableError(err) { 12314 return result, err 12315 } 12316 tries++ 12317 if tries >= 3 { 12318 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12319 return result, err 12320 } 12321 } 12322 12323 } 12324 12325 func (s *RetryLayerWebhookStore) GetOutgoingByChannelByUser(channelID string, userID string, offset int, limit int) ([]*model.OutgoingWebhook, error) { 12326 12327 tries := 0 12328 for { 12329 result, err := s.WebhookStore.GetOutgoingByChannelByUser(channelID, userID, offset, limit) 12330 if err == nil { 12331 return result, nil 12332 } 12333 if !isRepeatableError(err) { 12334 return result, err 12335 } 12336 tries++ 12337 if tries >= 3 { 12338 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12339 return result, err 12340 } 12341 } 12342 12343 } 12344 12345 func (s *RetryLayerWebhookStore) GetOutgoingByTeam(teamID string, offset int, limit int) ([]*model.OutgoingWebhook, error) { 12346 12347 tries := 0 12348 for { 12349 result, err := s.WebhookStore.GetOutgoingByTeam(teamID, offset, limit) 12350 if err == nil { 12351 return result, nil 12352 } 12353 if !isRepeatableError(err) { 12354 return result, err 12355 } 12356 tries++ 12357 if tries >= 3 { 12358 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12359 return result, err 12360 } 12361 } 12362 12363 } 12364 12365 func (s *RetryLayerWebhookStore) GetOutgoingByTeamByUser(teamID string, userID string, offset int, limit int) ([]*model.OutgoingWebhook, error) { 12366 12367 tries := 0 12368 for { 12369 result, err := s.WebhookStore.GetOutgoingByTeamByUser(teamID, userID, offset, limit) 12370 if err == nil { 12371 return result, nil 12372 } 12373 if !isRepeatableError(err) { 12374 return result, err 12375 } 12376 tries++ 12377 if tries >= 3 { 12378 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12379 return result, err 12380 } 12381 } 12382 12383 } 12384 12385 func (s *RetryLayerWebhookStore) GetOutgoingList(offset int, limit int) ([]*model.OutgoingWebhook, error) { 12386 12387 tries := 0 12388 for { 12389 result, err := s.WebhookStore.GetOutgoingList(offset, limit) 12390 if err == nil { 12391 return result, nil 12392 } 12393 if !isRepeatableError(err) { 12394 return result, err 12395 } 12396 tries++ 12397 if tries >= 3 { 12398 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12399 return result, err 12400 } 12401 } 12402 12403 } 12404 12405 func (s *RetryLayerWebhookStore) GetOutgoingListByUser(userID string, offset int, limit int) ([]*model.OutgoingWebhook, error) { 12406 12407 tries := 0 12408 for { 12409 result, err := s.WebhookStore.GetOutgoingListByUser(userID, offset, limit) 12410 if err == nil { 12411 return result, nil 12412 } 12413 if !isRepeatableError(err) { 12414 return result, err 12415 } 12416 tries++ 12417 if tries >= 3 { 12418 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12419 return result, err 12420 } 12421 } 12422 12423 } 12424 12425 func (s *RetryLayerWebhookStore) InvalidateWebhookCache(webhook string) { 12426 12427 s.WebhookStore.InvalidateWebhookCache(webhook) 12428 12429 } 12430 12431 func (s *RetryLayerWebhookStore) PermanentDeleteIncomingByChannel(channelID string) error { 12432 12433 tries := 0 12434 for { 12435 err := s.WebhookStore.PermanentDeleteIncomingByChannel(channelID) 12436 if err == nil { 12437 return nil 12438 } 12439 if !isRepeatableError(err) { 12440 return err 12441 } 12442 tries++ 12443 if tries >= 3 { 12444 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12445 return err 12446 } 12447 } 12448 12449 } 12450 12451 func (s *RetryLayerWebhookStore) PermanentDeleteIncomingByUser(userID string) error { 12452 12453 tries := 0 12454 for { 12455 err := s.WebhookStore.PermanentDeleteIncomingByUser(userID) 12456 if err == nil { 12457 return nil 12458 } 12459 if !isRepeatableError(err) { 12460 return err 12461 } 12462 tries++ 12463 if tries >= 3 { 12464 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12465 return err 12466 } 12467 } 12468 12469 } 12470 12471 func (s *RetryLayerWebhookStore) PermanentDeleteOutgoingByChannel(channelID string) error { 12472 12473 tries := 0 12474 for { 12475 err := s.WebhookStore.PermanentDeleteOutgoingByChannel(channelID) 12476 if err == nil { 12477 return nil 12478 } 12479 if !isRepeatableError(err) { 12480 return err 12481 } 12482 tries++ 12483 if tries >= 3 { 12484 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12485 return err 12486 } 12487 } 12488 12489 } 12490 12491 func (s *RetryLayerWebhookStore) PermanentDeleteOutgoingByUser(userID string) error { 12492 12493 tries := 0 12494 for { 12495 err := s.WebhookStore.PermanentDeleteOutgoingByUser(userID) 12496 if err == nil { 12497 return nil 12498 } 12499 if !isRepeatableError(err) { 12500 return err 12501 } 12502 tries++ 12503 if tries >= 3 { 12504 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12505 return err 12506 } 12507 } 12508 12509 } 12510 12511 func (s *RetryLayerWebhookStore) SaveIncoming(webhook *model.IncomingWebhook) (*model.IncomingWebhook, error) { 12512 12513 tries := 0 12514 for { 12515 result, err := s.WebhookStore.SaveIncoming(webhook) 12516 if err == nil { 12517 return result, nil 12518 } 12519 if !isRepeatableError(err) { 12520 return result, err 12521 } 12522 tries++ 12523 if tries >= 3 { 12524 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12525 return result, err 12526 } 12527 } 12528 12529 } 12530 12531 func (s *RetryLayerWebhookStore) SaveOutgoing(webhook *model.OutgoingWebhook) (*model.OutgoingWebhook, error) { 12532 12533 tries := 0 12534 for { 12535 result, err := s.WebhookStore.SaveOutgoing(webhook) 12536 if err == nil { 12537 return result, nil 12538 } 12539 if !isRepeatableError(err) { 12540 return result, err 12541 } 12542 tries++ 12543 if tries >= 3 { 12544 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12545 return result, err 12546 } 12547 } 12548 12549 } 12550 12551 func (s *RetryLayerWebhookStore) UpdateIncoming(webhook *model.IncomingWebhook) (*model.IncomingWebhook, error) { 12552 12553 tries := 0 12554 for { 12555 result, err := s.WebhookStore.UpdateIncoming(webhook) 12556 if err == nil { 12557 return result, nil 12558 } 12559 if !isRepeatableError(err) { 12560 return result, err 12561 } 12562 tries++ 12563 if tries >= 3 { 12564 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12565 return result, err 12566 } 12567 } 12568 12569 } 12570 12571 func (s *RetryLayerWebhookStore) UpdateOutgoing(hook *model.OutgoingWebhook) (*model.OutgoingWebhook, error) { 12572 12573 tries := 0 12574 for { 12575 result, err := s.WebhookStore.UpdateOutgoing(hook) 12576 if err == nil { 12577 return result, nil 12578 } 12579 if !isRepeatableError(err) { 12580 return result, err 12581 } 12582 tries++ 12583 if tries >= 3 { 12584 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12585 return result, err 12586 } 12587 } 12588 12589 } 12590 12591 func (s *RetryLayer) Close() { 12592 s.Store.Close() 12593 } 12594 12595 func (s *RetryLayer) DropAllTables() { 12596 s.Store.DropAllTables() 12597 } 12598 12599 func (s *RetryLayer) GetCurrentSchemaVersion() string { 12600 return s.Store.GetCurrentSchemaVersion() 12601 } 12602 12603 func (s *RetryLayer) LockToMaster() { 12604 s.Store.LockToMaster() 12605 } 12606 12607 func (s *RetryLayer) MarkSystemRanUnitTests() { 12608 s.Store.MarkSystemRanUnitTests() 12609 } 12610 12611 func (s *RetryLayer) SetContext(context context.Context) { 12612 s.Store.SetContext(context) 12613 } 12614 12615 func (s *RetryLayer) TotalMasterDbConnections() int { 12616 return s.Store.TotalMasterDbConnections() 12617 } 12618 12619 func (s *RetryLayer) TotalReadDbConnections() int { 12620 return s.Store.TotalReadDbConnections() 12621 } 12622 12623 func (s *RetryLayer) TotalSearchDbConnections() int { 12624 return s.Store.TotalSearchDbConnections() 12625 } 12626 12627 func (s *RetryLayer) UnlockFromMaster() { 12628 s.Store.UnlockFromMaster() 12629 } 12630 12631 func New(childStore store.Store) *RetryLayer { 12632 newStore := RetryLayer{ 12633 Store: childStore, 12634 } 12635 12636 newStore.AuditStore = &RetryLayerAuditStore{AuditStore: childStore.Audit(), Root: &newStore} 12637 newStore.BotStore = &RetryLayerBotStore{BotStore: childStore.Bot(), Root: &newStore} 12638 newStore.ChannelStore = &RetryLayerChannelStore{ChannelStore: childStore.Channel(), Root: &newStore} 12639 newStore.ChannelMemberHistoryStore = &RetryLayerChannelMemberHistoryStore{ChannelMemberHistoryStore: childStore.ChannelMemberHistory(), Root: &newStore} 12640 newStore.ClusterDiscoveryStore = &RetryLayerClusterDiscoveryStore{ClusterDiscoveryStore: childStore.ClusterDiscovery(), Root: &newStore} 12641 newStore.CommandStore = &RetryLayerCommandStore{CommandStore: childStore.Command(), Root: &newStore} 12642 newStore.CommandWebhookStore = &RetryLayerCommandWebhookStore{CommandWebhookStore: childStore.CommandWebhook(), Root: &newStore} 12643 newStore.ComplianceStore = &RetryLayerComplianceStore{ComplianceStore: childStore.Compliance(), Root: &newStore} 12644 newStore.EmojiStore = &RetryLayerEmojiStore{EmojiStore: childStore.Emoji(), Root: &newStore} 12645 newStore.FileInfoStore = &RetryLayerFileInfoStore{FileInfoStore: childStore.FileInfo(), Root: &newStore} 12646 newStore.GroupStore = &RetryLayerGroupStore{GroupStore: childStore.Group(), Root: &newStore} 12647 newStore.JobStore = &RetryLayerJobStore{JobStore: childStore.Job(), Root: &newStore} 12648 newStore.LicenseStore = &RetryLayerLicenseStore{LicenseStore: childStore.License(), Root: &newStore} 12649 newStore.LinkMetadataStore = &RetryLayerLinkMetadataStore{LinkMetadataStore: childStore.LinkMetadata(), Root: &newStore} 12650 newStore.OAuthStore = &RetryLayerOAuthStore{OAuthStore: childStore.OAuth(), Root: &newStore} 12651 newStore.PluginStore = &RetryLayerPluginStore{PluginStore: childStore.Plugin(), Root: &newStore} 12652 newStore.PostStore = &RetryLayerPostStore{PostStore: childStore.Post(), Root: &newStore} 12653 newStore.PreferenceStore = &RetryLayerPreferenceStore{PreferenceStore: childStore.Preference(), Root: &newStore} 12654 newStore.ProductNoticesStore = &RetryLayerProductNoticesStore{ProductNoticesStore: childStore.ProductNotices(), Root: &newStore} 12655 newStore.ReactionStore = &RetryLayerReactionStore{ReactionStore: childStore.Reaction(), Root: &newStore} 12656 newStore.RemoteClusterStore = &RetryLayerRemoteClusterStore{RemoteClusterStore: childStore.RemoteCluster(), Root: &newStore} 12657 newStore.RetentionPolicyStore = &RetryLayerRetentionPolicyStore{RetentionPolicyStore: childStore.RetentionPolicy(), Root: &newStore} 12658 newStore.RoleStore = &RetryLayerRoleStore{RoleStore: childStore.Role(), Root: &newStore} 12659 newStore.SchemeStore = &RetryLayerSchemeStore{SchemeStore: childStore.Scheme(), Root: &newStore} 12660 newStore.SessionStore = &RetryLayerSessionStore{SessionStore: childStore.Session(), Root: &newStore} 12661 newStore.SharedChannelStore = &RetryLayerSharedChannelStore{SharedChannelStore: childStore.SharedChannel(), Root: &newStore} 12662 newStore.StatusStore = &RetryLayerStatusStore{StatusStore: childStore.Status(), Root: &newStore} 12663 newStore.SystemStore = &RetryLayerSystemStore{SystemStore: childStore.System(), Root: &newStore} 12664 newStore.TeamStore = &RetryLayerTeamStore{TeamStore: childStore.Team(), Root: &newStore} 12665 newStore.TermsOfServiceStore = &RetryLayerTermsOfServiceStore{TermsOfServiceStore: childStore.TermsOfService(), Root: &newStore} 12666 newStore.ThreadStore = &RetryLayerThreadStore{ThreadStore: childStore.Thread(), Root: &newStore} 12667 newStore.TokenStore = &RetryLayerTokenStore{TokenStore: childStore.Token(), Root: &newStore} 12668 newStore.TrackPointStore = &RetryLayerTrackPointStore{TrackPointStore: childStore.TrackPoint(), Root: &newStore} 12669 newStore.TrackRecordStore = &RetryLayerTrackRecordStore{TrackRecordStore: childStore.TrackRecord(), Root: &newStore} 12670 newStore.UploadSessionStore = &RetryLayerUploadSessionStore{UploadSessionStore: childStore.UploadSession(), Root: &newStore} 12671 newStore.UserStore = &RetryLayerUserStore{UserStore: childStore.User(), Root: &newStore} 12672 newStore.UserAccessTokenStore = &RetryLayerUserAccessTokenStore{UserAccessTokenStore: childStore.UserAccessToken(), Root: &newStore} 12673 newStore.UserTermsOfServiceStore = &RetryLayerUserTermsOfServiceStore{UserTermsOfServiceStore: childStore.UserTermsOfService(), Root: &newStore} 12674 newStore.WebhookStore = &RetryLayerWebhookStore{WebhookStore: childStore.Webhook(), Root: &newStore} 12675 return &newStore 12676 }