github.com/mattermost/mattermost-server/v5@v5.39.3/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/mattermost/mattermost-server/v5/model" 15 "github.com/mattermost/mattermost-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 UploadSessionStore store.UploadSessionStore 56 UserStore store.UserStore 57 UserAccessTokenStore store.UserAccessTokenStore 58 UserTermsOfServiceStore store.UserTermsOfServiceStore 59 WebhookStore store.WebhookStore 60 } 61 62 func (s *RetryLayer) Audit() store.AuditStore { 63 return s.AuditStore 64 } 65 66 func (s *RetryLayer) Bot() store.BotStore { 67 return s.BotStore 68 } 69 70 func (s *RetryLayer) Channel() store.ChannelStore { 71 return s.ChannelStore 72 } 73 74 func (s *RetryLayer) ChannelMemberHistory() store.ChannelMemberHistoryStore { 75 return s.ChannelMemberHistoryStore 76 } 77 78 func (s *RetryLayer) ClusterDiscovery() store.ClusterDiscoveryStore { 79 return s.ClusterDiscoveryStore 80 } 81 82 func (s *RetryLayer) Command() store.CommandStore { 83 return s.CommandStore 84 } 85 86 func (s *RetryLayer) CommandWebhook() store.CommandWebhookStore { 87 return s.CommandWebhookStore 88 } 89 90 func (s *RetryLayer) Compliance() store.ComplianceStore { 91 return s.ComplianceStore 92 } 93 94 func (s *RetryLayer) Emoji() store.EmojiStore { 95 return s.EmojiStore 96 } 97 98 func (s *RetryLayer) FileInfo() store.FileInfoStore { 99 return s.FileInfoStore 100 } 101 102 func (s *RetryLayer) Group() store.GroupStore { 103 return s.GroupStore 104 } 105 106 func (s *RetryLayer) Job() store.JobStore { 107 return s.JobStore 108 } 109 110 func (s *RetryLayer) License() store.LicenseStore { 111 return s.LicenseStore 112 } 113 114 func (s *RetryLayer) LinkMetadata() store.LinkMetadataStore { 115 return s.LinkMetadataStore 116 } 117 118 func (s *RetryLayer) OAuth() store.OAuthStore { 119 return s.OAuthStore 120 } 121 122 func (s *RetryLayer) Plugin() store.PluginStore { 123 return s.PluginStore 124 } 125 126 func (s *RetryLayer) Post() store.PostStore { 127 return s.PostStore 128 } 129 130 func (s *RetryLayer) Preference() store.PreferenceStore { 131 return s.PreferenceStore 132 } 133 134 func (s *RetryLayer) ProductNotices() store.ProductNoticesStore { 135 return s.ProductNoticesStore 136 } 137 138 func (s *RetryLayer) Reaction() store.ReactionStore { 139 return s.ReactionStore 140 } 141 142 func (s *RetryLayer) RemoteCluster() store.RemoteClusterStore { 143 return s.RemoteClusterStore 144 } 145 146 func (s *RetryLayer) RetentionPolicy() store.RetentionPolicyStore { 147 return s.RetentionPolicyStore 148 } 149 150 func (s *RetryLayer) Role() store.RoleStore { 151 return s.RoleStore 152 } 153 154 func (s *RetryLayer) Scheme() store.SchemeStore { 155 return s.SchemeStore 156 } 157 158 func (s *RetryLayer) Session() store.SessionStore { 159 return s.SessionStore 160 } 161 162 func (s *RetryLayer) SharedChannel() store.SharedChannelStore { 163 return s.SharedChannelStore 164 } 165 166 func (s *RetryLayer) Status() store.StatusStore { 167 return s.StatusStore 168 } 169 170 func (s *RetryLayer) System() store.SystemStore { 171 return s.SystemStore 172 } 173 174 func (s *RetryLayer) Team() store.TeamStore { 175 return s.TeamStore 176 } 177 178 func (s *RetryLayer) TermsOfService() store.TermsOfServiceStore { 179 return s.TermsOfServiceStore 180 } 181 182 func (s *RetryLayer) Thread() store.ThreadStore { 183 return s.ThreadStore 184 } 185 186 func (s *RetryLayer) Token() store.TokenStore { 187 return s.TokenStore 188 } 189 190 func (s *RetryLayer) UploadSession() store.UploadSessionStore { 191 return s.UploadSessionStore 192 } 193 194 func (s *RetryLayer) User() store.UserStore { 195 return s.UserStore 196 } 197 198 func (s *RetryLayer) UserAccessToken() store.UserAccessTokenStore { 199 return s.UserAccessTokenStore 200 } 201 202 func (s *RetryLayer) UserTermsOfService() store.UserTermsOfServiceStore { 203 return s.UserTermsOfServiceStore 204 } 205 206 func (s *RetryLayer) Webhook() store.WebhookStore { 207 return s.WebhookStore 208 } 209 210 type RetryLayerAuditStore struct { 211 store.AuditStore 212 Root *RetryLayer 213 } 214 215 type RetryLayerBotStore struct { 216 store.BotStore 217 Root *RetryLayer 218 } 219 220 type RetryLayerChannelStore struct { 221 store.ChannelStore 222 Root *RetryLayer 223 } 224 225 type RetryLayerChannelMemberHistoryStore struct { 226 store.ChannelMemberHistoryStore 227 Root *RetryLayer 228 } 229 230 type RetryLayerClusterDiscoveryStore struct { 231 store.ClusterDiscoveryStore 232 Root *RetryLayer 233 } 234 235 type RetryLayerCommandStore struct { 236 store.CommandStore 237 Root *RetryLayer 238 } 239 240 type RetryLayerCommandWebhookStore struct { 241 store.CommandWebhookStore 242 Root *RetryLayer 243 } 244 245 type RetryLayerComplianceStore struct { 246 store.ComplianceStore 247 Root *RetryLayer 248 } 249 250 type RetryLayerEmojiStore struct { 251 store.EmojiStore 252 Root *RetryLayer 253 } 254 255 type RetryLayerFileInfoStore struct { 256 store.FileInfoStore 257 Root *RetryLayer 258 } 259 260 type RetryLayerGroupStore struct { 261 store.GroupStore 262 Root *RetryLayer 263 } 264 265 type RetryLayerJobStore struct { 266 store.JobStore 267 Root *RetryLayer 268 } 269 270 type RetryLayerLicenseStore struct { 271 store.LicenseStore 272 Root *RetryLayer 273 } 274 275 type RetryLayerLinkMetadataStore struct { 276 store.LinkMetadataStore 277 Root *RetryLayer 278 } 279 280 type RetryLayerOAuthStore struct { 281 store.OAuthStore 282 Root *RetryLayer 283 } 284 285 type RetryLayerPluginStore struct { 286 store.PluginStore 287 Root *RetryLayer 288 } 289 290 type RetryLayerPostStore struct { 291 store.PostStore 292 Root *RetryLayer 293 } 294 295 type RetryLayerPreferenceStore struct { 296 store.PreferenceStore 297 Root *RetryLayer 298 } 299 300 type RetryLayerProductNoticesStore struct { 301 store.ProductNoticesStore 302 Root *RetryLayer 303 } 304 305 type RetryLayerReactionStore struct { 306 store.ReactionStore 307 Root *RetryLayer 308 } 309 310 type RetryLayerRemoteClusterStore struct { 311 store.RemoteClusterStore 312 Root *RetryLayer 313 } 314 315 type RetryLayerRetentionPolicyStore struct { 316 store.RetentionPolicyStore 317 Root *RetryLayer 318 } 319 320 type RetryLayerRoleStore struct { 321 store.RoleStore 322 Root *RetryLayer 323 } 324 325 type RetryLayerSchemeStore struct { 326 store.SchemeStore 327 Root *RetryLayer 328 } 329 330 type RetryLayerSessionStore struct { 331 store.SessionStore 332 Root *RetryLayer 333 } 334 335 type RetryLayerSharedChannelStore struct { 336 store.SharedChannelStore 337 Root *RetryLayer 338 } 339 340 type RetryLayerStatusStore struct { 341 store.StatusStore 342 Root *RetryLayer 343 } 344 345 type RetryLayerSystemStore struct { 346 store.SystemStore 347 Root *RetryLayer 348 } 349 350 type RetryLayerTeamStore struct { 351 store.TeamStore 352 Root *RetryLayer 353 } 354 355 type RetryLayerTermsOfServiceStore struct { 356 store.TermsOfServiceStore 357 Root *RetryLayer 358 } 359 360 type RetryLayerThreadStore struct { 361 store.ThreadStore 362 Root *RetryLayer 363 } 364 365 type RetryLayerTokenStore struct { 366 store.TokenStore 367 Root *RetryLayer 368 } 369 370 type RetryLayerUploadSessionStore struct { 371 store.UploadSessionStore 372 Root *RetryLayer 373 } 374 375 type RetryLayerUserStore struct { 376 store.UserStore 377 Root *RetryLayer 378 } 379 380 type RetryLayerUserAccessTokenStore struct { 381 store.UserAccessTokenStore 382 Root *RetryLayer 383 } 384 385 type RetryLayerUserTermsOfServiceStore struct { 386 store.UserTermsOfServiceStore 387 Root *RetryLayer 388 } 389 390 type RetryLayerWebhookStore struct { 391 store.WebhookStore 392 Root *RetryLayer 393 } 394 395 func isRepeatableError(err error) bool { 396 var pqErr *pq.Error 397 var mysqlErr *mysql.MySQLError 398 switch { 399 case errors.As(errors.Cause(err), &pqErr): 400 if pqErr.Code == "40001" || pqErr.Code == "40P01" { 401 return true 402 } 403 case errors.As(errors.Cause(err), &mysqlErr): 404 if mysqlErr.Number == mySQLDeadlockCode { 405 return true 406 } 407 } 408 return false 409 } 410 411 func (s *RetryLayerAuditStore) Get(user_id string, offset int, limit int) (model.Audits, error) { 412 413 tries := 0 414 for { 415 result, err := s.AuditStore.Get(user_id, offset, limit) 416 if err == nil { 417 return result, nil 418 } 419 if !isRepeatableError(err) { 420 return result, err 421 } 422 tries++ 423 if tries >= 3 { 424 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 425 return result, err 426 } 427 } 428 429 } 430 431 func (s *RetryLayerAuditStore) PermanentDeleteByUser(userID string) error { 432 433 tries := 0 434 for { 435 err := s.AuditStore.PermanentDeleteByUser(userID) 436 if err == nil { 437 return nil 438 } 439 if !isRepeatableError(err) { 440 return err 441 } 442 tries++ 443 if tries >= 3 { 444 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 445 return err 446 } 447 } 448 449 } 450 451 func (s *RetryLayerAuditStore) Save(audit *model.Audit) error { 452 453 tries := 0 454 for { 455 err := s.AuditStore.Save(audit) 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 *RetryLayerBotStore) Get(userID string, includeDeleted bool) (*model.Bot, error) { 472 473 tries := 0 474 for { 475 result, err := s.BotStore.Get(userID, includeDeleted) 476 if err == nil { 477 return result, nil 478 } 479 if !isRepeatableError(err) { 480 return result, err 481 } 482 tries++ 483 if tries >= 3 { 484 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 485 return result, err 486 } 487 } 488 489 } 490 491 func (s *RetryLayerBotStore) GetAll(options *model.BotGetOptions) ([]*model.Bot, error) { 492 493 tries := 0 494 for { 495 result, err := s.BotStore.GetAll(options) 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) PermanentDelete(userID string) error { 512 513 tries := 0 514 for { 515 err := s.BotStore.PermanentDelete(userID) 516 if err == nil { 517 return nil 518 } 519 if !isRepeatableError(err) { 520 return err 521 } 522 tries++ 523 if tries >= 3 { 524 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 525 return err 526 } 527 } 528 529 } 530 531 func (s *RetryLayerBotStore) Save(bot *model.Bot) (*model.Bot, error) { 532 533 tries := 0 534 for { 535 result, err := s.BotStore.Save(bot) 536 if err == nil { 537 return result, nil 538 } 539 if !isRepeatableError(err) { 540 return result, err 541 } 542 tries++ 543 if tries >= 3 { 544 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 545 return result, err 546 } 547 } 548 549 } 550 551 func (s *RetryLayerBotStore) Update(bot *model.Bot) (*model.Bot, error) { 552 553 tries := 0 554 for { 555 result, err := s.BotStore.Update(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 *RetryLayerChannelStore) AnalyticsDeletedTypeCount(teamID string, channelType string) (int64, error) { 572 573 tries := 0 574 for { 575 result, err := s.ChannelStore.AnalyticsDeletedTypeCount(teamID, channelType) 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) AnalyticsTypeCount(teamID string, channelType string) (int64, error) { 592 593 tries := 0 594 for { 595 result, err := s.ChannelStore.AnalyticsTypeCount(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) AutocompleteInTeam(teamID string, term string, includeDeleted bool) (*model.ChannelList, error) { 612 613 tries := 0 614 for { 615 result, err := s.ChannelStore.AutocompleteInTeam(teamID, term, includeDeleted) 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) AutocompleteInTeamForSearch(teamID string, userID string, term string, includeDeleted bool) (*model.ChannelList, error) { 632 633 tries := 0 634 for { 635 result, err := s.ChannelStore.AutocompleteInTeamForSearch(teamID, userID, 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) ClearAllCustomRoleAssignments() error { 652 653 tries := 0 654 for { 655 err := s.ChannelStore.ClearAllCustomRoleAssignments() 656 if err == nil { 657 return nil 658 } 659 if !isRepeatableError(err) { 660 return err 661 } 662 tries++ 663 if tries >= 3 { 664 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 665 return err 666 } 667 } 668 669 } 670 671 func (s *RetryLayerChannelStore) ClearCaches() { 672 673 s.ChannelStore.ClearCaches() 674 675 } 676 677 func (s *RetryLayerChannelStore) ClearSidebarOnTeamLeave(userID string, teamID string) error { 678 679 tries := 0 680 for { 681 err := s.ChannelStore.ClearSidebarOnTeamLeave(userID, teamID) 682 if err == nil { 683 return nil 684 } 685 if !isRepeatableError(err) { 686 return err 687 } 688 tries++ 689 if tries >= 3 { 690 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 691 return err 692 } 693 } 694 695 } 696 697 func (s *RetryLayerChannelStore) CountPostsAfter(channelID string, timestamp int64, userID string) (int, int, error) { 698 699 tries := 0 700 for { 701 result, resultVar1, err := s.ChannelStore.CountPostsAfter(channelID, timestamp, userID) 702 if err == nil { 703 return result, resultVar1, nil 704 } 705 if !isRepeatableError(err) { 706 return result, resultVar1, err 707 } 708 tries++ 709 if tries >= 3 { 710 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 711 return result, resultVar1, err 712 } 713 } 714 715 } 716 717 func (s *RetryLayerChannelStore) CreateDirectChannel(userID *model.User, otherUserID *model.User, channelOptions ...model.ChannelOption) (*model.Channel, error) { 718 719 tries := 0 720 for { 721 result, err := s.ChannelStore.CreateDirectChannel(userID, otherUserID, channelOptions...) 722 if err == nil { 723 return result, nil 724 } 725 if !isRepeatableError(err) { 726 return result, err 727 } 728 tries++ 729 if tries >= 3 { 730 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 731 return result, err 732 } 733 } 734 735 } 736 737 func (s *RetryLayerChannelStore) CreateInitialSidebarCategories(userID string, teamID string) (*model.OrderedSidebarCategories, error) { 738 739 tries := 0 740 for { 741 result, err := s.ChannelStore.CreateInitialSidebarCategories(userID, teamID) 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) CreateSidebarCategory(userID string, teamID string, newCategory *model.SidebarCategoryWithChannels) (*model.SidebarCategoryWithChannels, error) { 758 759 tries := 0 760 for { 761 result, err := s.ChannelStore.CreateSidebarCategory(userID, teamID, newCategory) 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) Delete(channelID string, time int64) error { 778 779 tries := 0 780 for { 781 err := s.ChannelStore.Delete(channelID, time) 782 if err == nil { 783 return nil 784 } 785 if !isRepeatableError(err) { 786 return err 787 } 788 tries++ 789 if tries >= 3 { 790 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 791 return err 792 } 793 } 794 795 } 796 797 func (s *RetryLayerChannelStore) DeleteSidebarCategory(categoryID string) error { 798 799 tries := 0 800 for { 801 err := s.ChannelStore.DeleteSidebarCategory(categoryID) 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) DeleteSidebarChannelsByPreferences(preferences *model.Preferences) error { 818 819 tries := 0 820 for { 821 err := s.ChannelStore.DeleteSidebarChannelsByPreferences(preferences) 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) Get(id string, allowFromCache bool) (*model.Channel, error) { 838 839 tries := 0 840 for { 841 result, err := s.ChannelStore.Get(id, allowFromCache) 842 if err == nil { 843 return result, nil 844 } 845 if !isRepeatableError(err) { 846 return result, err 847 } 848 tries++ 849 if tries >= 3 { 850 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 851 return result, err 852 } 853 } 854 855 } 856 857 func (s *RetryLayerChannelStore) GetAll(teamID string) ([]*model.Channel, error) { 858 859 tries := 0 860 for { 861 result, err := s.ChannelStore.GetAll(teamID) 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) GetAllChannelMembersForUser(userID string, allowFromCache bool, includeDeleted bool) (map[string]string, error) { 878 879 tries := 0 880 for { 881 result, err := s.ChannelStore.GetAllChannelMembersForUser(userID, allowFromCache, includeDeleted) 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) GetAllChannelMembersNotifyPropsForChannel(channelID string, allowFromCache bool) (map[string]model.StringMap, error) { 898 899 tries := 0 900 for { 901 result, err := s.ChannelStore.GetAllChannelMembersNotifyPropsForChannel(channelID, allowFromCache) 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) GetAllChannels(page int, perPage int, opts store.ChannelSearchOpts) (*model.ChannelListWithTeamData, error) { 918 919 tries := 0 920 for { 921 result, err := s.ChannelStore.GetAllChannels(page, perPage, opts) 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) GetAllChannelsCount(opts store.ChannelSearchOpts) (int64, error) { 938 939 tries := 0 940 for { 941 result, err := s.ChannelStore.GetAllChannelsCount(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) GetAllChannelsForExportAfter(limit int, afterID string) ([]*model.ChannelForExport, error) { 958 959 tries := 0 960 for { 961 result, err := s.ChannelStore.GetAllChannelsForExportAfter(limit, afterID) 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) GetAllDirectChannelsForExportAfter(limit int, afterID string) ([]*model.DirectChannelForExport, error) { 978 979 tries := 0 980 for { 981 result, err := s.ChannelStore.GetAllDirectChannelsForExportAfter(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) GetByName(team_id string, name string, allowFromCache bool) (*model.Channel, error) { 998 999 tries := 0 1000 for { 1001 result, err := s.ChannelStore.GetByName(team_id, name, allowFromCache) 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) GetByNameIncludeDeleted(team_id string, name string, allowFromCache bool) (*model.Channel, error) { 1018 1019 tries := 0 1020 for { 1021 result, err := s.ChannelStore.GetByNameIncludeDeleted(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) GetByNames(team_id string, names []string, allowFromCache bool) ([]*model.Channel, error) { 1038 1039 tries := 0 1040 for { 1041 result, err := s.ChannelStore.GetByNames(team_id, names, 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) GetChannelCounts(teamID string, userID string) (*model.ChannelCounts, error) { 1058 1059 tries := 0 1060 for { 1061 result, err := s.ChannelStore.GetChannelCounts(teamID, userID) 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) GetChannelMembersForExport(userID string, teamID string) ([]*model.ChannelMemberForExport, error) { 1078 1079 tries := 0 1080 for { 1081 result, err := s.ChannelStore.GetChannelMembersForExport(userID, teamID) 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) GetChannelMembersTimezones(channelID string) ([]model.StringMap, error) { 1098 1099 tries := 0 1100 for { 1101 result, err := s.ChannelStore.GetChannelMembersTimezones(channelID) 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) GetChannelUnread(channelID string, userID string) (*model.ChannelUnread, error) { 1118 1119 tries := 0 1120 for { 1121 result, err := s.ChannelStore.GetChannelUnread(channelID, userID) 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) GetChannels(teamID string, userID string, includeDeleted bool, lastDeleteAt int) (*model.ChannelList, error) { 1138 1139 tries := 0 1140 for { 1141 result, err := s.ChannelStore.GetChannels(teamID, userID, includeDeleted, lastDeleteAt) 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) GetChannelsBatchForIndexing(startTime int64, endTime int64, limit int) ([]*model.Channel, error) { 1158 1159 tries := 0 1160 for { 1161 result, err := s.ChannelStore.GetChannelsBatchForIndexing(startTime, endTime, limit) 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) GetChannelsByIds(channelIds []string, includeDeleted bool) ([]*model.Channel, error) { 1178 1179 tries := 0 1180 for { 1181 result, err := s.ChannelStore.GetChannelsByIds(channelIds, includeDeleted) 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) GetChannelsByScheme(schemeID string, offset int, limit int) (model.ChannelList, error) { 1198 1199 tries := 0 1200 for { 1201 result, err := s.ChannelStore.GetChannelsByScheme(schemeID, offset, limit) 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) GetDeleted(team_id string, offset int, limit int, userID string) (*model.ChannelList, error) { 1218 1219 tries := 0 1220 for { 1221 result, err := s.ChannelStore.GetDeleted(team_id, offset, limit, userID) 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) GetDeletedByName(team_id string, name string) (*model.Channel, error) { 1238 1239 tries := 0 1240 for { 1241 result, err := s.ChannelStore.GetDeletedByName(team_id, name) 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) GetForPost(postID string) (*model.Channel, error) { 1258 1259 tries := 0 1260 for { 1261 result, err := s.ChannelStore.GetForPost(postID) 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) GetFromMaster(id string) (*model.Channel, error) { 1278 1279 tries := 0 1280 for { 1281 result, err := s.ChannelStore.GetFromMaster(id) 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) GetGuestCount(channelID string, allowFromCache bool) (int64, error) { 1298 1299 tries := 0 1300 for { 1301 result, err := s.ChannelStore.GetGuestCount(channelID, allowFromCache) 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) GetMember(ctx context.Context, channelID string, userID string) (*model.ChannelMember, error) { 1318 1319 tries := 0 1320 for { 1321 result, err := s.ChannelStore.GetMember(ctx, channelID, userID) 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) GetMemberCount(channelID string, allowFromCache bool) (int64, error) { 1338 1339 tries := 0 1340 for { 1341 result, err := s.ChannelStore.GetMemberCount(channelID, allowFromCache) 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) GetMemberCountFromCache(channelID string) int64 { 1358 1359 return s.ChannelStore.GetMemberCountFromCache(channelID) 1360 1361 } 1362 1363 func (s *RetryLayerChannelStore) GetMemberCountsByGroup(ctx context.Context, channelID string, includeTimezones bool) ([]*model.ChannelMemberCountByGroup, error) { 1364 1365 tries := 0 1366 for { 1367 result, err := s.ChannelStore.GetMemberCountsByGroup(ctx, channelID, includeTimezones) 1368 if err == nil { 1369 return result, nil 1370 } 1371 if !isRepeatableError(err) { 1372 return result, err 1373 } 1374 tries++ 1375 if tries >= 3 { 1376 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1377 return result, err 1378 } 1379 } 1380 1381 } 1382 1383 func (s *RetryLayerChannelStore) GetMemberForPost(postID string, userID string) (*model.ChannelMember, error) { 1384 1385 tries := 0 1386 for { 1387 result, err := s.ChannelStore.GetMemberForPost(postID, userID) 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) GetMembers(channelID string, offset int, limit int) (*model.ChannelMembers, error) { 1404 1405 tries := 0 1406 for { 1407 result, err := s.ChannelStore.GetMembers(channelID, offset, limit) 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) GetMembersByChannelIds(channelIds []string, userID string) (*model.ChannelMembers, error) { 1424 1425 tries := 0 1426 for { 1427 result, err := s.ChannelStore.GetMembersByChannelIds(channelIds, userID) 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) GetMembersByIds(channelID string, userIds []string) (*model.ChannelMembers, error) { 1444 1445 tries := 0 1446 for { 1447 result, err := s.ChannelStore.GetMembersByIds(channelID, userIds) 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) GetMembersForUser(teamID string, userID string) (*model.ChannelMembers, error) { 1464 1465 tries := 0 1466 for { 1467 result, err := s.ChannelStore.GetMembersForUser(teamID, userID) 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) GetMembersForUserWithPagination(teamID string, userID string, page int, perPage int) (*model.ChannelMembers, error) { 1484 1485 tries := 0 1486 for { 1487 result, err := s.ChannelStore.GetMembersForUserWithPagination(teamID, userID, page, perPage) 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) GetMoreChannels(teamID string, userID string, offset int, limit int) (*model.ChannelList, error) { 1504 1505 tries := 0 1506 for { 1507 result, err := s.ChannelStore.GetMoreChannels(teamID, userID, offset, limit) 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) GetPinnedPostCount(channelID string, allowFromCache bool) (int64, error) { 1524 1525 tries := 0 1526 for { 1527 result, err := s.ChannelStore.GetPinnedPostCount(channelID, allowFromCache) 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) GetPinnedPosts(channelID string) (*model.PostList, error) { 1544 1545 tries := 0 1546 for { 1547 result, err := s.ChannelStore.GetPinnedPosts(channelID) 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) GetPrivateChannelsForTeam(teamID string, offset int, limit int) (*model.ChannelList, error) { 1564 1565 tries := 0 1566 for { 1567 result, err := s.ChannelStore.GetPrivateChannelsForTeam(teamID, offset, limit) 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) GetPublicChannelsByIdsForTeam(teamID string, channelIds []string) (*model.ChannelList, error) { 1584 1585 tries := 0 1586 for { 1587 result, err := s.ChannelStore.GetPublicChannelsByIdsForTeam(teamID, channelIds) 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) GetPublicChannelsForTeam(teamID string, offset int, limit int) (*model.ChannelList, error) { 1604 1605 tries := 0 1606 for { 1607 result, err := s.ChannelStore.GetPublicChannelsForTeam(teamID, offset, limit) 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) GetSidebarCategories(userID string, teamID string) (*model.OrderedSidebarCategories, error) { 1624 1625 tries := 0 1626 for { 1627 result, err := s.ChannelStore.GetSidebarCategories(userID, teamID) 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) GetSidebarCategory(categoryID string) (*model.SidebarCategoryWithChannels, error) { 1644 1645 tries := 0 1646 for { 1647 result, err := s.ChannelStore.GetSidebarCategory(categoryID) 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) GetSidebarCategoryOrder(userID string, teamID string) ([]string, error) { 1664 1665 tries := 0 1666 for { 1667 result, err := s.ChannelStore.GetSidebarCategoryOrder(userID, teamID) 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) GetTeamChannels(teamID string) (*model.ChannelList, error) { 1684 1685 tries := 0 1686 for { 1687 result, err := s.ChannelStore.GetTeamChannels(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) GetTeamForChannel(channelID string) (*model.Team, error) { 1704 1705 tries := 0 1706 for { 1707 result, err := s.ChannelStore.GetTeamForChannel(channelID) 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) GroupSyncedChannelCount() (int64, error) { 1724 1725 tries := 0 1726 for { 1727 result, err := s.ChannelStore.GroupSyncedChannelCount() 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) IncrementMentionCount(channelID string, userID string, updateThreads bool, isRoot bool) error { 1744 1745 tries := 0 1746 for { 1747 err := s.ChannelStore.IncrementMentionCount(channelID, userID, updateThreads, isRoot) 1748 if err == nil { 1749 return nil 1750 } 1751 if !isRepeatableError(err) { 1752 return err 1753 } 1754 tries++ 1755 if tries >= 3 { 1756 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1757 return err 1758 } 1759 } 1760 1761 } 1762 1763 func (s *RetryLayerChannelStore) InvalidateAllChannelMembersForUser(userID string) { 1764 1765 s.ChannelStore.InvalidateAllChannelMembersForUser(userID) 1766 1767 } 1768 1769 func (s *RetryLayerChannelStore) InvalidateCacheForChannelMembersNotifyProps(channelID string) { 1770 1771 s.ChannelStore.InvalidateCacheForChannelMembersNotifyProps(channelID) 1772 1773 } 1774 1775 func (s *RetryLayerChannelStore) InvalidateChannel(id string) { 1776 1777 s.ChannelStore.InvalidateChannel(id) 1778 1779 } 1780 1781 func (s *RetryLayerChannelStore) InvalidateChannelByName(teamID string, name string) { 1782 1783 s.ChannelStore.InvalidateChannelByName(teamID, name) 1784 1785 } 1786 1787 func (s *RetryLayerChannelStore) InvalidateGuestCount(channelID string) { 1788 1789 s.ChannelStore.InvalidateGuestCount(channelID) 1790 1791 } 1792 1793 func (s *RetryLayerChannelStore) InvalidateMemberCount(channelID string) { 1794 1795 s.ChannelStore.InvalidateMemberCount(channelID) 1796 1797 } 1798 1799 func (s *RetryLayerChannelStore) InvalidatePinnedPostCount(channelID string) { 1800 1801 s.ChannelStore.InvalidatePinnedPostCount(channelID) 1802 1803 } 1804 1805 func (s *RetryLayerChannelStore) IsUserInChannelUseCache(userID string, channelID string) bool { 1806 1807 return s.ChannelStore.IsUserInChannelUseCache(userID, channelID) 1808 1809 } 1810 1811 func (s *RetryLayerChannelStore) MigrateChannelMembers(fromChannelID string, fromUserID string) (map[string]string, error) { 1812 1813 tries := 0 1814 for { 1815 result, err := s.ChannelStore.MigrateChannelMembers(fromChannelID, fromUserID) 1816 if err == nil { 1817 return result, nil 1818 } 1819 if !isRepeatableError(err) { 1820 return result, err 1821 } 1822 tries++ 1823 if tries >= 3 { 1824 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1825 return result, err 1826 } 1827 } 1828 1829 } 1830 1831 func (s *RetryLayerChannelStore) MigratePublicChannels() error { 1832 1833 tries := 0 1834 for { 1835 err := s.ChannelStore.MigratePublicChannels() 1836 if err == nil { 1837 return nil 1838 } 1839 if !isRepeatableError(err) { 1840 return err 1841 } 1842 tries++ 1843 if tries >= 3 { 1844 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 1845 return err 1846 } 1847 } 1848 1849 } 1850 1851 func (s *RetryLayerChannelStore) PermanentDelete(channelID string) error { 1852 1853 tries := 0 1854 for { 1855 err := s.ChannelStore.PermanentDelete(channelID) 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) PermanentDeleteByTeam(teamID string) error { 1872 1873 tries := 0 1874 for { 1875 err := s.ChannelStore.PermanentDeleteByTeam(teamID) 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) PermanentDeleteMembersByChannel(channelID string) error { 1892 1893 tries := 0 1894 for { 1895 err := s.ChannelStore.PermanentDeleteMembersByChannel(channelID) 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) PermanentDeleteMembersByUser(userID string) error { 1912 1913 tries := 0 1914 for { 1915 err := s.ChannelStore.PermanentDeleteMembersByUser(userID) 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) RemoveAllDeactivatedMembers(channelID string) error { 1932 1933 tries := 0 1934 for { 1935 err := s.ChannelStore.RemoveAllDeactivatedMembers(channelID) 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) RemoveMember(channelID string, userID string) error { 1952 1953 tries := 0 1954 for { 1955 err := s.ChannelStore.RemoveMember(channelID, userID) 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) RemoveMembers(channelID string, userIds []string) error { 1972 1973 tries := 0 1974 for { 1975 err := s.ChannelStore.RemoveMembers(channelID, userIds) 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) ResetAllChannelSchemes() error { 1992 1993 tries := 0 1994 for { 1995 err := s.ChannelStore.ResetAllChannelSchemes() 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) Restore(channelID string, time int64) error { 2012 2013 tries := 0 2014 for { 2015 err := s.ChannelStore.Restore(channelID, time) 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) Save(channel *model.Channel, maxChannelsPerTeam int64) (*model.Channel, error) { 2032 2033 tries := 0 2034 for { 2035 result, err := s.ChannelStore.Save(channel, maxChannelsPerTeam) 2036 if err == nil { 2037 return result, nil 2038 } 2039 if !isRepeatableError(err) { 2040 return result, err 2041 } 2042 tries++ 2043 if tries >= 3 { 2044 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2045 return result, err 2046 } 2047 } 2048 2049 } 2050 2051 func (s *RetryLayerChannelStore) SaveDirectChannel(channel *model.Channel, member1 *model.ChannelMember, member2 *model.ChannelMember) (*model.Channel, error) { 2052 2053 tries := 0 2054 for { 2055 result, err := s.ChannelStore.SaveDirectChannel(channel, member1, member2) 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) SaveMember(member *model.ChannelMember) (*model.ChannelMember, error) { 2072 2073 tries := 0 2074 for { 2075 result, err := s.ChannelStore.SaveMember(member) 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) SaveMultipleMembers(members []*model.ChannelMember) ([]*model.ChannelMember, error) { 2092 2093 tries := 0 2094 for { 2095 result, err := s.ChannelStore.SaveMultipleMembers(members) 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) SearchAllChannels(term string, opts store.ChannelSearchOpts) (*model.ChannelListWithTeamData, int64, error) { 2112 2113 tries := 0 2114 for { 2115 result, resultVar1, err := s.ChannelStore.SearchAllChannels(term, opts) 2116 if err == nil { 2117 return result, resultVar1, nil 2118 } 2119 if !isRepeatableError(err) { 2120 return result, resultVar1, err 2121 } 2122 tries++ 2123 if tries >= 3 { 2124 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2125 return result, resultVar1, err 2126 } 2127 } 2128 2129 } 2130 2131 func (s *RetryLayerChannelStore) SearchArchivedInTeam(teamID string, term string, userID string) (*model.ChannelList, error) { 2132 2133 tries := 0 2134 for { 2135 result, err := s.ChannelStore.SearchArchivedInTeam(teamID, term, userID) 2136 if err == nil { 2137 return result, nil 2138 } 2139 if !isRepeatableError(err) { 2140 return result, err 2141 } 2142 tries++ 2143 if tries >= 3 { 2144 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2145 return result, err 2146 } 2147 } 2148 2149 } 2150 2151 func (s *RetryLayerChannelStore) SearchForUserInTeam(userID string, teamID string, term string, includeDeleted bool) (*model.ChannelList, error) { 2152 2153 tries := 0 2154 for { 2155 result, err := s.ChannelStore.SearchForUserInTeam(userID, teamID, term, includeDeleted) 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) SearchGroupChannels(userID string, term string) (*model.ChannelList, error) { 2172 2173 tries := 0 2174 for { 2175 result, err := s.ChannelStore.SearchGroupChannels(userID, term) 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) SearchInTeam(teamID string, term string, includeDeleted bool) (*model.ChannelList, error) { 2192 2193 tries := 0 2194 for { 2195 result, err := s.ChannelStore.SearchInTeam(teamID, term, includeDeleted) 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) SearchMore(userID string, teamID string, term string) (*model.ChannelList, error) { 2212 2213 tries := 0 2214 for { 2215 result, err := s.ChannelStore.SearchMore(userID, teamID, term) 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) SetDeleteAt(channelID string, deleteAt int64, updateAt int64) error { 2232 2233 tries := 0 2234 for { 2235 err := s.ChannelStore.SetDeleteAt(channelID, deleteAt, updateAt) 2236 if err == nil { 2237 return nil 2238 } 2239 if !isRepeatableError(err) { 2240 return err 2241 } 2242 tries++ 2243 if tries >= 3 { 2244 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2245 return err 2246 } 2247 } 2248 2249 } 2250 2251 func (s *RetryLayerChannelStore) SetShared(channelId string, shared bool) error { 2252 2253 tries := 0 2254 for { 2255 err := s.ChannelStore.SetShared(channelId, shared) 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) Update(channel *model.Channel) (*model.Channel, error) { 2272 2273 tries := 0 2274 for { 2275 result, err := s.ChannelStore.Update(channel) 2276 if err == nil { 2277 return result, nil 2278 } 2279 if !isRepeatableError(err) { 2280 return result, err 2281 } 2282 tries++ 2283 if tries >= 3 { 2284 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2285 return result, err 2286 } 2287 } 2288 2289 } 2290 2291 func (s *RetryLayerChannelStore) UpdateLastViewedAt(channelIds []string, userID string, updateThreads bool) (map[string]int64, error) { 2292 2293 tries := 0 2294 for { 2295 result, err := s.ChannelStore.UpdateLastViewedAt(channelIds, userID, updateThreads) 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) UpdateLastViewedAtPost(unreadPost *model.Post, userID string, mentionCount int, mentionCountRoot int, updateThreads bool, setUnreadCountRoot bool) (*model.ChannelUnreadAt, error) { 2312 2313 tries := 0 2314 for { 2315 result, err := s.ChannelStore.UpdateLastViewedAtPost(unreadPost, userID, mentionCount, mentionCountRoot, updateThreads, setUnreadCountRoot) 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) UpdateMember(member *model.ChannelMember) (*model.ChannelMember, error) { 2332 2333 tries := 0 2334 for { 2335 result, err := s.ChannelStore.UpdateMember(member) 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) UpdateMembersRole(channelID string, userIDs []string) error { 2352 2353 tries := 0 2354 for { 2355 err := s.ChannelStore.UpdateMembersRole(channelID, userIDs) 2356 if err == nil { 2357 return nil 2358 } 2359 if !isRepeatableError(err) { 2360 return err 2361 } 2362 tries++ 2363 if tries >= 3 { 2364 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2365 return err 2366 } 2367 } 2368 2369 } 2370 2371 func (s *RetryLayerChannelStore) UpdateMultipleMembers(members []*model.ChannelMember) ([]*model.ChannelMember, error) { 2372 2373 tries := 0 2374 for { 2375 result, err := s.ChannelStore.UpdateMultipleMembers(members) 2376 if err == nil { 2377 return result, nil 2378 } 2379 if !isRepeatableError(err) { 2380 return result, err 2381 } 2382 tries++ 2383 if tries >= 3 { 2384 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2385 return result, err 2386 } 2387 } 2388 2389 } 2390 2391 func (s *RetryLayerChannelStore) UpdateSidebarCategories(userID string, teamID string, categories []*model.SidebarCategoryWithChannels) ([]*model.SidebarCategoryWithChannels, []*model.SidebarCategoryWithChannels, error) { 2392 2393 tries := 0 2394 for { 2395 result, resultVar1, err := s.ChannelStore.UpdateSidebarCategories(userID, teamID, categories) 2396 if err == nil { 2397 return result, resultVar1, nil 2398 } 2399 if !isRepeatableError(err) { 2400 return result, resultVar1, err 2401 } 2402 tries++ 2403 if tries >= 3 { 2404 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2405 return result, resultVar1, err 2406 } 2407 } 2408 2409 } 2410 2411 func (s *RetryLayerChannelStore) UpdateSidebarCategoryOrder(userID string, teamID string, categoryOrder []string) error { 2412 2413 tries := 0 2414 for { 2415 err := s.ChannelStore.UpdateSidebarCategoryOrder(userID, teamID, categoryOrder) 2416 if err == nil { 2417 return nil 2418 } 2419 if !isRepeatableError(err) { 2420 return err 2421 } 2422 tries++ 2423 if tries >= 3 { 2424 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2425 return err 2426 } 2427 } 2428 2429 } 2430 2431 func (s *RetryLayerChannelStore) UpdateSidebarChannelCategoryOnMove(channel *model.Channel, newTeamID string) error { 2432 2433 tries := 0 2434 for { 2435 err := s.ChannelStore.UpdateSidebarChannelCategoryOnMove(channel, newTeamID) 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) UpdateSidebarChannelsByPreferences(preferences *model.Preferences) error { 2452 2453 tries := 0 2454 for { 2455 err := s.ChannelStore.UpdateSidebarChannelsByPreferences(preferences) 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) UserBelongsToChannels(userID string, channelIds []string) (bool, error) { 2472 2473 tries := 0 2474 for { 2475 result, err := s.ChannelStore.UserBelongsToChannels(userID, channelIds) 2476 if err == nil { 2477 return result, nil 2478 } 2479 if !isRepeatableError(err) { 2480 return result, err 2481 } 2482 tries++ 2483 if tries >= 3 { 2484 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2485 return result, err 2486 } 2487 } 2488 2489 } 2490 2491 func (s *RetryLayerChannelMemberHistoryStore) DeleteOrphanedRows(limit int) (int64, error) { 2492 2493 tries := 0 2494 for { 2495 result, err := s.ChannelMemberHistoryStore.DeleteOrphanedRows(limit) 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) GetUsersInChannelDuring(startTime int64, endTime int64, channelID string) ([]*model.ChannelMemberHistoryResult, error) { 2512 2513 tries := 0 2514 for { 2515 result, err := s.ChannelMemberHistoryStore.GetUsersInChannelDuring(startTime, endTime, channelID) 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) LogJoinEvent(userID string, channelID string, joinTime int64) error { 2532 2533 tries := 0 2534 for { 2535 err := s.ChannelMemberHistoryStore.LogJoinEvent(userID, channelID, joinTime) 2536 if err == nil { 2537 return nil 2538 } 2539 if !isRepeatableError(err) { 2540 return err 2541 } 2542 tries++ 2543 if tries >= 3 { 2544 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2545 return err 2546 } 2547 } 2548 2549 } 2550 2551 func (s *RetryLayerChannelMemberHistoryStore) LogLeaveEvent(userID string, channelID string, leaveTime int64) error { 2552 2553 tries := 0 2554 for { 2555 err := s.ChannelMemberHistoryStore.LogLeaveEvent(userID, channelID, leaveTime) 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) PermanentDeleteBatch(endTime int64, limit int64) (int64, error) { 2572 2573 tries := 0 2574 for { 2575 result, err := s.ChannelMemberHistoryStore.PermanentDeleteBatch(endTime, limit) 2576 if err == nil { 2577 return result, nil 2578 } 2579 if !isRepeatableError(err) { 2580 return result, err 2581 } 2582 tries++ 2583 if tries >= 3 { 2584 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2585 return result, err 2586 } 2587 } 2588 2589 } 2590 2591 func (s *RetryLayerChannelMemberHistoryStore) PermanentDeleteBatchForRetentionPolicies(now int64, globalPolicyEndTime int64, limit int64, cursor model.RetentionPolicyCursor) (int64, model.RetentionPolicyCursor, error) { 2592 2593 tries := 0 2594 for { 2595 result, resultVar1, err := s.ChannelMemberHistoryStore.PermanentDeleteBatchForRetentionPolicies(now, globalPolicyEndTime, limit, cursor) 2596 if err == nil { 2597 return result, resultVar1, nil 2598 } 2599 if !isRepeatableError(err) { 2600 return result, resultVar1, err 2601 } 2602 tries++ 2603 if tries >= 3 { 2604 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2605 return result, resultVar1, err 2606 } 2607 } 2608 2609 } 2610 2611 func (s *RetryLayerClusterDiscoveryStore) Cleanup() error { 2612 2613 tries := 0 2614 for { 2615 err := s.ClusterDiscoveryStore.Cleanup() 2616 if err == nil { 2617 return nil 2618 } 2619 if !isRepeatableError(err) { 2620 return err 2621 } 2622 tries++ 2623 if tries >= 3 { 2624 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2625 return err 2626 } 2627 } 2628 2629 } 2630 2631 func (s *RetryLayerClusterDiscoveryStore) Delete(discovery *model.ClusterDiscovery) (bool, error) { 2632 2633 tries := 0 2634 for { 2635 result, err := s.ClusterDiscoveryStore.Delete(discovery) 2636 if err == nil { 2637 return result, nil 2638 } 2639 if !isRepeatableError(err) { 2640 return result, err 2641 } 2642 tries++ 2643 if tries >= 3 { 2644 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2645 return result, err 2646 } 2647 } 2648 2649 } 2650 2651 func (s *RetryLayerClusterDiscoveryStore) Exists(discovery *model.ClusterDiscovery) (bool, error) { 2652 2653 tries := 0 2654 for { 2655 result, err := s.ClusterDiscoveryStore.Exists(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) GetAll(discoveryType string, clusterName string) ([]*model.ClusterDiscovery, error) { 2672 2673 tries := 0 2674 for { 2675 result, err := s.ClusterDiscoveryStore.GetAll(discoveryType, clusterName) 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) Save(discovery *model.ClusterDiscovery) error { 2692 2693 tries := 0 2694 for { 2695 err := s.ClusterDiscoveryStore.Save(discovery) 2696 if err == nil { 2697 return nil 2698 } 2699 if !isRepeatableError(err) { 2700 return err 2701 } 2702 tries++ 2703 if tries >= 3 { 2704 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2705 return err 2706 } 2707 } 2708 2709 } 2710 2711 func (s *RetryLayerClusterDiscoveryStore) SetLastPingAt(discovery *model.ClusterDiscovery) error { 2712 2713 tries := 0 2714 for { 2715 err := s.ClusterDiscoveryStore.SetLastPingAt(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 *RetryLayerCommandStore) AnalyticsCommandCount(teamID string) (int64, error) { 2732 2733 tries := 0 2734 for { 2735 result, err := s.CommandStore.AnalyticsCommandCount(teamID) 2736 if err == nil { 2737 return result, nil 2738 } 2739 if !isRepeatableError(err) { 2740 return result, err 2741 } 2742 tries++ 2743 if tries >= 3 { 2744 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2745 return result, err 2746 } 2747 } 2748 2749 } 2750 2751 func (s *RetryLayerCommandStore) Delete(commandID string, time int64) error { 2752 2753 tries := 0 2754 for { 2755 err := s.CommandStore.Delete(commandID, time) 2756 if err == nil { 2757 return nil 2758 } 2759 if !isRepeatableError(err) { 2760 return err 2761 } 2762 tries++ 2763 if tries >= 3 { 2764 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2765 return err 2766 } 2767 } 2768 2769 } 2770 2771 func (s *RetryLayerCommandStore) Get(id string) (*model.Command, error) { 2772 2773 tries := 0 2774 for { 2775 result, err := s.CommandStore.Get(id) 2776 if err == nil { 2777 return result, nil 2778 } 2779 if !isRepeatableError(err) { 2780 return result, err 2781 } 2782 tries++ 2783 if tries >= 3 { 2784 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2785 return result, err 2786 } 2787 } 2788 2789 } 2790 2791 func (s *RetryLayerCommandStore) GetByTeam(teamID string) ([]*model.Command, error) { 2792 2793 tries := 0 2794 for { 2795 result, err := s.CommandStore.GetByTeam(teamID) 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) GetByTrigger(teamID string, trigger string) (*model.Command, error) { 2812 2813 tries := 0 2814 for { 2815 result, err := s.CommandStore.GetByTrigger(teamID, trigger) 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) PermanentDeleteByTeam(teamID string) error { 2832 2833 tries := 0 2834 for { 2835 err := s.CommandStore.PermanentDeleteByTeam(teamID) 2836 if err == nil { 2837 return nil 2838 } 2839 if !isRepeatableError(err) { 2840 return err 2841 } 2842 tries++ 2843 if tries >= 3 { 2844 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2845 return err 2846 } 2847 } 2848 2849 } 2850 2851 func (s *RetryLayerCommandStore) PermanentDeleteByUser(userID string) error { 2852 2853 tries := 0 2854 for { 2855 err := s.CommandStore.PermanentDeleteByUser(userID) 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) Save(webhook *model.Command) (*model.Command, error) { 2872 2873 tries := 0 2874 for { 2875 result, err := s.CommandStore.Save(webhook) 2876 if err == nil { 2877 return result, nil 2878 } 2879 if !isRepeatableError(err) { 2880 return result, err 2881 } 2882 tries++ 2883 if tries >= 3 { 2884 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2885 return result, err 2886 } 2887 } 2888 2889 } 2890 2891 func (s *RetryLayerCommandStore) Update(hook *model.Command) (*model.Command, error) { 2892 2893 tries := 0 2894 for { 2895 result, err := s.CommandStore.Update(hook) 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 *RetryLayerCommandWebhookStore) Cleanup() { 2912 2913 s.CommandWebhookStore.Cleanup() 2914 2915 } 2916 2917 func (s *RetryLayerCommandWebhookStore) Get(id string) (*model.CommandWebhook, error) { 2918 2919 tries := 0 2920 for { 2921 result, err := s.CommandWebhookStore.Get(id) 2922 if err == nil { 2923 return result, nil 2924 } 2925 if !isRepeatableError(err) { 2926 return result, err 2927 } 2928 tries++ 2929 if tries >= 3 { 2930 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2931 return result, err 2932 } 2933 } 2934 2935 } 2936 2937 func (s *RetryLayerCommandWebhookStore) Save(webhook *model.CommandWebhook) (*model.CommandWebhook, error) { 2938 2939 tries := 0 2940 for { 2941 result, err := s.CommandWebhookStore.Save(webhook) 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) TryUse(id string, limit int) error { 2958 2959 tries := 0 2960 for { 2961 err := s.CommandWebhookStore.TryUse(id, limit) 2962 if err == nil { 2963 return nil 2964 } 2965 if !isRepeatableError(err) { 2966 return err 2967 } 2968 tries++ 2969 if tries >= 3 { 2970 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2971 return err 2972 } 2973 } 2974 2975 } 2976 2977 func (s *RetryLayerComplianceStore) ComplianceExport(compliance *model.Compliance, cursor model.ComplianceExportCursor, limit int) ([]*model.CompliancePost, model.ComplianceExportCursor, error) { 2978 2979 tries := 0 2980 for { 2981 result, resultVar1, err := s.ComplianceStore.ComplianceExport(compliance, cursor, limit) 2982 if err == nil { 2983 return result, resultVar1, nil 2984 } 2985 if !isRepeatableError(err) { 2986 return result, resultVar1, err 2987 } 2988 tries++ 2989 if tries >= 3 { 2990 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 2991 return result, resultVar1, err 2992 } 2993 } 2994 2995 } 2996 2997 func (s *RetryLayerComplianceStore) Get(id string) (*model.Compliance, error) { 2998 2999 tries := 0 3000 for { 3001 result, err := s.ComplianceStore.Get(id) 3002 if err == nil { 3003 return result, nil 3004 } 3005 if !isRepeatableError(err) { 3006 return result, err 3007 } 3008 tries++ 3009 if tries >= 3 { 3010 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3011 return result, err 3012 } 3013 } 3014 3015 } 3016 3017 func (s *RetryLayerComplianceStore) GetAll(offset int, limit int) (model.Compliances, error) { 3018 3019 tries := 0 3020 for { 3021 result, err := s.ComplianceStore.GetAll(offset, limit) 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) MessageExport(cursor model.MessageExportCursor, limit int) ([]*model.MessageExport, model.MessageExportCursor, error) { 3038 3039 tries := 0 3040 for { 3041 result, resultVar1, err := s.ComplianceStore.MessageExport(cursor, limit) 3042 if err == nil { 3043 return result, resultVar1, nil 3044 } 3045 if !isRepeatableError(err) { 3046 return result, resultVar1, err 3047 } 3048 tries++ 3049 if tries >= 3 { 3050 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3051 return result, resultVar1, err 3052 } 3053 } 3054 3055 } 3056 3057 func (s *RetryLayerComplianceStore) Save(compliance *model.Compliance) (*model.Compliance, error) { 3058 3059 tries := 0 3060 for { 3061 result, err := s.ComplianceStore.Save(compliance) 3062 if err == nil { 3063 return result, nil 3064 } 3065 if !isRepeatableError(err) { 3066 return result, err 3067 } 3068 tries++ 3069 if tries >= 3 { 3070 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3071 return result, err 3072 } 3073 } 3074 3075 } 3076 3077 func (s *RetryLayerComplianceStore) Update(compliance *model.Compliance) (*model.Compliance, error) { 3078 3079 tries := 0 3080 for { 3081 result, err := s.ComplianceStore.Update(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 *RetryLayerEmojiStore) Delete(emoji *model.Emoji, time int64) error { 3098 3099 tries := 0 3100 for { 3101 err := s.EmojiStore.Delete(emoji, time) 3102 if err == nil { 3103 return nil 3104 } 3105 if !isRepeatableError(err) { 3106 return err 3107 } 3108 tries++ 3109 if tries >= 3 { 3110 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3111 return err 3112 } 3113 } 3114 3115 } 3116 3117 func (s *RetryLayerEmojiStore) Get(ctx context.Context, id string, allowFromCache bool) (*model.Emoji, error) { 3118 3119 tries := 0 3120 for { 3121 result, err := s.EmojiStore.Get(ctx, id, allowFromCache) 3122 if err == nil { 3123 return result, nil 3124 } 3125 if !isRepeatableError(err) { 3126 return result, err 3127 } 3128 tries++ 3129 if tries >= 3 { 3130 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3131 return result, err 3132 } 3133 } 3134 3135 } 3136 3137 func (s *RetryLayerEmojiStore) GetByName(ctx context.Context, name string, allowFromCache bool) (*model.Emoji, error) { 3138 3139 tries := 0 3140 for { 3141 result, err := s.EmojiStore.GetByName(ctx, name, 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) GetList(offset int, limit int, sort string) ([]*model.Emoji, error) { 3158 3159 tries := 0 3160 for { 3161 result, err := s.EmojiStore.GetList(offset, limit, sort) 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) GetMultipleByName(names []string) ([]*model.Emoji, error) { 3178 3179 tries := 0 3180 for { 3181 result, err := s.EmojiStore.GetMultipleByName(names) 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) Save(emoji *model.Emoji) (*model.Emoji, error) { 3198 3199 tries := 0 3200 for { 3201 result, err := s.EmojiStore.Save(emoji) 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) Search(name string, prefixOnly bool, limit int) ([]*model.Emoji, error) { 3218 3219 tries := 0 3220 for { 3221 result, err := s.EmojiStore.Search(name, prefixOnly, limit) 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 *RetryLayerFileInfoStore) AttachToPost(fileID string, postID string, creatorID string) error { 3238 3239 tries := 0 3240 for { 3241 err := s.FileInfoStore.AttachToPost(fileID, postID, creatorID) 3242 if err == nil { 3243 return nil 3244 } 3245 if !isRepeatableError(err) { 3246 return err 3247 } 3248 tries++ 3249 if tries >= 3 { 3250 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3251 return err 3252 } 3253 } 3254 3255 } 3256 3257 func (s *RetryLayerFileInfoStore) ClearCaches() { 3258 3259 s.FileInfoStore.ClearCaches() 3260 3261 } 3262 3263 func (s *RetryLayerFileInfoStore) CountAll() (int64, error) { 3264 3265 tries := 0 3266 for { 3267 result, err := s.FileInfoStore.CountAll() 3268 if err == nil { 3269 return result, nil 3270 } 3271 if !isRepeatableError(err) { 3272 return result, err 3273 } 3274 tries++ 3275 if tries >= 3 { 3276 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3277 return result, err 3278 } 3279 } 3280 3281 } 3282 3283 func (s *RetryLayerFileInfoStore) DeleteForPost(postID string) (string, error) { 3284 3285 tries := 0 3286 for { 3287 result, err := s.FileInfoStore.DeleteForPost(postID) 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) Get(id string) (*model.FileInfo, error) { 3304 3305 tries := 0 3306 for { 3307 result, err := s.FileInfoStore.Get(id) 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) GetByIds(ids []string) ([]*model.FileInfo, error) { 3324 3325 tries := 0 3326 for { 3327 result, err := s.FileInfoStore.GetByIds(ids) 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) GetByPath(path string) (*model.FileInfo, error) { 3344 3345 tries := 0 3346 for { 3347 result, err := s.FileInfoStore.GetByPath(path) 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) GetFilesBatchForIndexing(startTime int64, endTime int64, limit int) ([]*model.FileForIndexing, error) { 3364 3365 tries := 0 3366 for { 3367 result, err := s.FileInfoStore.GetFilesBatchForIndexing(startTime, endTime, limit) 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) GetForPost(postID string, readFromMaster bool, includeDeleted bool, allowFromCache bool) ([]*model.FileInfo, error) { 3384 3385 tries := 0 3386 for { 3387 result, err := s.FileInfoStore.GetForPost(postID, readFromMaster, includeDeleted, allowFromCache) 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) GetForUser(userID string) ([]*model.FileInfo, error) { 3404 3405 tries := 0 3406 for { 3407 result, err := s.FileInfoStore.GetForUser(userID) 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) GetFromMaster(id string) (*model.FileInfo, error) { 3424 3425 tries := 0 3426 for { 3427 result, err := s.FileInfoStore.GetFromMaster(id) 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) GetWithOptions(page int, perPage int, opt *model.GetFileInfosOptions) ([]*model.FileInfo, error) { 3444 3445 tries := 0 3446 for { 3447 result, err := s.FileInfoStore.GetWithOptions(page, perPage, opt) 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) InvalidateFileInfosForPostCache(postID string, deleted bool) { 3464 3465 s.FileInfoStore.InvalidateFileInfosForPostCache(postID, deleted) 3466 3467 } 3468 3469 func (s *RetryLayerFileInfoStore) PermanentDelete(fileID string) error { 3470 3471 tries := 0 3472 for { 3473 err := s.FileInfoStore.PermanentDelete(fileID) 3474 if err == nil { 3475 return nil 3476 } 3477 if !isRepeatableError(err) { 3478 return err 3479 } 3480 tries++ 3481 if tries >= 3 { 3482 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3483 return err 3484 } 3485 } 3486 3487 } 3488 3489 func (s *RetryLayerFileInfoStore) PermanentDeleteBatch(endTime int64, limit int64) (int64, error) { 3490 3491 tries := 0 3492 for { 3493 result, err := s.FileInfoStore.PermanentDeleteBatch(endTime, limit) 3494 if err == nil { 3495 return result, nil 3496 } 3497 if !isRepeatableError(err) { 3498 return result, err 3499 } 3500 tries++ 3501 if tries >= 3 { 3502 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3503 return result, err 3504 } 3505 } 3506 3507 } 3508 3509 func (s *RetryLayerFileInfoStore) PermanentDeleteByUser(userID string) (int64, error) { 3510 3511 tries := 0 3512 for { 3513 result, err := s.FileInfoStore.PermanentDeleteByUser(userID) 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) Save(info *model.FileInfo) (*model.FileInfo, error) { 3530 3531 tries := 0 3532 for { 3533 result, err := s.FileInfoStore.Save(info) 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) Search(paramsList []*model.SearchParams, userID string, teamID string, page int, perPage int) (*model.FileInfoList, error) { 3550 3551 tries := 0 3552 for { 3553 result, err := s.FileInfoStore.Search(paramsList, userID, teamID, page, perPage) 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) SetContent(fileID string, content string) error { 3570 3571 tries := 0 3572 for { 3573 err := s.FileInfoStore.SetContent(fileID, content) 3574 if err == nil { 3575 return nil 3576 } 3577 if !isRepeatableError(err) { 3578 return err 3579 } 3580 tries++ 3581 if tries >= 3 { 3582 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3583 return err 3584 } 3585 } 3586 3587 } 3588 3589 func (s *RetryLayerFileInfoStore) Upsert(info *model.FileInfo) (*model.FileInfo, error) { 3590 3591 tries := 0 3592 for { 3593 result, err := s.FileInfoStore.Upsert(info) 3594 if err == nil { 3595 return result, nil 3596 } 3597 if !isRepeatableError(err) { 3598 return result, err 3599 } 3600 tries++ 3601 if tries >= 3 { 3602 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 3603 return result, err 3604 } 3605 } 3606 3607 } 3608 3609 func (s *RetryLayerGroupStore) AdminRoleGroupsForSyncableMember(userID string, syncableID string, syncableType model.GroupSyncableType) ([]string, error) { 3610 3611 tries := 0 3612 for { 3613 result, err := s.GroupStore.AdminRoleGroupsForSyncableMember(userID, syncableID, syncableType) 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) ChannelMembersMinusGroupMembers(channelID string, groupIDs []string, page int, perPage int) ([]*model.UserWithGroups, error) { 3630 3631 tries := 0 3632 for { 3633 result, err := s.GroupStore.ChannelMembersMinusGroupMembers(channelID, groupIDs, page, perPage) 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) ChannelMembersToAdd(since int64, channelID *string, includeRemovedMembers bool) ([]*model.UserChannelIDPair, error) { 3650 3651 tries := 0 3652 for { 3653 result, err := s.GroupStore.ChannelMembersToAdd(since, channelID, includeRemovedMembers) 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) ChannelMembersToRemove(channelID *string) ([]*model.ChannelMember, error) { 3670 3671 tries := 0 3672 for { 3673 result, err := s.GroupStore.ChannelMembersToRemove(channelID) 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) CountChannelMembersMinusGroupMembers(channelID string, groupIDs []string) (int64, error) { 3690 3691 tries := 0 3692 for { 3693 result, err := s.GroupStore.CountChannelMembersMinusGroupMembers(channelID, groupIDs) 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) CountGroupsByChannel(channelID string, opts model.GroupSearchOpts) (int64, error) { 3710 3711 tries := 0 3712 for { 3713 result, err := s.GroupStore.CountGroupsByChannel(channelID, opts) 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) CountGroupsByTeam(teamID string, opts model.GroupSearchOpts) (int64, error) { 3730 3731 tries := 0 3732 for { 3733 result, err := s.GroupStore.CountGroupsByTeam(teamID, 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) CountTeamMembersMinusGroupMembers(teamID string, groupIDs []string) (int64, error) { 3750 3751 tries := 0 3752 for { 3753 result, err := s.GroupStore.CountTeamMembersMinusGroupMembers(teamID, groupIDs) 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) Create(group *model.Group) (*model.Group, error) { 3770 3771 tries := 0 3772 for { 3773 result, err := s.GroupStore.Create(group) 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) CreateGroupSyncable(groupSyncable *model.GroupSyncable) (*model.GroupSyncable, error) { 3790 3791 tries := 0 3792 for { 3793 result, err := s.GroupStore.CreateGroupSyncable(groupSyncable) 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) Delete(groupID string) (*model.Group, error) { 3810 3811 tries := 0 3812 for { 3813 result, err := s.GroupStore.Delete(groupID) 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) DeleteGroupSyncable(groupID string, syncableID string, syncableType model.GroupSyncableType) (*model.GroupSyncable, error) { 3830 3831 tries := 0 3832 for { 3833 result, err := s.GroupStore.DeleteGroupSyncable(groupID, syncableID, syncableType) 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) DeleteMember(groupID string, userID string) (*model.GroupMember, error) { 3850 3851 tries := 0 3852 for { 3853 result, err := s.GroupStore.DeleteMember(groupID, userID) 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) DistinctGroupMemberCount() (int64, error) { 3870 3871 tries := 0 3872 for { 3873 result, err := s.GroupStore.DistinctGroupMemberCount() 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) Get(groupID string) (*model.Group, error) { 3890 3891 tries := 0 3892 for { 3893 result, err := s.GroupStore.Get(groupID) 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) GetAllBySource(groupSource model.GroupSource) ([]*model.Group, error) { 3910 3911 tries := 0 3912 for { 3913 result, err := s.GroupStore.GetAllBySource(groupSource) 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) GetAllGroupSyncablesByGroupId(groupID string, syncableType model.GroupSyncableType) ([]*model.GroupSyncable, error) { 3930 3931 tries := 0 3932 for { 3933 result, err := s.GroupStore.GetAllGroupSyncablesByGroupId(groupID, syncableType) 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) GetByIDs(groupIDs []string) ([]*model.Group, error) { 3950 3951 tries := 0 3952 for { 3953 result, err := s.GroupStore.GetByIDs(groupIDs) 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) GetByName(name string, opts model.GroupSearchOpts) (*model.Group, error) { 3970 3971 tries := 0 3972 for { 3973 result, err := s.GroupStore.GetByName(name, opts) 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) GetByRemoteID(remoteID string, groupSource model.GroupSource) (*model.Group, error) { 3990 3991 tries := 0 3992 for { 3993 result, err := s.GroupStore.GetByRemoteID(remoteID, groupSource) 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) GetByUser(userID string) ([]*model.Group, error) { 4010 4011 tries := 0 4012 for { 4013 result, err := s.GroupStore.GetByUser(userID) 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) GetGroupSyncable(groupID string, syncableID string, syncableType model.GroupSyncableType) (*model.GroupSyncable, error) { 4030 4031 tries := 0 4032 for { 4033 result, err := s.GroupStore.GetGroupSyncable(groupID, syncableID, syncableType) 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) GetGroups(page int, perPage int, opts model.GroupSearchOpts) ([]*model.Group, error) { 4050 4051 tries := 0 4052 for { 4053 result, err := s.GroupStore.GetGroups(page, perPage, opts) 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) GetGroupsAssociatedToChannelsByTeam(teamID string, opts model.GroupSearchOpts) (map[string][]*model.GroupWithSchemeAdmin, error) { 4070 4071 tries := 0 4072 for { 4073 result, err := s.GroupStore.GetGroupsAssociatedToChannelsByTeam(teamID, 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) GetGroupsByChannel(channelID string, opts model.GroupSearchOpts) ([]*model.GroupWithSchemeAdmin, error) { 4090 4091 tries := 0 4092 for { 4093 result, err := s.GroupStore.GetGroupsByChannel(channelID, 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) GetGroupsByTeam(teamID string, opts model.GroupSearchOpts) ([]*model.GroupWithSchemeAdmin, error) { 4110 4111 tries := 0 4112 for { 4113 result, err := s.GroupStore.GetGroupsByTeam(teamID, 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) GetMemberCount(groupID string) (int64, error) { 4130 4131 tries := 0 4132 for { 4133 result, err := s.GroupStore.GetMemberCount(groupID) 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) GetMemberUsers(groupID string) ([]*model.User, error) { 4150 4151 tries := 0 4152 for { 4153 result, err := s.GroupStore.GetMemberUsers(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) GetMemberUsersInTeam(groupID string, teamID string) ([]*model.User, error) { 4170 4171 tries := 0 4172 for { 4173 result, err := s.GroupStore.GetMemberUsersInTeam(groupID, teamID) 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) GetMemberUsersNotInChannel(groupID string, channelID string) ([]*model.User, error) { 4190 4191 tries := 0 4192 for { 4193 result, err := s.GroupStore.GetMemberUsersNotInChannel(groupID, channelID) 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) GetMemberUsersPage(groupID string, page int, perPage int) ([]*model.User, error) { 4210 4211 tries := 0 4212 for { 4213 result, err := s.GroupStore.GetMemberUsersPage(groupID, page, perPage) 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) GroupChannelCount() (int64, error) { 4230 4231 tries := 0 4232 for { 4233 result, err := s.GroupStore.GroupChannelCount() 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) GroupCount() (int64, error) { 4250 4251 tries := 0 4252 for { 4253 result, err := s.GroupStore.GroupCount() 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) GroupCountWithAllowReference() (int64, error) { 4270 4271 tries := 0 4272 for { 4273 result, err := s.GroupStore.GroupCountWithAllowReference() 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) GroupMemberCount() (int64, error) { 4290 4291 tries := 0 4292 for { 4293 result, err := s.GroupStore.GroupMemberCount() 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) GroupTeamCount() (int64, error) { 4310 4311 tries := 0 4312 for { 4313 result, err := s.GroupStore.GroupTeamCount() 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) PermanentDeleteMembersByUser(userID string) error { 4330 4331 tries := 0 4332 for { 4333 err := s.GroupStore.PermanentDeleteMembersByUser(userID) 4334 if err == nil { 4335 return nil 4336 } 4337 if !isRepeatableError(err) { 4338 return err 4339 } 4340 tries++ 4341 if tries >= 3 { 4342 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4343 return err 4344 } 4345 } 4346 4347 } 4348 4349 func (s *RetryLayerGroupStore) PermittedSyncableAdmins(syncableID string, syncableType model.GroupSyncableType) ([]string, error) { 4350 4351 tries := 0 4352 for { 4353 result, err := s.GroupStore.PermittedSyncableAdmins(syncableID, syncableType) 4354 if err == nil { 4355 return result, nil 4356 } 4357 if !isRepeatableError(err) { 4358 return result, err 4359 } 4360 tries++ 4361 if tries >= 3 { 4362 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4363 return result, err 4364 } 4365 } 4366 4367 } 4368 4369 func (s *RetryLayerGroupStore) TeamMembersMinusGroupMembers(teamID string, groupIDs []string, page int, perPage int) ([]*model.UserWithGroups, error) { 4370 4371 tries := 0 4372 for { 4373 result, err := s.GroupStore.TeamMembersMinusGroupMembers(teamID, groupIDs, page, perPage) 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) TeamMembersToAdd(since int64, teamID *string, includeRemovedMembers bool) ([]*model.UserTeamIDPair, error) { 4390 4391 tries := 0 4392 for { 4393 result, err := s.GroupStore.TeamMembersToAdd(since, teamID, includeRemovedMembers) 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) TeamMembersToRemove(teamID *string) ([]*model.TeamMember, error) { 4410 4411 tries := 0 4412 for { 4413 result, err := s.GroupStore.TeamMembersToRemove(teamID) 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) Update(group *model.Group) (*model.Group, error) { 4430 4431 tries := 0 4432 for { 4433 result, err := s.GroupStore.Update(group) 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) UpdateGroupSyncable(groupSyncable *model.GroupSyncable) (*model.GroupSyncable, error) { 4450 4451 tries := 0 4452 for { 4453 result, err := s.GroupStore.UpdateGroupSyncable(groupSyncable) 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) UpsertMember(groupID string, userID string) (*model.GroupMember, error) { 4470 4471 tries := 0 4472 for { 4473 result, err := s.GroupStore.UpsertMember(groupID, userID) 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 *RetryLayerJobStore) Delete(id string) (string, error) { 4490 4491 tries := 0 4492 for { 4493 result, err := s.JobStore.Delete(id) 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) Get(id string) (*model.Job, error) { 4510 4511 tries := 0 4512 for { 4513 result, err := s.JobStore.Get(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) GetAllByStatus(status string) ([]*model.Job, error) { 4530 4531 tries := 0 4532 for { 4533 result, err := s.JobStore.GetAllByStatus(status) 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) GetAllByType(jobType string) ([]*model.Job, error) { 4550 4551 tries := 0 4552 for { 4553 result, err := s.JobStore.GetAllByType(jobType) 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) GetAllByTypePage(jobType string, offset int, limit int) ([]*model.Job, error) { 4570 4571 tries := 0 4572 for { 4573 result, err := s.JobStore.GetAllByTypePage(jobType, offset, limit) 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) GetAllByTypesPage(jobTypes []string, offset int, limit int) ([]*model.Job, error) { 4590 4591 tries := 0 4592 for { 4593 result, err := s.JobStore.GetAllByTypesPage(jobTypes, 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) GetAllPage(offset int, limit int) ([]*model.Job, error) { 4610 4611 tries := 0 4612 for { 4613 result, err := s.JobStore.GetAllPage(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) GetCountByStatusAndType(status string, jobType string) (int64, error) { 4630 4631 tries := 0 4632 for { 4633 result, err := s.JobStore.GetCountByStatusAndType(status, jobType) 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) GetNewestJobByStatusAndType(status string, jobType string) (*model.Job, error) { 4650 4651 tries := 0 4652 for { 4653 result, err := s.JobStore.GetNewestJobByStatusAndType(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) GetNewestJobByStatusesAndType(statuses []string, jobType string) (*model.Job, error) { 4670 4671 tries := 0 4672 for { 4673 result, err := s.JobStore.GetNewestJobByStatusesAndType(statuses, 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) Save(job *model.Job) (*model.Job, error) { 4690 4691 tries := 0 4692 for { 4693 result, err := s.JobStore.Save(job) 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) UpdateOptimistically(job *model.Job, currentStatus string) (bool, error) { 4710 4711 tries := 0 4712 for { 4713 result, err := s.JobStore.UpdateOptimistically(job, currentStatus) 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) UpdateStatus(id string, status string) (*model.Job, error) { 4730 4731 tries := 0 4732 for { 4733 result, err := s.JobStore.UpdateStatus(id, status) 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) UpdateStatusOptimistically(id string, currentStatus string, newStatus string) (bool, error) { 4750 4751 tries := 0 4752 for { 4753 result, err := s.JobStore.UpdateStatusOptimistically(id, currentStatus, newStatus) 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 *RetryLayerLicenseStore) Get(id string) (*model.LicenseRecord, error) { 4770 4771 tries := 0 4772 for { 4773 result, err := s.LicenseStore.Get(id) 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) GetAll() ([]*model.LicenseRecord, error) { 4790 4791 tries := 0 4792 for { 4793 result, err := s.LicenseStore.GetAll() 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) Save(license *model.LicenseRecord) (*model.LicenseRecord, error) { 4810 4811 tries := 0 4812 for { 4813 result, err := s.LicenseStore.Save(license) 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 *RetryLayerLinkMetadataStore) Get(url string, timestamp int64) (*model.LinkMetadata, error) { 4830 4831 tries := 0 4832 for { 4833 result, err := s.LinkMetadataStore.Get(url, timestamp) 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) Save(linkMetadata *model.LinkMetadata) (*model.LinkMetadata, error) { 4850 4851 tries := 0 4852 for { 4853 result, err := s.LinkMetadataStore.Save(linkMetadata) 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 *RetryLayerOAuthStore) DeleteApp(id string) error { 4870 4871 tries := 0 4872 for { 4873 err := s.OAuthStore.DeleteApp(id) 4874 if err == nil { 4875 return nil 4876 } 4877 if !isRepeatableError(err) { 4878 return err 4879 } 4880 tries++ 4881 if tries >= 3 { 4882 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4883 return err 4884 } 4885 } 4886 4887 } 4888 4889 func (s *RetryLayerOAuthStore) GetAccessData(token string) (*model.AccessData, error) { 4890 4891 tries := 0 4892 for { 4893 result, err := s.OAuthStore.GetAccessData(token) 4894 if err == nil { 4895 return result, nil 4896 } 4897 if !isRepeatableError(err) { 4898 return result, err 4899 } 4900 tries++ 4901 if tries >= 3 { 4902 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 4903 return result, err 4904 } 4905 } 4906 4907 } 4908 4909 func (s *RetryLayerOAuthStore) GetAccessDataByRefreshToken(token string) (*model.AccessData, error) { 4910 4911 tries := 0 4912 for { 4913 result, err := s.OAuthStore.GetAccessDataByRefreshToken(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) GetAccessDataByUserForApp(userID string, clientId string) ([]*model.AccessData, error) { 4930 4931 tries := 0 4932 for { 4933 result, err := s.OAuthStore.GetAccessDataByUserForApp(userID, clientId) 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) GetApp(id string) (*model.OAuthApp, error) { 4950 4951 tries := 0 4952 for { 4953 result, err := s.OAuthStore.GetApp(id) 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) GetAppByUser(userID string, offset int, limit int) ([]*model.OAuthApp, error) { 4970 4971 tries := 0 4972 for { 4973 result, err := s.OAuthStore.GetAppByUser(userID, offset, limit) 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) GetApps(offset int, limit int) ([]*model.OAuthApp, error) { 4990 4991 tries := 0 4992 for { 4993 result, err := s.OAuthStore.GetApps(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) GetAuthData(code string) (*model.AuthData, error) { 5010 5011 tries := 0 5012 for { 5013 result, err := s.OAuthStore.GetAuthData(code) 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) GetAuthorizedApps(userID string, offset int, limit int) ([]*model.OAuthApp, error) { 5030 5031 tries := 0 5032 for { 5033 result, err := s.OAuthStore.GetAuthorizedApps(userID, offset, limit) 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) GetPreviousAccessData(userID string, clientId string) (*model.AccessData, error) { 5050 5051 tries := 0 5052 for { 5053 result, err := s.OAuthStore.GetPreviousAccessData(userID, clientId) 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) PermanentDeleteAuthDataByUser(userID string) error { 5070 5071 tries := 0 5072 for { 5073 err := s.OAuthStore.PermanentDeleteAuthDataByUser(userID) 5074 if err == nil { 5075 return nil 5076 } 5077 if !isRepeatableError(err) { 5078 return err 5079 } 5080 tries++ 5081 if tries >= 3 { 5082 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5083 return err 5084 } 5085 } 5086 5087 } 5088 5089 func (s *RetryLayerOAuthStore) RemoveAccessData(token string) error { 5090 5091 tries := 0 5092 for { 5093 err := s.OAuthStore.RemoveAccessData(token) 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) RemoveAllAccessData() error { 5110 5111 tries := 0 5112 for { 5113 err := s.OAuthStore.RemoveAllAccessData() 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) RemoveAuthData(code string) error { 5130 5131 tries := 0 5132 for { 5133 err := s.OAuthStore.RemoveAuthData(code) 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) SaveAccessData(accessData *model.AccessData) (*model.AccessData, error) { 5150 5151 tries := 0 5152 for { 5153 result, err := s.OAuthStore.SaveAccessData(accessData) 5154 if err == nil { 5155 return result, nil 5156 } 5157 if !isRepeatableError(err) { 5158 return result, err 5159 } 5160 tries++ 5161 if tries >= 3 { 5162 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5163 return result, err 5164 } 5165 } 5166 5167 } 5168 5169 func (s *RetryLayerOAuthStore) SaveApp(app *model.OAuthApp) (*model.OAuthApp, error) { 5170 5171 tries := 0 5172 for { 5173 result, err := s.OAuthStore.SaveApp(app) 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) SaveAuthData(authData *model.AuthData) (*model.AuthData, error) { 5190 5191 tries := 0 5192 for { 5193 result, err := s.OAuthStore.SaveAuthData(authData) 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) UpdateAccessData(accessData *model.AccessData) (*model.AccessData, error) { 5210 5211 tries := 0 5212 for { 5213 result, err := s.OAuthStore.UpdateAccessData(accessData) 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) UpdateApp(app *model.OAuthApp) (*model.OAuthApp, error) { 5230 5231 tries := 0 5232 for { 5233 result, err := s.OAuthStore.UpdateApp(app) 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 *RetryLayerPluginStore) CompareAndDelete(keyVal *model.PluginKeyValue, oldValue []byte) (bool, error) { 5250 5251 tries := 0 5252 for { 5253 result, err := s.PluginStore.CompareAndDelete(keyVal, oldValue) 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) CompareAndSet(keyVal *model.PluginKeyValue, oldValue []byte) (bool, error) { 5270 5271 tries := 0 5272 for { 5273 result, err := s.PluginStore.CompareAndSet(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) Delete(pluginID string, key string) error { 5290 5291 tries := 0 5292 for { 5293 err := s.PluginStore.Delete(pluginID, key) 5294 if err == nil { 5295 return nil 5296 } 5297 if !isRepeatableError(err) { 5298 return err 5299 } 5300 tries++ 5301 if tries >= 3 { 5302 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5303 return err 5304 } 5305 } 5306 5307 } 5308 5309 func (s *RetryLayerPluginStore) DeleteAllExpired() error { 5310 5311 tries := 0 5312 for { 5313 err := s.PluginStore.DeleteAllExpired() 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) DeleteAllForPlugin(PluginID string) error { 5330 5331 tries := 0 5332 for { 5333 err := s.PluginStore.DeleteAllForPlugin(PluginID) 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) Get(pluginID string, key string) (*model.PluginKeyValue, error) { 5350 5351 tries := 0 5352 for { 5353 result, err := s.PluginStore.Get(pluginID, key) 5354 if err == nil { 5355 return result, nil 5356 } 5357 if !isRepeatableError(err) { 5358 return result, err 5359 } 5360 tries++ 5361 if tries >= 3 { 5362 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5363 return result, err 5364 } 5365 } 5366 5367 } 5368 5369 func (s *RetryLayerPluginStore) List(pluginID string, page int, perPage int) ([]string, error) { 5370 5371 tries := 0 5372 for { 5373 result, err := s.PluginStore.List(pluginID, page, perPage) 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) SaveOrUpdate(keyVal *model.PluginKeyValue) (*model.PluginKeyValue, error) { 5390 5391 tries := 0 5392 for { 5393 result, err := s.PluginStore.SaveOrUpdate(keyVal) 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) SetWithOptions(pluginID string, key string, value []byte, options model.PluginKVSetOptions) (bool, error) { 5410 5411 tries := 0 5412 for { 5413 result, err := s.PluginStore.SetWithOptions(pluginID, key, value, options) 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 *RetryLayerPostStore) AnalyticsPostCount(teamID string, mustHaveFile bool, mustHaveHashtag bool) (int64, error) { 5430 5431 tries := 0 5432 for { 5433 result, err := s.PostStore.AnalyticsPostCount(teamID, mustHaveFile, mustHaveHashtag) 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) AnalyticsPostCountsByDay(options *model.AnalyticsPostCountsOptions) (model.AnalyticsRows, error) { 5450 5451 tries := 0 5452 for { 5453 result, err := s.PostStore.AnalyticsPostCountsByDay(options) 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) AnalyticsUserCountsWithPostsByDay(teamID string) (model.AnalyticsRows, error) { 5470 5471 tries := 0 5472 for { 5473 result, err := s.PostStore.AnalyticsUserCountsWithPostsByDay(teamID) 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) ClearCaches() { 5490 5491 s.PostStore.ClearCaches() 5492 5493 } 5494 5495 func (s *RetryLayerPostStore) Delete(postID string, time int64, deleteByID string) error { 5496 5497 tries := 0 5498 for { 5499 err := s.PostStore.Delete(postID, time, deleteByID) 5500 if err == nil { 5501 return nil 5502 } 5503 if !isRepeatableError(err) { 5504 return err 5505 } 5506 tries++ 5507 if tries >= 3 { 5508 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5509 return err 5510 } 5511 } 5512 5513 } 5514 5515 func (s *RetryLayerPostStore) DeleteOrphanedRows(limit int) (int64, error) { 5516 5517 tries := 0 5518 for { 5519 result, err := s.PostStore.DeleteOrphanedRows(limit) 5520 if err == nil { 5521 return result, nil 5522 } 5523 if !isRepeatableError(err) { 5524 return result, err 5525 } 5526 tries++ 5527 if tries >= 3 { 5528 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5529 return result, err 5530 } 5531 } 5532 5533 } 5534 5535 func (s *RetryLayerPostStore) Get(ctx context.Context, id string, skipFetchThreads bool, collapsedThreads bool, collapsedThreadsExtended bool, userID string) (*model.PostList, error) { 5536 5537 tries := 0 5538 for { 5539 result, err := s.PostStore.Get(ctx, id, skipFetchThreads, collapsedThreads, collapsedThreadsExtended, userID) 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) GetDirectPostParentsForExportAfter(limit int, afterID string) ([]*model.DirectPostForExport, error) { 5556 5557 tries := 0 5558 for { 5559 result, err := s.PostStore.GetDirectPostParentsForExportAfter(limit, afterID) 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) GetEtag(channelID string, allowFromCache bool, collapsedThreads bool) string { 5576 5577 return s.PostStore.GetEtag(channelID, allowFromCache, collapsedThreads) 5578 5579 } 5580 5581 func (s *RetryLayerPostStore) GetFlaggedPosts(userID string, offset int, limit int) (*model.PostList, error) { 5582 5583 tries := 0 5584 for { 5585 result, err := s.PostStore.GetFlaggedPosts(userID, offset, limit) 5586 if err == nil { 5587 return result, nil 5588 } 5589 if !isRepeatableError(err) { 5590 return result, err 5591 } 5592 tries++ 5593 if tries >= 3 { 5594 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5595 return result, err 5596 } 5597 } 5598 5599 } 5600 5601 func (s *RetryLayerPostStore) GetFlaggedPostsForChannel(userID string, channelID string, offset int, limit int) (*model.PostList, error) { 5602 5603 tries := 0 5604 for { 5605 result, err := s.PostStore.GetFlaggedPostsForChannel(userID, channelID, 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) GetFlaggedPostsForTeam(userID string, teamID string, offset int, limit int) (*model.PostList, error) { 5622 5623 tries := 0 5624 for { 5625 result, err := s.PostStore.GetFlaggedPostsForTeam(userID, teamID, 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) GetMaxPostSize() int { 5642 5643 return s.PostStore.GetMaxPostSize() 5644 5645 } 5646 5647 func (s *RetryLayerPostStore) GetOldest() (*model.Post, error) { 5648 5649 tries := 0 5650 for { 5651 result, err := s.PostStore.GetOldest() 5652 if err == nil { 5653 return result, nil 5654 } 5655 if !isRepeatableError(err) { 5656 return result, err 5657 } 5658 tries++ 5659 if tries >= 3 { 5660 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5661 return result, err 5662 } 5663 } 5664 5665 } 5666 5667 func (s *RetryLayerPostStore) GetOldestEntityCreationTime() (int64, error) { 5668 5669 tries := 0 5670 for { 5671 result, err := s.PostStore.GetOldestEntityCreationTime() 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) GetParentsForExportAfter(limit int, afterID string) ([]*model.PostForExport, error) { 5688 5689 tries := 0 5690 for { 5691 result, err := s.PostStore.GetParentsForExportAfter(limit, afterID) 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) GetPostAfterTime(channelID string, time int64, collapsedThreads bool) (*model.Post, error) { 5708 5709 tries := 0 5710 for { 5711 result, err := s.PostStore.GetPostAfterTime(channelID, time, collapsedThreads) 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) GetPostIdAfterTime(channelID string, time int64, collapsedThreads bool) (string, error) { 5728 5729 tries := 0 5730 for { 5731 result, err := s.PostStore.GetPostIdAfterTime(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) GetPostIdBeforeTime(channelID string, time int64, collapsedThreads bool) (string, error) { 5748 5749 tries := 0 5750 for { 5751 result, err := s.PostStore.GetPostIdBeforeTime(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) GetPosts(options model.GetPostsOptions, allowFromCache bool) (*model.PostList, error) { 5768 5769 tries := 0 5770 for { 5771 result, err := s.PostStore.GetPosts(options, allowFromCache) 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) GetPostsAfter(options model.GetPostsOptions) (*model.PostList, error) { 5788 5789 tries := 0 5790 for { 5791 result, err := s.PostStore.GetPostsAfter(options) 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) GetPostsBatchForIndexing(startTime int64, endTime int64, limit int) ([]*model.PostForIndexing, error) { 5808 5809 tries := 0 5810 for { 5811 result, err := s.PostStore.GetPostsBatchForIndexing(startTime, endTime, limit) 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) GetPostsBefore(options model.GetPostsOptions) (*model.PostList, error) { 5828 5829 tries := 0 5830 for { 5831 result, err := s.PostStore.GetPostsBefore(options) 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) GetPostsByIds(postIds []string) ([]*model.Post, error) { 5848 5849 tries := 0 5850 for { 5851 result, err := s.PostStore.GetPostsByIds(postIds) 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) GetPostsCreatedAt(channelID string, time int64) ([]*model.Post, error) { 5868 5869 tries := 0 5870 for { 5871 result, err := s.PostStore.GetPostsCreatedAt(channelID, time) 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) GetPostsSince(options model.GetPostsSinceOptions, allowFromCache bool) (*model.PostList, error) { 5888 5889 tries := 0 5890 for { 5891 result, err := s.PostStore.GetPostsSince(options, allowFromCache) 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) GetPostsSinceForSync(options model.GetPostsSinceForSyncOptions, cursor model.GetPostsSinceForSyncCursor, limit int) ([]*model.Post, model.GetPostsSinceForSyncCursor, error) { 5908 5909 tries := 0 5910 for { 5911 result, resultVar1, err := s.PostStore.GetPostsSinceForSync(options, cursor, limit) 5912 if err == nil { 5913 return result, resultVar1, nil 5914 } 5915 if !isRepeatableError(err) { 5916 return result, resultVar1, err 5917 } 5918 tries++ 5919 if tries >= 3 { 5920 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5921 return result, resultVar1, err 5922 } 5923 } 5924 5925 } 5926 5927 func (s *RetryLayerPostStore) GetRepliesForExport(parentID string) ([]*model.ReplyForExport, error) { 5928 5929 tries := 0 5930 for { 5931 result, err := s.PostStore.GetRepliesForExport(parentID) 5932 if err == nil { 5933 return result, nil 5934 } 5935 if !isRepeatableError(err) { 5936 return result, err 5937 } 5938 tries++ 5939 if tries >= 3 { 5940 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 5941 return result, err 5942 } 5943 } 5944 5945 } 5946 5947 func (s *RetryLayerPostStore) GetSingle(id string, inclDeleted bool) (*model.Post, error) { 5948 5949 tries := 0 5950 for { 5951 result, err := s.PostStore.GetSingle(id, inclDeleted) 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) HasAutoResponsePostByUserSince(options model.GetPostsSinceOptions, userId string) (bool, error) { 5968 5969 tries := 0 5970 for { 5971 result, err := s.PostStore.HasAutoResponsePostByUserSince(options, userId) 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) InvalidateLastPostTimeCache(channelID string) { 5988 5989 s.PostStore.InvalidateLastPostTimeCache(channelID) 5990 5991 } 5992 5993 func (s *RetryLayerPostStore) Overwrite(post *model.Post) (*model.Post, error) { 5994 5995 tries := 0 5996 for { 5997 result, err := s.PostStore.Overwrite(post) 5998 if err == nil { 5999 return result, nil 6000 } 6001 if !isRepeatableError(err) { 6002 return result, err 6003 } 6004 tries++ 6005 if tries >= 3 { 6006 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6007 return result, err 6008 } 6009 } 6010 6011 } 6012 6013 func (s *RetryLayerPostStore) OverwriteMultiple(posts []*model.Post) ([]*model.Post, int, error) { 6014 6015 tries := 0 6016 for { 6017 result, resultVar1, err := s.PostStore.OverwriteMultiple(posts) 6018 if err == nil { 6019 return result, resultVar1, nil 6020 } 6021 if !isRepeatableError(err) { 6022 return result, resultVar1, err 6023 } 6024 tries++ 6025 if tries >= 3 { 6026 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6027 return result, resultVar1, err 6028 } 6029 } 6030 6031 } 6032 6033 func (s *RetryLayerPostStore) PermanentDeleteBatch(endTime int64, limit int64) (int64, error) { 6034 6035 tries := 0 6036 for { 6037 result, err := s.PostStore.PermanentDeleteBatch(endTime, limit) 6038 if err == nil { 6039 return result, nil 6040 } 6041 if !isRepeatableError(err) { 6042 return result, err 6043 } 6044 tries++ 6045 if tries >= 3 { 6046 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6047 return result, err 6048 } 6049 } 6050 6051 } 6052 6053 func (s *RetryLayerPostStore) PermanentDeleteBatchForRetentionPolicies(now int64, globalPolicyEndTime int64, limit int64, cursor model.RetentionPolicyCursor) (int64, model.RetentionPolicyCursor, error) { 6054 6055 tries := 0 6056 for { 6057 result, resultVar1, err := s.PostStore.PermanentDeleteBatchForRetentionPolicies(now, globalPolicyEndTime, limit, cursor) 6058 if err == nil { 6059 return result, resultVar1, nil 6060 } 6061 if !isRepeatableError(err) { 6062 return result, resultVar1, err 6063 } 6064 tries++ 6065 if tries >= 3 { 6066 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6067 return result, resultVar1, err 6068 } 6069 } 6070 6071 } 6072 6073 func (s *RetryLayerPostStore) PermanentDeleteByChannel(channelID string) error { 6074 6075 tries := 0 6076 for { 6077 err := s.PostStore.PermanentDeleteByChannel(channelID) 6078 if err == nil { 6079 return nil 6080 } 6081 if !isRepeatableError(err) { 6082 return err 6083 } 6084 tries++ 6085 if tries >= 3 { 6086 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6087 return err 6088 } 6089 } 6090 6091 } 6092 6093 func (s *RetryLayerPostStore) PermanentDeleteByUser(userID string) error { 6094 6095 tries := 0 6096 for { 6097 err := s.PostStore.PermanentDeleteByUser(userID) 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) Save(post *model.Post) (*model.Post, error) { 6114 6115 tries := 0 6116 for { 6117 result, err := s.PostStore.Save(post) 6118 if err == nil { 6119 return result, nil 6120 } 6121 if !isRepeatableError(err) { 6122 return result, err 6123 } 6124 tries++ 6125 if tries >= 3 { 6126 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6127 return result, err 6128 } 6129 } 6130 6131 } 6132 6133 func (s *RetryLayerPostStore) SaveMultiple(posts []*model.Post) ([]*model.Post, int, error) { 6134 6135 tries := 0 6136 for { 6137 result, resultVar1, err := s.PostStore.SaveMultiple(posts) 6138 if err == nil { 6139 return result, resultVar1, nil 6140 } 6141 if !isRepeatableError(err) { 6142 return result, resultVar1, err 6143 } 6144 tries++ 6145 if tries >= 3 { 6146 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6147 return result, resultVar1, err 6148 } 6149 } 6150 6151 } 6152 6153 func (s *RetryLayerPostStore) Search(teamID string, userID string, params *model.SearchParams) (*model.PostList, error) { 6154 6155 tries := 0 6156 for { 6157 result, err := s.PostStore.Search(teamID, userID, params) 6158 if err == nil { 6159 return result, nil 6160 } 6161 if !isRepeatableError(err) { 6162 return result, err 6163 } 6164 tries++ 6165 if tries >= 3 { 6166 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6167 return result, err 6168 } 6169 } 6170 6171 } 6172 6173 func (s *RetryLayerPostStore) SearchPostsInTeamForUser(paramsList []*model.SearchParams, userID string, teamID string, page int, perPage int) (*model.PostSearchResults, error) { 6174 6175 tries := 0 6176 for { 6177 result, err := s.PostStore.SearchPostsInTeamForUser(paramsList, userID, teamID, page, perPage) 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) Update(newPost *model.Post, oldPost *model.Post) (*model.Post, error) { 6194 6195 tries := 0 6196 for { 6197 result, err := s.PostStore.Update(newPost, oldPost) 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 *RetryLayerPreferenceStore) CleanupFlagsBatch(limit int64) (int64, error) { 6214 6215 tries := 0 6216 for { 6217 result, err := s.PreferenceStore.CleanupFlagsBatch(limit) 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) Delete(userID string, category string, name string) error { 6234 6235 tries := 0 6236 for { 6237 err := s.PreferenceStore.Delete(userID, category, name) 6238 if err == nil { 6239 return nil 6240 } 6241 if !isRepeatableError(err) { 6242 return err 6243 } 6244 tries++ 6245 if tries >= 3 { 6246 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6247 return err 6248 } 6249 } 6250 6251 } 6252 6253 func (s *RetryLayerPreferenceStore) DeleteCategory(userID string, category string) error { 6254 6255 tries := 0 6256 for { 6257 err := s.PreferenceStore.DeleteCategory(userID, category) 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) DeleteCategoryAndName(category string, name string) error { 6274 6275 tries := 0 6276 for { 6277 err := s.PreferenceStore.DeleteCategoryAndName(category, name) 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) DeleteOrphanedRows(limit int) (int64, error) { 6294 6295 tries := 0 6296 for { 6297 result, err := s.PreferenceStore.DeleteOrphanedRows(limit) 6298 if err == nil { 6299 return result, nil 6300 } 6301 if !isRepeatableError(err) { 6302 return result, err 6303 } 6304 tries++ 6305 if tries >= 3 { 6306 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6307 return result, err 6308 } 6309 } 6310 6311 } 6312 6313 func (s *RetryLayerPreferenceStore) Get(userID string, category string, name string) (*model.Preference, error) { 6314 6315 tries := 0 6316 for { 6317 result, err := s.PreferenceStore.Get(userID, category, name) 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) GetAll(userID string) (model.Preferences, error) { 6334 6335 tries := 0 6336 for { 6337 result, err := s.PreferenceStore.GetAll(userID) 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) GetCategory(userID string, category string) (model.Preferences, error) { 6354 6355 tries := 0 6356 for { 6357 result, err := s.PreferenceStore.GetCategory(userID, category) 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) PermanentDeleteByUser(userID string) error { 6374 6375 tries := 0 6376 for { 6377 err := s.PreferenceStore.PermanentDeleteByUser(userID) 6378 if err == nil { 6379 return nil 6380 } 6381 if !isRepeatableError(err) { 6382 return err 6383 } 6384 tries++ 6385 if tries >= 3 { 6386 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6387 return err 6388 } 6389 } 6390 6391 } 6392 6393 func (s *RetryLayerPreferenceStore) Save(preferences *model.Preferences) error { 6394 6395 tries := 0 6396 for { 6397 err := s.PreferenceStore.Save(preferences) 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 *RetryLayerProductNoticesStore) Clear(notices []string) error { 6414 6415 tries := 0 6416 for { 6417 err := s.ProductNoticesStore.Clear(notices) 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) ClearOldNotices(currentNotices *model.ProductNotices) error { 6434 6435 tries := 0 6436 for { 6437 err := s.ProductNoticesStore.ClearOldNotices(currentNotices) 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) GetViews(userID string) ([]model.ProductNoticeViewState, error) { 6454 6455 tries := 0 6456 for { 6457 result, err := s.ProductNoticesStore.GetViews(userID) 6458 if err == nil { 6459 return result, nil 6460 } 6461 if !isRepeatableError(err) { 6462 return result, err 6463 } 6464 tries++ 6465 if tries >= 3 { 6466 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6467 return result, err 6468 } 6469 } 6470 6471 } 6472 6473 func (s *RetryLayerProductNoticesStore) View(userID string, notices []string) error { 6474 6475 tries := 0 6476 for { 6477 err := s.ProductNoticesStore.View(userID, notices) 6478 if err == nil { 6479 return nil 6480 } 6481 if !isRepeatableError(err) { 6482 return err 6483 } 6484 tries++ 6485 if tries >= 3 { 6486 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6487 return err 6488 } 6489 } 6490 6491 } 6492 6493 func (s *RetryLayerReactionStore) BulkGetForPosts(postIds []string) ([]*model.Reaction, error) { 6494 6495 tries := 0 6496 for { 6497 result, err := s.ReactionStore.BulkGetForPosts(postIds) 6498 if err == nil { 6499 return result, nil 6500 } 6501 if !isRepeatableError(err) { 6502 return result, err 6503 } 6504 tries++ 6505 if tries >= 3 { 6506 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6507 return result, err 6508 } 6509 } 6510 6511 } 6512 6513 func (s *RetryLayerReactionStore) Delete(reaction *model.Reaction) (*model.Reaction, error) { 6514 6515 tries := 0 6516 for { 6517 result, err := s.ReactionStore.Delete(reaction) 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) DeleteAllWithEmojiName(emojiName string) error { 6534 6535 tries := 0 6536 for { 6537 err := s.ReactionStore.DeleteAllWithEmojiName(emojiName) 6538 if err == nil { 6539 return nil 6540 } 6541 if !isRepeatableError(err) { 6542 return err 6543 } 6544 tries++ 6545 if tries >= 3 { 6546 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6547 return err 6548 } 6549 } 6550 6551 } 6552 6553 func (s *RetryLayerReactionStore) DeleteOrphanedRows(limit int) (int64, error) { 6554 6555 tries := 0 6556 for { 6557 result, err := s.ReactionStore.DeleteOrphanedRows(limit) 6558 if err == nil { 6559 return result, nil 6560 } 6561 if !isRepeatableError(err) { 6562 return result, err 6563 } 6564 tries++ 6565 if tries >= 3 { 6566 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6567 return result, err 6568 } 6569 } 6570 6571 } 6572 6573 func (s *RetryLayerReactionStore) GetForPost(postID string, allowFromCache bool) ([]*model.Reaction, error) { 6574 6575 tries := 0 6576 for { 6577 result, err := s.ReactionStore.GetForPost(postID, allowFromCache) 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) GetForPostSince(postId string, since int64, excludeRemoteId string, inclDeleted bool) ([]*model.Reaction, error) { 6594 6595 tries := 0 6596 for { 6597 result, err := s.ReactionStore.GetForPostSince(postId, since, excludeRemoteId, inclDeleted) 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) PermanentDeleteBatch(endTime int64, limit int64) (int64, error) { 6614 6615 tries := 0 6616 for { 6617 result, err := s.ReactionStore.PermanentDeleteBatch(endTime, limit) 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) Save(reaction *model.Reaction) (*model.Reaction, error) { 6634 6635 tries := 0 6636 for { 6637 result, err := s.ReactionStore.Save(reaction) 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 *RetryLayerRemoteClusterStore) Delete(remoteClusterId string) (bool, error) { 6654 6655 tries := 0 6656 for { 6657 result, err := s.RemoteClusterStore.Delete(remoteClusterId) 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) Get(remoteClusterId string) (*model.RemoteCluster, error) { 6674 6675 tries := 0 6676 for { 6677 result, err := s.RemoteClusterStore.Get(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) GetAll(filter model.RemoteClusterQueryFilter) ([]*model.RemoteCluster, error) { 6694 6695 tries := 0 6696 for { 6697 result, err := s.RemoteClusterStore.GetAll(filter) 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) Save(rc *model.RemoteCluster) (*model.RemoteCluster, error) { 6714 6715 tries := 0 6716 for { 6717 result, err := s.RemoteClusterStore.Save(rc) 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) SetLastPingAt(remoteClusterId string) error { 6734 6735 tries := 0 6736 for { 6737 err := s.RemoteClusterStore.SetLastPingAt(remoteClusterId) 6738 if err == nil { 6739 return nil 6740 } 6741 if !isRepeatableError(err) { 6742 return err 6743 } 6744 tries++ 6745 if tries >= 3 { 6746 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6747 return err 6748 } 6749 } 6750 6751 } 6752 6753 func (s *RetryLayerRemoteClusterStore) Update(rc *model.RemoteCluster) (*model.RemoteCluster, error) { 6754 6755 tries := 0 6756 for { 6757 result, err := s.RemoteClusterStore.Update(rc) 6758 if err == nil { 6759 return result, nil 6760 } 6761 if !isRepeatableError(err) { 6762 return result, err 6763 } 6764 tries++ 6765 if tries >= 3 { 6766 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6767 return result, err 6768 } 6769 } 6770 6771 } 6772 6773 func (s *RetryLayerRemoteClusterStore) UpdateTopics(remoteClusterId string, topics string) (*model.RemoteCluster, error) { 6774 6775 tries := 0 6776 for { 6777 result, err := s.RemoteClusterStore.UpdateTopics(remoteClusterId, topics) 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 *RetryLayerRetentionPolicyStore) AddChannels(policyId string, channelIds []string) error { 6794 6795 tries := 0 6796 for { 6797 err := s.RetentionPolicyStore.AddChannels(policyId, channelIds) 6798 if err == nil { 6799 return nil 6800 } 6801 if !isRepeatableError(err) { 6802 return err 6803 } 6804 tries++ 6805 if tries >= 3 { 6806 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6807 return err 6808 } 6809 } 6810 6811 } 6812 6813 func (s *RetryLayerRetentionPolicyStore) AddTeams(policyId string, teamIds []string) error { 6814 6815 tries := 0 6816 for { 6817 err := s.RetentionPolicyStore.AddTeams(policyId, teamIds) 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) Delete(id string) error { 6834 6835 tries := 0 6836 for { 6837 err := s.RetentionPolicyStore.Delete(id) 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) DeleteOrphanedRows(limit int) (int64, error) { 6854 6855 tries := 0 6856 for { 6857 result, err := s.RetentionPolicyStore.DeleteOrphanedRows(limit) 6858 if err == nil { 6859 return result, nil 6860 } 6861 if !isRepeatableError(err) { 6862 return result, err 6863 } 6864 tries++ 6865 if tries >= 3 { 6866 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 6867 return result, err 6868 } 6869 } 6870 6871 } 6872 6873 func (s *RetryLayerRetentionPolicyStore) Get(id string) (*model.RetentionPolicyWithTeamAndChannelCounts, error) { 6874 6875 tries := 0 6876 for { 6877 result, err := s.RetentionPolicyStore.Get(id) 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) GetAll(offset int, limit int) ([]*model.RetentionPolicyWithTeamAndChannelCounts, error) { 6894 6895 tries := 0 6896 for { 6897 result, err := s.RetentionPolicyStore.GetAll(offset, limit) 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) GetChannelPoliciesCountForUser(userID string) (int64, error) { 6914 6915 tries := 0 6916 for { 6917 result, err := s.RetentionPolicyStore.GetChannelPoliciesCountForUser(userID) 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) GetChannelPoliciesForUser(userID string, offset int, limit int) ([]*model.RetentionPolicyForChannel, error) { 6934 6935 tries := 0 6936 for { 6937 result, err := s.RetentionPolicyStore.GetChannelPoliciesForUser(userID, offset, limit) 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) GetChannels(policyId string, offset int, limit int) (model.ChannelListWithTeamData, error) { 6954 6955 tries := 0 6956 for { 6957 result, err := s.RetentionPolicyStore.GetChannels(policyId, 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) GetChannelsCount(policyId string) (int64, error) { 6974 6975 tries := 0 6976 for { 6977 result, err := s.RetentionPolicyStore.GetChannelsCount(policyId) 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) GetCount() (int64, error) { 6994 6995 tries := 0 6996 for { 6997 result, err := s.RetentionPolicyStore.GetCount() 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) GetTeamPoliciesCountForUser(userID string) (int64, error) { 7014 7015 tries := 0 7016 for { 7017 result, err := s.RetentionPolicyStore.GetTeamPoliciesCountForUser(userID) 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) GetTeamPoliciesForUser(userID string, offset int, limit int) ([]*model.RetentionPolicyForTeam, error) { 7034 7035 tries := 0 7036 for { 7037 result, err := s.RetentionPolicyStore.GetTeamPoliciesForUser(userID, offset, limit) 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) GetTeams(policyId string, offset int, limit int) ([]*model.Team, error) { 7054 7055 tries := 0 7056 for { 7057 result, err := s.RetentionPolicyStore.GetTeams(policyId, 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) GetTeamsCount(policyId string) (int64, error) { 7074 7075 tries := 0 7076 for { 7077 result, err := s.RetentionPolicyStore.GetTeamsCount(policyId) 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) Patch(patch *model.RetentionPolicyWithTeamAndChannelIDs) (*model.RetentionPolicyWithTeamAndChannelCounts, error) { 7094 7095 tries := 0 7096 for { 7097 result, err := s.RetentionPolicyStore.Patch(patch) 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) RemoveChannels(policyId string, channelIds []string) error { 7114 7115 tries := 0 7116 for { 7117 err := s.RetentionPolicyStore.RemoveChannels(policyId, channelIds) 7118 if err == nil { 7119 return nil 7120 } 7121 if !isRepeatableError(err) { 7122 return err 7123 } 7124 tries++ 7125 if tries >= 3 { 7126 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7127 return err 7128 } 7129 } 7130 7131 } 7132 7133 func (s *RetryLayerRetentionPolicyStore) RemoveTeams(policyId string, teamIds []string) error { 7134 7135 tries := 0 7136 for { 7137 err := s.RetentionPolicyStore.RemoveTeams(policyId, teamIds) 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) Save(policy *model.RetentionPolicyWithTeamAndChannelIDs) (*model.RetentionPolicyWithTeamAndChannelCounts, error) { 7154 7155 tries := 0 7156 for { 7157 result, err := s.RetentionPolicyStore.Save(policy) 7158 if err == nil { 7159 return result, nil 7160 } 7161 if !isRepeatableError(err) { 7162 return result, err 7163 } 7164 tries++ 7165 if tries >= 3 { 7166 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7167 return result, err 7168 } 7169 } 7170 7171 } 7172 7173 func (s *RetryLayerRoleStore) AllChannelSchemeRoles() ([]*model.Role, error) { 7174 7175 tries := 0 7176 for { 7177 result, err := s.RoleStore.AllChannelSchemeRoles() 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) ChannelHigherScopedPermissions(roleNames []string) (map[string]*model.RolePermissions, error) { 7194 7195 tries := 0 7196 for { 7197 result, err := s.RoleStore.ChannelHigherScopedPermissions(roleNames) 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) ChannelRolesUnderTeamRole(roleName string) ([]*model.Role, error) { 7214 7215 tries := 0 7216 for { 7217 result, err := s.RoleStore.ChannelRolesUnderTeamRole(roleName) 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) Delete(roleID string) (*model.Role, error) { 7234 7235 tries := 0 7236 for { 7237 result, err := s.RoleStore.Delete(roleID) 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) Get(roleID string) (*model.Role, error) { 7254 7255 tries := 0 7256 for { 7257 result, err := s.RoleStore.Get(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) GetAll() ([]*model.Role, error) { 7274 7275 tries := 0 7276 for { 7277 result, err := s.RoleStore.GetAll() 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) GetByName(ctx context.Context, name string) (*model.Role, error) { 7294 7295 tries := 0 7296 for { 7297 result, err := s.RoleStore.GetByName(ctx, name) 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) GetByNames(names []string) ([]*model.Role, error) { 7314 7315 tries := 0 7316 for { 7317 result, err := s.RoleStore.GetByNames(names) 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) PermanentDeleteAll() error { 7334 7335 tries := 0 7336 for { 7337 err := s.RoleStore.PermanentDeleteAll() 7338 if err == nil { 7339 return nil 7340 } 7341 if !isRepeatableError(err) { 7342 return err 7343 } 7344 tries++ 7345 if tries >= 3 { 7346 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7347 return err 7348 } 7349 } 7350 7351 } 7352 7353 func (s *RetryLayerRoleStore) Save(role *model.Role) (*model.Role, error) { 7354 7355 tries := 0 7356 for { 7357 result, err := s.RoleStore.Save(role) 7358 if err == nil { 7359 return result, nil 7360 } 7361 if !isRepeatableError(err) { 7362 return result, err 7363 } 7364 tries++ 7365 if tries >= 3 { 7366 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7367 return result, err 7368 } 7369 } 7370 7371 } 7372 7373 func (s *RetryLayerSchemeStore) CountByScope(scope string) (int64, error) { 7374 7375 tries := 0 7376 for { 7377 result, err := s.SchemeStore.CountByScope(scope) 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) CountWithoutPermission(scope string, permissionID string, roleScope model.RoleScope, roleType model.RoleType) (int64, error) { 7394 7395 tries := 0 7396 for { 7397 result, err := s.SchemeStore.CountWithoutPermission(scope, permissionID, roleScope, roleType) 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) Delete(schemeID string) (*model.Scheme, error) { 7414 7415 tries := 0 7416 for { 7417 result, err := s.SchemeStore.Delete(schemeID) 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) Get(schemeID string) (*model.Scheme, error) { 7434 7435 tries := 0 7436 for { 7437 result, err := s.SchemeStore.Get(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) GetAllPage(scope string, offset int, limit int) ([]*model.Scheme, error) { 7454 7455 tries := 0 7456 for { 7457 result, err := s.SchemeStore.GetAllPage(scope, offset, limit) 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) GetByName(schemeName string) (*model.Scheme, error) { 7474 7475 tries := 0 7476 for { 7477 result, err := s.SchemeStore.GetByName(schemeName) 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) PermanentDeleteAll() error { 7494 7495 tries := 0 7496 for { 7497 err := s.SchemeStore.PermanentDeleteAll() 7498 if err == nil { 7499 return nil 7500 } 7501 if !isRepeatableError(err) { 7502 return err 7503 } 7504 tries++ 7505 if tries >= 3 { 7506 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7507 return err 7508 } 7509 } 7510 7511 } 7512 7513 func (s *RetryLayerSchemeStore) Save(scheme *model.Scheme) (*model.Scheme, error) { 7514 7515 tries := 0 7516 for { 7517 result, err := s.SchemeStore.Save(scheme) 7518 if err == nil { 7519 return result, nil 7520 } 7521 if !isRepeatableError(err) { 7522 return result, err 7523 } 7524 tries++ 7525 if tries >= 3 { 7526 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7527 return result, err 7528 } 7529 } 7530 7531 } 7532 7533 func (s *RetryLayerSessionStore) AnalyticsSessionCount() (int64, error) { 7534 7535 tries := 0 7536 for { 7537 result, err := s.SessionStore.AnalyticsSessionCount() 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) Cleanup(expiryTime int64, batchSize int64) { 7554 7555 s.SessionStore.Cleanup(expiryTime, batchSize) 7556 7557 } 7558 7559 func (s *RetryLayerSessionStore) Get(ctx context.Context, sessionIDOrToken string) (*model.Session, error) { 7560 7561 tries := 0 7562 for { 7563 result, err := s.SessionStore.Get(ctx, sessionIDOrToken) 7564 if err == nil { 7565 return result, nil 7566 } 7567 if !isRepeatableError(err) { 7568 return result, err 7569 } 7570 tries++ 7571 if tries >= 3 { 7572 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7573 return result, err 7574 } 7575 } 7576 7577 } 7578 7579 func (s *RetryLayerSessionStore) GetSessions(userID string) ([]*model.Session, error) { 7580 7581 tries := 0 7582 for { 7583 result, err := s.SessionStore.GetSessions(userID) 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) GetSessionsExpired(thresholdMillis int64, mobileOnly bool, unnotifiedOnly bool) ([]*model.Session, error) { 7600 7601 tries := 0 7602 for { 7603 result, err := s.SessionStore.GetSessionsExpired(thresholdMillis, mobileOnly, unnotifiedOnly) 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) GetSessionsWithActiveDeviceIds(userID string) ([]*model.Session, error) { 7620 7621 tries := 0 7622 for { 7623 result, err := s.SessionStore.GetSessionsWithActiveDeviceIds(userID) 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) PermanentDeleteSessionsByUser(teamID string) error { 7640 7641 tries := 0 7642 for { 7643 err := s.SessionStore.PermanentDeleteSessionsByUser(teamID) 7644 if err == nil { 7645 return nil 7646 } 7647 if !isRepeatableError(err) { 7648 return err 7649 } 7650 tries++ 7651 if tries >= 3 { 7652 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7653 return err 7654 } 7655 } 7656 7657 } 7658 7659 func (s *RetryLayerSessionStore) Remove(sessionIDOrToken string) error { 7660 7661 tries := 0 7662 for { 7663 err := s.SessionStore.Remove(sessionIDOrToken) 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) RemoveAllSessions() error { 7680 7681 tries := 0 7682 for { 7683 err := s.SessionStore.RemoveAllSessions() 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) Save(session *model.Session) (*model.Session, error) { 7700 7701 tries := 0 7702 for { 7703 result, err := s.SessionStore.Save(session) 7704 if err == nil { 7705 return result, nil 7706 } 7707 if !isRepeatableError(err) { 7708 return result, err 7709 } 7710 tries++ 7711 if tries >= 3 { 7712 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7713 return result, err 7714 } 7715 } 7716 7717 } 7718 7719 func (s *RetryLayerSessionStore) UpdateDeviceId(id string, deviceID string, expiresAt int64) (string, error) { 7720 7721 tries := 0 7722 for { 7723 result, err := s.SessionStore.UpdateDeviceId(id, deviceID, expiresAt) 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) UpdateExpiredNotify(sessionid string, notified bool) error { 7740 7741 tries := 0 7742 for { 7743 err := s.SessionStore.UpdateExpiredNotify(sessionid, notified) 7744 if err == nil { 7745 return nil 7746 } 7747 if !isRepeatableError(err) { 7748 return err 7749 } 7750 tries++ 7751 if tries >= 3 { 7752 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7753 return err 7754 } 7755 } 7756 7757 } 7758 7759 func (s *RetryLayerSessionStore) UpdateExpiresAt(sessionID string, time int64) error { 7760 7761 tries := 0 7762 for { 7763 err := s.SessionStore.UpdateExpiresAt(sessionID, time) 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) UpdateLastActivityAt(sessionID string, time int64) error { 7780 7781 tries := 0 7782 for { 7783 err := s.SessionStore.UpdateLastActivityAt(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) UpdateProps(session *model.Session) error { 7800 7801 tries := 0 7802 for { 7803 err := s.SessionStore.UpdateProps(session) 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) UpdateRoles(userID string, roles string) (string, error) { 7820 7821 tries := 0 7822 for { 7823 result, err := s.SessionStore.UpdateRoles(userID, roles) 7824 if err == nil { 7825 return result, nil 7826 } 7827 if !isRepeatableError(err) { 7828 return result, err 7829 } 7830 tries++ 7831 if tries >= 3 { 7832 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 7833 return result, err 7834 } 7835 } 7836 7837 } 7838 7839 func (s *RetryLayerSharedChannelStore) Delete(channelId string) (bool, error) { 7840 7841 tries := 0 7842 for { 7843 result, err := s.SharedChannelStore.Delete(channelId) 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) DeleteRemote(remoteId string) (bool, error) { 7860 7861 tries := 0 7862 for { 7863 result, err := s.SharedChannelStore.DeleteRemote(remoteId) 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) Get(channelId string) (*model.SharedChannel, error) { 7880 7881 tries := 0 7882 for { 7883 result, err := s.SharedChannelStore.Get(channelId) 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) GetAll(offset int, limit int, opts model.SharedChannelFilterOpts) ([]*model.SharedChannel, error) { 7900 7901 tries := 0 7902 for { 7903 result, err := s.SharedChannelStore.GetAll(offset, limit, opts) 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) GetAllCount(opts model.SharedChannelFilterOpts) (int64, error) { 7920 7921 tries := 0 7922 for { 7923 result, err := s.SharedChannelStore.GetAllCount(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) GetAttachment(fileId string, remoteId string) (*model.SharedChannelAttachment, error) { 7940 7941 tries := 0 7942 for { 7943 result, err := s.SharedChannelStore.GetAttachment(fileId, remoteId) 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) GetRemote(id string) (*model.SharedChannelRemote, error) { 7960 7961 tries := 0 7962 for { 7963 result, err := s.SharedChannelStore.GetRemote(id) 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) GetRemoteByIds(channelId string, remoteId string) (*model.SharedChannelRemote, error) { 7980 7981 tries := 0 7982 for { 7983 result, err := s.SharedChannelStore.GetRemoteByIds(channelId, remoteId) 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) GetRemoteForUser(remoteId string, userId string) (*model.RemoteCluster, error) { 8000 8001 tries := 0 8002 for { 8003 result, err := s.SharedChannelStore.GetRemoteForUser(remoteId, userId) 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) GetRemotes(opts model.SharedChannelRemoteFilterOpts) ([]*model.SharedChannelRemote, error) { 8020 8021 tries := 0 8022 for { 8023 result, err := s.SharedChannelStore.GetRemotes(opts) 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) GetRemotesStatus(channelId string) ([]*model.SharedChannelRemoteStatus, error) { 8040 8041 tries := 0 8042 for { 8043 result, err := s.SharedChannelStore.GetRemotesStatus(channelId) 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) GetSingleUser(userID string, channelID string, remoteID string) (*model.SharedChannelUser, error) { 8060 8061 tries := 0 8062 for { 8063 result, err := s.SharedChannelStore.GetSingleUser(userID, channelID, remoteID) 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) GetUsersForSync(filter model.GetUsersForSyncFilter) ([]*model.User, error) { 8080 8081 tries := 0 8082 for { 8083 result, err := s.SharedChannelStore.GetUsersForSync(filter) 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) GetUsersForUser(userID string) ([]*model.SharedChannelUser, error) { 8100 8101 tries := 0 8102 for { 8103 result, err := s.SharedChannelStore.GetUsersForUser(userID) 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) HasChannel(channelID string) (bool, error) { 8120 8121 tries := 0 8122 for { 8123 result, err := s.SharedChannelStore.HasChannel(channelID) 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) HasRemote(channelID string, remoteId string) (bool, error) { 8140 8141 tries := 0 8142 for { 8143 result, err := s.SharedChannelStore.HasRemote(channelID, remoteId) 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) Save(sc *model.SharedChannel) (*model.SharedChannel, error) { 8160 8161 tries := 0 8162 for { 8163 result, err := s.SharedChannelStore.Save(sc) 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) SaveAttachment(remote *model.SharedChannelAttachment) (*model.SharedChannelAttachment, error) { 8180 8181 tries := 0 8182 for { 8183 result, err := s.SharedChannelStore.SaveAttachment(remote) 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) SaveRemote(remote *model.SharedChannelRemote) (*model.SharedChannelRemote, error) { 8200 8201 tries := 0 8202 for { 8203 result, err := s.SharedChannelStore.SaveRemote(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) SaveUser(remote *model.SharedChannelUser) (*model.SharedChannelUser, error) { 8220 8221 tries := 0 8222 for { 8223 result, err := s.SharedChannelStore.SaveUser(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) Update(sc *model.SharedChannel) (*model.SharedChannel, error) { 8240 8241 tries := 0 8242 for { 8243 result, err := s.SharedChannelStore.Update(sc) 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) UpdateAttachmentLastSyncAt(id string, syncTime int64) error { 8260 8261 tries := 0 8262 for { 8263 err := s.SharedChannelStore.UpdateAttachmentLastSyncAt(id, syncTime) 8264 if err == nil { 8265 return nil 8266 } 8267 if !isRepeatableError(err) { 8268 return err 8269 } 8270 tries++ 8271 if tries >= 3 { 8272 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8273 return err 8274 } 8275 } 8276 8277 } 8278 8279 func (s *RetryLayerSharedChannelStore) UpdateRemote(remote *model.SharedChannelRemote) (*model.SharedChannelRemote, error) { 8280 8281 tries := 0 8282 for { 8283 result, err := s.SharedChannelStore.UpdateRemote(remote) 8284 if err == nil { 8285 return result, nil 8286 } 8287 if !isRepeatableError(err) { 8288 return result, err 8289 } 8290 tries++ 8291 if tries >= 3 { 8292 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8293 return result, err 8294 } 8295 } 8296 8297 } 8298 8299 func (s *RetryLayerSharedChannelStore) UpdateRemoteCursor(id string, cursor model.GetPostsSinceForSyncCursor) error { 8300 8301 tries := 0 8302 for { 8303 err := s.SharedChannelStore.UpdateRemoteCursor(id, cursor) 8304 if err == nil { 8305 return nil 8306 } 8307 if !isRepeatableError(err) { 8308 return err 8309 } 8310 tries++ 8311 if tries >= 3 { 8312 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8313 return err 8314 } 8315 } 8316 8317 } 8318 8319 func (s *RetryLayerSharedChannelStore) UpdateUserLastSyncAt(userID string, channelID string, remoteID string) error { 8320 8321 tries := 0 8322 for { 8323 err := s.SharedChannelStore.UpdateUserLastSyncAt(userID, channelID, remoteID) 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) UpsertAttachment(remote *model.SharedChannelAttachment) (string, error) { 8340 8341 tries := 0 8342 for { 8343 result, err := s.SharedChannelStore.UpsertAttachment(remote) 8344 if err == nil { 8345 return result, nil 8346 } 8347 if !isRepeatableError(err) { 8348 return result, err 8349 } 8350 tries++ 8351 if tries >= 3 { 8352 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8353 return result, err 8354 } 8355 } 8356 8357 } 8358 8359 func (s *RetryLayerStatusStore) Get(userID string) (*model.Status, error) { 8360 8361 tries := 0 8362 for { 8363 result, err := s.StatusStore.Get(userID) 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) GetByIds(userIds []string) ([]*model.Status, error) { 8380 8381 tries := 0 8382 for { 8383 result, err := s.StatusStore.GetByIds(userIds) 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) GetTotalActiveUsersCount() (int64, error) { 8400 8401 tries := 0 8402 for { 8403 result, err := s.StatusStore.GetTotalActiveUsersCount() 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) ResetAll() error { 8420 8421 tries := 0 8422 for { 8423 err := s.StatusStore.ResetAll() 8424 if err == nil { 8425 return nil 8426 } 8427 if !isRepeatableError(err) { 8428 return err 8429 } 8430 tries++ 8431 if tries >= 3 { 8432 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8433 return err 8434 } 8435 } 8436 8437 } 8438 8439 func (s *RetryLayerStatusStore) SaveOrUpdate(status *model.Status) error { 8440 8441 tries := 0 8442 for { 8443 err := s.StatusStore.SaveOrUpdate(status) 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) UpdateExpiredDNDStatuses() ([]*model.Status, error) { 8460 8461 tries := 0 8462 for { 8463 result, err := s.StatusStore.UpdateExpiredDNDStatuses() 8464 if err == nil { 8465 return result, nil 8466 } 8467 if !isRepeatableError(err) { 8468 return result, err 8469 } 8470 tries++ 8471 if tries >= 3 { 8472 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8473 return result, err 8474 } 8475 } 8476 8477 } 8478 8479 func (s *RetryLayerStatusStore) UpdateLastActivityAt(userID string, lastActivityAt int64) error { 8480 8481 tries := 0 8482 for { 8483 err := s.StatusStore.UpdateLastActivityAt(userID, lastActivityAt) 8484 if err == nil { 8485 return nil 8486 } 8487 if !isRepeatableError(err) { 8488 return err 8489 } 8490 tries++ 8491 if tries >= 3 { 8492 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8493 return err 8494 } 8495 } 8496 8497 } 8498 8499 func (s *RetryLayerSystemStore) Get() (model.StringMap, error) { 8500 8501 tries := 0 8502 for { 8503 result, err := s.SystemStore.Get() 8504 if err == nil { 8505 return result, nil 8506 } 8507 if !isRepeatableError(err) { 8508 return result, err 8509 } 8510 tries++ 8511 if tries >= 3 { 8512 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8513 return result, err 8514 } 8515 } 8516 8517 } 8518 8519 func (s *RetryLayerSystemStore) GetByName(name string) (*model.System, error) { 8520 8521 tries := 0 8522 for { 8523 result, err := s.SystemStore.GetByName(name) 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) InsertIfExists(system *model.System) (*model.System, error) { 8540 8541 tries := 0 8542 for { 8543 result, err := s.SystemStore.InsertIfExists(system) 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) PermanentDeleteByName(name string) (*model.System, error) { 8560 8561 tries := 0 8562 for { 8563 result, err := s.SystemStore.PermanentDeleteByName(name) 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) Save(system *model.System) error { 8580 8581 tries := 0 8582 for { 8583 err := s.SystemStore.Save(system) 8584 if err == nil { 8585 return nil 8586 } 8587 if !isRepeatableError(err) { 8588 return err 8589 } 8590 tries++ 8591 if tries >= 3 { 8592 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8593 return err 8594 } 8595 } 8596 8597 } 8598 8599 func (s *RetryLayerSystemStore) SaveOrUpdate(system *model.System) error { 8600 8601 tries := 0 8602 for { 8603 err := s.SystemStore.SaveOrUpdate(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) SaveOrUpdateWithWarnMetricHandling(system *model.System) error { 8620 8621 tries := 0 8622 for { 8623 err := s.SystemStore.SaveOrUpdateWithWarnMetricHandling(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) Update(system *model.System) error { 8640 8641 tries := 0 8642 for { 8643 err := s.SystemStore.Update(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 *RetryLayerTeamStore) AnalyticsGetTeamCountForScheme(schemeID string) (int64, error) { 8660 8661 tries := 0 8662 for { 8663 result, err := s.TeamStore.AnalyticsGetTeamCountForScheme(schemeID) 8664 if err == nil { 8665 return result, nil 8666 } 8667 if !isRepeatableError(err) { 8668 return result, err 8669 } 8670 tries++ 8671 if tries >= 3 { 8672 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8673 return result, err 8674 } 8675 } 8676 8677 } 8678 8679 func (s *RetryLayerTeamStore) AnalyticsTeamCount(opts *model.TeamSearch) (int64, error) { 8680 8681 tries := 0 8682 for { 8683 result, err := s.TeamStore.AnalyticsTeamCount(opts) 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) ClearAllCustomRoleAssignments() error { 8700 8701 tries := 0 8702 for { 8703 err := s.TeamStore.ClearAllCustomRoleAssignments() 8704 if err == nil { 8705 return nil 8706 } 8707 if !isRepeatableError(err) { 8708 return err 8709 } 8710 tries++ 8711 if tries >= 3 { 8712 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8713 return err 8714 } 8715 } 8716 8717 } 8718 8719 func (s *RetryLayerTeamStore) ClearCaches() { 8720 8721 s.TeamStore.ClearCaches() 8722 8723 } 8724 8725 func (s *RetryLayerTeamStore) Get(id string) (*model.Team, error) { 8726 8727 tries := 0 8728 for { 8729 result, err := s.TeamStore.Get(id) 8730 if err == nil { 8731 return result, nil 8732 } 8733 if !isRepeatableError(err) { 8734 return result, err 8735 } 8736 tries++ 8737 if tries >= 3 { 8738 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 8739 return result, err 8740 } 8741 } 8742 8743 } 8744 8745 func (s *RetryLayerTeamStore) GetActiveMemberCount(teamID string, restrictions *model.ViewUsersRestrictions) (int64, error) { 8746 8747 tries := 0 8748 for { 8749 result, err := s.TeamStore.GetActiveMemberCount(teamID, restrictions) 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) GetAll() ([]*model.Team, error) { 8766 8767 tries := 0 8768 for { 8769 result, err := s.TeamStore.GetAll() 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) GetAllForExportAfter(limit int, afterID string) ([]*model.TeamForExport, error) { 8786 8787 tries := 0 8788 for { 8789 result, err := s.TeamStore.GetAllForExportAfter(limit, afterID) 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) GetAllPage(offset int, limit int, opts *model.TeamSearch) ([]*model.Team, error) { 8806 8807 tries := 0 8808 for { 8809 result, err := s.TeamStore.GetAllPage(offset, limit, opts) 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) GetAllPrivateTeamListing() ([]*model.Team, error) { 8826 8827 tries := 0 8828 for { 8829 result, err := s.TeamStore.GetAllPrivateTeamListing() 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) GetAllTeamListing() ([]*model.Team, error) { 8846 8847 tries := 0 8848 for { 8849 result, err := s.TeamStore.GetAllTeamListing() 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) GetByInviteId(inviteID string) (*model.Team, error) { 8866 8867 tries := 0 8868 for { 8869 result, err := s.TeamStore.GetByInviteId(inviteID) 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) GetByName(name string) (*model.Team, error) { 8886 8887 tries := 0 8888 for { 8889 result, err := s.TeamStore.GetByName(name) 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) GetByNames(name []string) ([]*model.Team, error) { 8906 8907 tries := 0 8908 for { 8909 result, err := s.TeamStore.GetByNames(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) GetChannelUnreadsForAllTeams(excludeTeamID string, userID string) ([]*model.ChannelUnread, error) { 8926 8927 tries := 0 8928 for { 8929 result, err := s.TeamStore.GetChannelUnreadsForAllTeams(excludeTeamID, userID) 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) GetChannelUnreadsForTeam(teamID string, userID string) ([]*model.ChannelUnread, error) { 8946 8947 tries := 0 8948 for { 8949 result, err := s.TeamStore.GetChannelUnreadsForTeam(teamID, 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) GetCommonTeamIDsForTwoUsers(userID string, otherUserID string) ([]string, error) { 8966 8967 tries := 0 8968 for { 8969 result, err := s.TeamStore.GetCommonTeamIDsForTwoUsers(userID, otherUserID) 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) GetMember(ctx context.Context, teamID string, userID string) (*model.TeamMember, error) { 8986 8987 tries := 0 8988 for { 8989 result, err := s.TeamStore.GetMember(ctx, teamID, userID) 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) GetMembers(teamID string, offset int, limit int, teamMembersGetOptions *model.TeamMembersGetOptions) ([]*model.TeamMember, error) { 9006 9007 tries := 0 9008 for { 9009 result, err := s.TeamStore.GetMembers(teamID, offset, limit, teamMembersGetOptions) 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) GetMembersByIds(teamID string, userIds []string, restrictions *model.ViewUsersRestrictions) ([]*model.TeamMember, error) { 9026 9027 tries := 0 9028 for { 9029 result, err := s.TeamStore.GetMembersByIds(teamID, userIds, restrictions) 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) GetTeamMembersForExport(userID string) ([]*model.TeamMemberForExport, error) { 9046 9047 tries := 0 9048 for { 9049 result, err := s.TeamStore.GetTeamMembersForExport(userID) 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) GetTeamsByScheme(schemeID string, offset int, limit int) ([]*model.Team, error) { 9066 9067 tries := 0 9068 for { 9069 result, err := s.TeamStore.GetTeamsByScheme(schemeID, offset, limit) 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) GetTeamsByUserId(userID string) ([]*model.Team, error) { 9086 9087 tries := 0 9088 for { 9089 result, err := s.TeamStore.GetTeamsByUserId(userID) 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) GetTeamsForUser(ctx context.Context, userID string) ([]*model.TeamMember, error) { 9106 9107 tries := 0 9108 for { 9109 result, err := s.TeamStore.GetTeamsForUser(ctx, 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) GetTeamsForUserWithPagination(userID string, page int, perPage int) ([]*model.TeamMember, error) { 9126 9127 tries := 0 9128 for { 9129 result, err := s.TeamStore.GetTeamsForUserWithPagination(userID, page, perPage) 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) GetTotalMemberCount(teamID string, restrictions *model.ViewUsersRestrictions) (int64, error) { 9146 9147 tries := 0 9148 for { 9149 result, err := s.TeamStore.GetTotalMemberCount(teamID, restrictions) 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) GetUserTeamIds(userID string, allowFromCache bool) ([]string, error) { 9166 9167 tries := 0 9168 for { 9169 result, err := s.TeamStore.GetUserTeamIds(userID, allowFromCache) 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) GroupSyncedTeamCount() (int64, error) { 9186 9187 tries := 0 9188 for { 9189 result, err := s.TeamStore.GroupSyncedTeamCount() 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) InvalidateAllTeamIdsForUser(userID string) { 9206 9207 s.TeamStore.InvalidateAllTeamIdsForUser(userID) 9208 9209 } 9210 9211 func (s *RetryLayerTeamStore) MigrateTeamMembers(fromTeamID string, fromUserID string) (map[string]string, error) { 9212 9213 tries := 0 9214 for { 9215 result, err := s.TeamStore.MigrateTeamMembers(fromTeamID, fromUserID) 9216 if err == nil { 9217 return result, nil 9218 } 9219 if !isRepeatableError(err) { 9220 return result, err 9221 } 9222 tries++ 9223 if tries >= 3 { 9224 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9225 return result, err 9226 } 9227 } 9228 9229 } 9230 9231 func (s *RetryLayerTeamStore) PermanentDelete(teamID string) error { 9232 9233 tries := 0 9234 for { 9235 err := s.TeamStore.PermanentDelete(teamID) 9236 if err == nil { 9237 return nil 9238 } 9239 if !isRepeatableError(err) { 9240 return err 9241 } 9242 tries++ 9243 if tries >= 3 { 9244 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9245 return err 9246 } 9247 } 9248 9249 } 9250 9251 func (s *RetryLayerTeamStore) RemoveAllMembersByTeam(teamID string) error { 9252 9253 tries := 0 9254 for { 9255 err := s.TeamStore.RemoveAllMembersByTeam(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) RemoveAllMembersByUser(userID string) error { 9272 9273 tries := 0 9274 for { 9275 err := s.TeamStore.RemoveAllMembersByUser(userID) 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) RemoveMember(teamID string, userID string) error { 9292 9293 tries := 0 9294 for { 9295 err := s.TeamStore.RemoveMember(teamID, 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) RemoveMembers(teamID string, userIds []string) error { 9312 9313 tries := 0 9314 for { 9315 err := s.TeamStore.RemoveMembers(teamID, userIds) 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) ResetAllTeamSchemes() error { 9332 9333 tries := 0 9334 for { 9335 err := s.TeamStore.ResetAllTeamSchemes() 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) Save(team *model.Team) (*model.Team, error) { 9352 9353 tries := 0 9354 for { 9355 result, err := s.TeamStore.Save(team) 9356 if err == nil { 9357 return result, nil 9358 } 9359 if !isRepeatableError(err) { 9360 return result, err 9361 } 9362 tries++ 9363 if tries >= 3 { 9364 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9365 return result, err 9366 } 9367 } 9368 9369 } 9370 9371 func (s *RetryLayerTeamStore) SaveMember(member *model.TeamMember, maxUsersPerTeam int) (*model.TeamMember, error) { 9372 9373 tries := 0 9374 for { 9375 result, err := s.TeamStore.SaveMember(member, maxUsersPerTeam) 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) SaveMultipleMembers(members []*model.TeamMember, maxUsersPerTeam int) ([]*model.TeamMember, error) { 9392 9393 tries := 0 9394 for { 9395 result, err := s.TeamStore.SaveMultipleMembers(members, 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) SearchAll(opts *model.TeamSearch) ([]*model.Team, error) { 9412 9413 tries := 0 9414 for { 9415 result, err := s.TeamStore.SearchAll(opts) 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) SearchAllPaged(opts *model.TeamSearch) ([]*model.Team, int64, error) { 9432 9433 tries := 0 9434 for { 9435 result, resultVar1, err := s.TeamStore.SearchAllPaged(opts) 9436 if err == nil { 9437 return result, resultVar1, nil 9438 } 9439 if !isRepeatableError(err) { 9440 return result, resultVar1, err 9441 } 9442 tries++ 9443 if tries >= 3 { 9444 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9445 return result, resultVar1, err 9446 } 9447 } 9448 9449 } 9450 9451 func (s *RetryLayerTeamStore) SearchOpen(opts *model.TeamSearch) ([]*model.Team, error) { 9452 9453 tries := 0 9454 for { 9455 result, err := s.TeamStore.SearchOpen(opts) 9456 if err == nil { 9457 return result, nil 9458 } 9459 if !isRepeatableError(err) { 9460 return result, err 9461 } 9462 tries++ 9463 if tries >= 3 { 9464 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9465 return result, err 9466 } 9467 } 9468 9469 } 9470 9471 func (s *RetryLayerTeamStore) SearchPrivate(opts *model.TeamSearch) ([]*model.Team, error) { 9472 9473 tries := 0 9474 for { 9475 result, err := s.TeamStore.SearchPrivate(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) Update(team *model.Team) (*model.Team, error) { 9492 9493 tries := 0 9494 for { 9495 result, err := s.TeamStore.Update(team) 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) UpdateLastTeamIconUpdate(teamID string, curTime int64) error { 9512 9513 tries := 0 9514 for { 9515 err := s.TeamStore.UpdateLastTeamIconUpdate(teamID, curTime) 9516 if err == nil { 9517 return nil 9518 } 9519 if !isRepeatableError(err) { 9520 return err 9521 } 9522 tries++ 9523 if tries >= 3 { 9524 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9525 return err 9526 } 9527 } 9528 9529 } 9530 9531 func (s *RetryLayerTeamStore) UpdateMember(member *model.TeamMember) (*model.TeamMember, error) { 9532 9533 tries := 0 9534 for { 9535 result, err := s.TeamStore.UpdateMember(member) 9536 if err == nil { 9537 return result, nil 9538 } 9539 if !isRepeatableError(err) { 9540 return result, err 9541 } 9542 tries++ 9543 if tries >= 3 { 9544 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9545 return result, err 9546 } 9547 } 9548 9549 } 9550 9551 func (s *RetryLayerTeamStore) UpdateMembersRole(teamID string, userIDs []string) error { 9552 9553 tries := 0 9554 for { 9555 err := s.TeamStore.UpdateMembersRole(teamID, userIDs) 9556 if err == nil { 9557 return nil 9558 } 9559 if !isRepeatableError(err) { 9560 return err 9561 } 9562 tries++ 9563 if tries >= 3 { 9564 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9565 return err 9566 } 9567 } 9568 9569 } 9570 9571 func (s *RetryLayerTeamStore) UpdateMultipleMembers(members []*model.TeamMember) ([]*model.TeamMember, error) { 9572 9573 tries := 0 9574 for { 9575 result, err := s.TeamStore.UpdateMultipleMembers(members) 9576 if err == nil { 9577 return result, nil 9578 } 9579 if !isRepeatableError(err) { 9580 return result, err 9581 } 9582 tries++ 9583 if tries >= 3 { 9584 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9585 return result, err 9586 } 9587 } 9588 9589 } 9590 9591 func (s *RetryLayerTeamStore) UserBelongsToTeams(userID string, teamIds []string) (bool, error) { 9592 9593 tries := 0 9594 for { 9595 result, err := s.TeamStore.UserBelongsToTeams(userID, teamIds) 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 *RetryLayerTermsOfServiceStore) Get(id string, allowFromCache bool) (*model.TermsOfService, error) { 9612 9613 tries := 0 9614 for { 9615 result, err := s.TermsOfServiceStore.Get(id, allowFromCache) 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) GetLatest(allowFromCache bool) (*model.TermsOfService, error) { 9632 9633 tries := 0 9634 for { 9635 result, err := s.TermsOfServiceStore.GetLatest(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) Save(termsOfService *model.TermsOfService) (*model.TermsOfService, error) { 9652 9653 tries := 0 9654 for { 9655 result, err := s.TermsOfServiceStore.Save(termsOfService) 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 *RetryLayerThreadStore) CollectThreadsWithNewerReplies(userId string, channelIds []string, timestamp int64) ([]string, error) { 9672 9673 tries := 0 9674 for { 9675 result, err := s.ThreadStore.CollectThreadsWithNewerReplies(userId, channelIds, timestamp) 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) Delete(postID string) error { 9692 9693 tries := 0 9694 for { 9695 err := s.ThreadStore.Delete(postID) 9696 if err == nil { 9697 return nil 9698 } 9699 if !isRepeatableError(err) { 9700 return err 9701 } 9702 tries++ 9703 if tries >= 3 { 9704 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9705 return err 9706 } 9707 } 9708 9709 } 9710 9711 func (s *RetryLayerThreadStore) DeleteMembershipForUser(userId string, postID string) error { 9712 9713 tries := 0 9714 for { 9715 err := s.ThreadStore.DeleteMembershipForUser(userId, 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) DeleteOrphanedRows(limit int) (int64, error) { 9732 9733 tries := 0 9734 for { 9735 result, err := s.ThreadStore.DeleteOrphanedRows(limit) 9736 if err == nil { 9737 return result, nil 9738 } 9739 if !isRepeatableError(err) { 9740 return result, err 9741 } 9742 tries++ 9743 if tries >= 3 { 9744 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9745 return result, err 9746 } 9747 } 9748 9749 } 9750 9751 func (s *RetryLayerThreadStore) Get(id string) (*model.Thread, error) { 9752 9753 tries := 0 9754 for { 9755 result, err := s.ThreadStore.Get(id) 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) GetMembershipForUser(userId string, postID string) (*model.ThreadMembership, error) { 9772 9773 tries := 0 9774 for { 9775 result, err := s.ThreadStore.GetMembershipForUser(userId, postID) 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) GetMembershipsForUser(userId string, teamID string) ([]*model.ThreadMembership, error) { 9792 9793 tries := 0 9794 for { 9795 result, err := s.ThreadStore.GetMembershipsForUser(userId, teamID) 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) GetPosts(threadID string, since int64) ([]*model.Post, error) { 9812 9813 tries := 0 9814 for { 9815 result, err := s.ThreadStore.GetPosts(threadID, since) 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) GetThreadFollowers(threadID string) ([]string, error) { 9832 9833 tries := 0 9834 for { 9835 result, err := s.ThreadStore.GetThreadFollowers(threadID) 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) GetThreadForUser(teamID string, threadMembership *model.ThreadMembership, extended bool) (*model.ThreadResponse, error) { 9852 9853 tries := 0 9854 for { 9855 result, err := s.ThreadStore.GetThreadForUser(teamID, threadMembership, extended) 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) GetThreadsForUser(userId string, teamID string, opts model.GetUserThreadsOpts) (*model.Threads, error) { 9872 9873 tries := 0 9874 for { 9875 result, err := s.ThreadStore.GetThreadsForUser(userId, teamID, opts) 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) MaintainMembership(userID string, postID string, opts store.ThreadMembershipOpts) (*model.ThreadMembership, error) { 9892 9893 tries := 0 9894 for { 9895 result, err := s.ThreadStore.MaintainMembership(userID, postID, 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) MarkAllAsRead(userID string, teamID string) error { 9912 9913 tries := 0 9914 for { 9915 err := s.ThreadStore.MarkAllAsRead(userID, teamID) 9916 if err == nil { 9917 return nil 9918 } 9919 if !isRepeatableError(err) { 9920 return err 9921 } 9922 tries++ 9923 if tries >= 3 { 9924 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9925 return err 9926 } 9927 } 9928 9929 } 9930 9931 func (s *RetryLayerThreadStore) MarkAllAsReadInChannels(userID string, channelIDs []string) error { 9932 9933 tries := 0 9934 for { 9935 err := s.ThreadStore.MarkAllAsReadInChannels(userID, channelIDs) 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) MarkAsRead(userID string, threadID string, timestamp int64) error { 9952 9953 tries := 0 9954 for { 9955 err := s.ThreadStore.MarkAsRead(userID, threadID, timestamp) 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) PermanentDeleteBatchForRetentionPolicies(now int64, globalPolicyEndTime int64, limit int64, cursor model.RetentionPolicyCursor) (int64, model.RetentionPolicyCursor, error) { 9972 9973 tries := 0 9974 for { 9975 result, resultVar1, err := s.ThreadStore.PermanentDeleteBatchForRetentionPolicies(now, globalPolicyEndTime, limit, cursor) 9976 if err == nil { 9977 return result, resultVar1, nil 9978 } 9979 if !isRepeatableError(err) { 9980 return result, resultVar1, err 9981 } 9982 tries++ 9983 if tries >= 3 { 9984 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 9985 return result, resultVar1, err 9986 } 9987 } 9988 9989 } 9990 9991 func (s *RetryLayerThreadStore) PermanentDeleteBatchThreadMembershipsForRetentionPolicies(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.PermanentDeleteBatchThreadMembershipsForRetentionPolicies(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) Save(thread *model.Thread) (*model.Thread, error) { 10012 10013 tries := 0 10014 for { 10015 result, err := s.ThreadStore.Save(thread) 10016 if err == nil { 10017 return result, nil 10018 } 10019 if !isRepeatableError(err) { 10020 return result, err 10021 } 10022 tries++ 10023 if tries >= 3 { 10024 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10025 return result, err 10026 } 10027 } 10028 10029 } 10030 10031 func (s *RetryLayerThreadStore) SaveMembership(membership *model.ThreadMembership) (*model.ThreadMembership, error) { 10032 10033 tries := 0 10034 for { 10035 result, err := s.ThreadStore.SaveMembership(membership) 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) SaveMultiple(thread []*model.Thread) ([]*model.Thread, int, error) { 10052 10053 tries := 0 10054 for { 10055 result, resultVar1, err := s.ThreadStore.SaveMultiple(thread) 10056 if err == nil { 10057 return result, resultVar1, nil 10058 } 10059 if !isRepeatableError(err) { 10060 return result, resultVar1, err 10061 } 10062 tries++ 10063 if tries >= 3 { 10064 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10065 return result, resultVar1, err 10066 } 10067 } 10068 10069 } 10070 10071 func (s *RetryLayerThreadStore) Update(thread *model.Thread) (*model.Thread, error) { 10072 10073 tries := 0 10074 for { 10075 result, err := s.ThreadStore.Update(thread) 10076 if err == nil { 10077 return result, nil 10078 } 10079 if !isRepeatableError(err) { 10080 return result, err 10081 } 10082 tries++ 10083 if tries >= 3 { 10084 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10085 return result, err 10086 } 10087 } 10088 10089 } 10090 10091 func (s *RetryLayerThreadStore) UpdateMembership(membership *model.ThreadMembership) (*model.ThreadMembership, error) { 10092 10093 tries := 0 10094 for { 10095 result, err := s.ThreadStore.UpdateMembership(membership) 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) UpdateUnreadsByChannel(userId string, changedThreads []string, timestamp int64, updateViewedTimestamp bool) error { 10112 10113 tries := 0 10114 for { 10115 err := s.ThreadStore.UpdateUnreadsByChannel(userId, changedThreads, timestamp, updateViewedTimestamp) 10116 if err == nil { 10117 return nil 10118 } 10119 if !isRepeatableError(err) { 10120 return err 10121 } 10122 tries++ 10123 if tries >= 3 { 10124 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10125 return err 10126 } 10127 } 10128 10129 } 10130 10131 func (s *RetryLayerTokenStore) Cleanup() { 10132 10133 s.TokenStore.Cleanup() 10134 10135 } 10136 10137 func (s *RetryLayerTokenStore) Delete(token string) error { 10138 10139 tries := 0 10140 for { 10141 err := s.TokenStore.Delete(token) 10142 if err == nil { 10143 return nil 10144 } 10145 if !isRepeatableError(err) { 10146 return err 10147 } 10148 tries++ 10149 if tries >= 3 { 10150 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10151 return err 10152 } 10153 } 10154 10155 } 10156 10157 func (s *RetryLayerTokenStore) GetAllTokensByType(tokenType string) ([]*model.Token, error) { 10158 10159 tries := 0 10160 for { 10161 result, err := s.TokenStore.GetAllTokensByType(tokenType) 10162 if err == nil { 10163 return result, nil 10164 } 10165 if !isRepeatableError(err) { 10166 return result, err 10167 } 10168 tries++ 10169 if tries >= 3 { 10170 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10171 return result, err 10172 } 10173 } 10174 10175 } 10176 10177 func (s *RetryLayerTokenStore) GetByToken(token string) (*model.Token, error) { 10178 10179 tries := 0 10180 for { 10181 result, err := s.TokenStore.GetByToken(token) 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) RemoveAllTokensByType(tokenType string) error { 10198 10199 tries := 0 10200 for { 10201 err := s.TokenStore.RemoveAllTokensByType(tokenType) 10202 if err == nil { 10203 return nil 10204 } 10205 if !isRepeatableError(err) { 10206 return err 10207 } 10208 tries++ 10209 if tries >= 3 { 10210 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10211 return err 10212 } 10213 } 10214 10215 } 10216 10217 func (s *RetryLayerTokenStore) Save(recovery *model.Token) error { 10218 10219 tries := 0 10220 for { 10221 err := s.TokenStore.Save(recovery) 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 *RetryLayerUploadSessionStore) Delete(id string) error { 10238 10239 tries := 0 10240 for { 10241 err := s.UploadSessionStore.Delete(id) 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 *RetryLayerUploadSessionStore) Get(id string) (*model.UploadSession, error) { 10258 10259 tries := 0 10260 for { 10261 result, err := s.UploadSessionStore.Get(id) 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 *RetryLayerUploadSessionStore) GetForUser(userID string) ([]*model.UploadSession, error) { 10278 10279 tries := 0 10280 for { 10281 result, err := s.UploadSessionStore.GetForUser(userID) 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 *RetryLayerUploadSessionStore) Save(session *model.UploadSession) (*model.UploadSession, error) { 10298 10299 tries := 0 10300 for { 10301 result, err := s.UploadSessionStore.Save(session) 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 *RetryLayerUploadSessionStore) Update(session *model.UploadSession) error { 10318 10319 tries := 0 10320 for { 10321 err := s.UploadSessionStore.Update(session) 10322 if err == nil { 10323 return nil 10324 } 10325 if !isRepeatableError(err) { 10326 return err 10327 } 10328 tries++ 10329 if tries >= 3 { 10330 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10331 return err 10332 } 10333 } 10334 10335 } 10336 10337 func (s *RetryLayerUserStore) AnalyticsActiveCount(time int64, options model.UserCountOptions) (int64, error) { 10338 10339 tries := 0 10340 for { 10341 result, err := s.UserStore.AnalyticsActiveCount(time, options) 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 *RetryLayerUserStore) AnalyticsActiveCountForPeriod(startTime int64, endTime int64, options model.UserCountOptions) (int64, error) { 10358 10359 tries := 0 10360 for { 10361 result, err := s.UserStore.AnalyticsActiveCountForPeriod(startTime, endTime, options) 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 *RetryLayerUserStore) AnalyticsGetExternalUsers(hostDomain string) (bool, error) { 10378 10379 tries := 0 10380 for { 10381 result, err := s.UserStore.AnalyticsGetExternalUsers(hostDomain) 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 *RetryLayerUserStore) AnalyticsGetGuestCount() (int64, error) { 10398 10399 tries := 0 10400 for { 10401 result, err := s.UserStore.AnalyticsGetGuestCount() 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 *RetryLayerUserStore) AnalyticsGetInactiveUsersCount() (int64, error) { 10418 10419 tries := 0 10420 for { 10421 result, err := s.UserStore.AnalyticsGetInactiveUsersCount() 10422 if err == nil { 10423 return result, nil 10424 } 10425 if !isRepeatableError(err) { 10426 return result, err 10427 } 10428 tries++ 10429 if tries >= 3 { 10430 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10431 return result, err 10432 } 10433 } 10434 10435 } 10436 10437 func (s *RetryLayerUserStore) AnalyticsGetSystemAdminCount() (int64, error) { 10438 10439 tries := 0 10440 for { 10441 result, err := s.UserStore.AnalyticsGetSystemAdminCount() 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 *RetryLayerUserStore) AutocompleteUsersInChannel(teamID string, channelID string, term string, options *model.UserSearchOptions) (*model.UserAutocompleteInChannel, error) { 10458 10459 tries := 0 10460 for { 10461 result, err := s.UserStore.AutocompleteUsersInChannel(teamID, channelID, term, options) 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 *RetryLayerUserStore) ClearAllCustomRoleAssignments() error { 10478 10479 tries := 0 10480 for { 10481 err := s.UserStore.ClearAllCustomRoleAssignments() 10482 if err == nil { 10483 return nil 10484 } 10485 if !isRepeatableError(err) { 10486 return err 10487 } 10488 tries++ 10489 if tries >= 3 { 10490 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10491 return err 10492 } 10493 } 10494 10495 } 10496 10497 func (s *RetryLayerUserStore) ClearCaches() { 10498 10499 s.UserStore.ClearCaches() 10500 10501 } 10502 10503 func (s *RetryLayerUserStore) Count(options model.UserCountOptions) (int64, error) { 10504 10505 tries := 0 10506 for { 10507 result, err := s.UserStore.Count(options) 10508 if err == nil { 10509 return result, nil 10510 } 10511 if !isRepeatableError(err) { 10512 return result, err 10513 } 10514 tries++ 10515 if tries >= 3 { 10516 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10517 return result, err 10518 } 10519 } 10520 10521 } 10522 10523 func (s *RetryLayerUserStore) DeactivateGuests() ([]string, error) { 10524 10525 tries := 0 10526 for { 10527 result, err := s.UserStore.DeactivateGuests() 10528 if err == nil { 10529 return result, nil 10530 } 10531 if !isRepeatableError(err) { 10532 return result, err 10533 } 10534 tries++ 10535 if tries >= 3 { 10536 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10537 return result, err 10538 } 10539 } 10540 10541 } 10542 10543 func (s *RetryLayerUserStore) DemoteUserToGuest(userID string) (*model.User, error) { 10544 10545 tries := 0 10546 for { 10547 result, err := s.UserStore.DemoteUserToGuest(userID) 10548 if err == nil { 10549 return result, nil 10550 } 10551 if !isRepeatableError(err) { 10552 return result, err 10553 } 10554 tries++ 10555 if tries >= 3 { 10556 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10557 return result, err 10558 } 10559 } 10560 10561 } 10562 10563 func (s *RetryLayerUserStore) Get(ctx context.Context, id string) (*model.User, error) { 10564 10565 tries := 0 10566 for { 10567 result, err := s.UserStore.Get(ctx, id) 10568 if err == nil { 10569 return result, nil 10570 } 10571 if !isRepeatableError(err) { 10572 return result, err 10573 } 10574 tries++ 10575 if tries >= 3 { 10576 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10577 return result, err 10578 } 10579 } 10580 10581 } 10582 10583 func (s *RetryLayerUserStore) GetAll() ([]*model.User, error) { 10584 10585 tries := 0 10586 for { 10587 result, err := s.UserStore.GetAll() 10588 if err == nil { 10589 return result, nil 10590 } 10591 if !isRepeatableError(err) { 10592 return result, err 10593 } 10594 tries++ 10595 if tries >= 3 { 10596 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10597 return result, err 10598 } 10599 } 10600 10601 } 10602 10603 func (s *RetryLayerUserStore) GetAllAfter(limit int, afterID string) ([]*model.User, error) { 10604 10605 tries := 0 10606 for { 10607 result, err := s.UserStore.GetAllAfter(limit, afterID) 10608 if err == nil { 10609 return result, nil 10610 } 10611 if !isRepeatableError(err) { 10612 return result, err 10613 } 10614 tries++ 10615 if tries >= 3 { 10616 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10617 return result, err 10618 } 10619 } 10620 10621 } 10622 10623 func (s *RetryLayerUserStore) GetAllNotInAuthService(authServices []string) ([]*model.User, error) { 10624 10625 tries := 0 10626 for { 10627 result, err := s.UserStore.GetAllNotInAuthService(authServices) 10628 if err == nil { 10629 return result, nil 10630 } 10631 if !isRepeatableError(err) { 10632 return result, err 10633 } 10634 tries++ 10635 if tries >= 3 { 10636 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10637 return result, err 10638 } 10639 } 10640 10641 } 10642 10643 func (s *RetryLayerUserStore) GetAllProfiles(options *model.UserGetOptions) ([]*model.User, error) { 10644 10645 tries := 0 10646 for { 10647 result, err := s.UserStore.GetAllProfiles(options) 10648 if err == nil { 10649 return result, nil 10650 } 10651 if !isRepeatableError(err) { 10652 return result, err 10653 } 10654 tries++ 10655 if tries >= 3 { 10656 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10657 return result, err 10658 } 10659 } 10660 10661 } 10662 10663 func (s *RetryLayerUserStore) GetAllProfilesInChannel(ctx context.Context, channelID string, allowFromCache bool) (map[string]*model.User, error) { 10664 10665 tries := 0 10666 for { 10667 result, err := s.UserStore.GetAllProfilesInChannel(ctx, channelID, allowFromCache) 10668 if err == nil { 10669 return result, nil 10670 } 10671 if !isRepeatableError(err) { 10672 return result, err 10673 } 10674 tries++ 10675 if tries >= 3 { 10676 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10677 return result, err 10678 } 10679 } 10680 10681 } 10682 10683 func (s *RetryLayerUserStore) GetAllUsingAuthService(authService string) ([]*model.User, error) { 10684 10685 tries := 0 10686 for { 10687 result, err := s.UserStore.GetAllUsingAuthService(authService) 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) GetAnyUnreadPostCountForChannel(userID string, channelID string) (int64, error) { 10704 10705 tries := 0 10706 for { 10707 result, err := s.UserStore.GetAnyUnreadPostCountForChannel(userID, channelID) 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) GetByAuth(authData *string, authService string) (*model.User, error) { 10724 10725 tries := 0 10726 for { 10727 result, err := s.UserStore.GetByAuth(authData, authService) 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) GetByEmail(email string) (*model.User, error) { 10744 10745 tries := 0 10746 for { 10747 result, err := s.UserStore.GetByEmail(email) 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) GetByUsername(username string) (*model.User, error) { 10764 10765 tries := 0 10766 for { 10767 result, err := s.UserStore.GetByUsername(username) 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) GetChannelGroupUsers(channelID string) ([]*model.User, error) { 10784 10785 tries := 0 10786 for { 10787 result, err := s.UserStore.GetChannelGroupUsers(channelID) 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) GetEtagForAllProfiles() string { 10804 10805 return s.UserStore.GetEtagForAllProfiles() 10806 10807 } 10808 10809 func (s *RetryLayerUserStore) GetEtagForProfiles(teamID string) string { 10810 10811 return s.UserStore.GetEtagForProfiles(teamID) 10812 10813 } 10814 10815 func (s *RetryLayerUserStore) GetEtagForProfilesNotInTeam(teamID string) string { 10816 10817 return s.UserStore.GetEtagForProfilesNotInTeam(teamID) 10818 10819 } 10820 10821 func (s *RetryLayerUserStore) GetForLogin(loginID string, allowSignInWithUsername bool, allowSignInWithEmail bool) (*model.User, error) { 10822 10823 tries := 0 10824 for { 10825 result, err := s.UserStore.GetForLogin(loginID, allowSignInWithUsername, allowSignInWithEmail) 10826 if err == nil { 10827 return result, nil 10828 } 10829 if !isRepeatableError(err) { 10830 return result, err 10831 } 10832 tries++ 10833 if tries >= 3 { 10834 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10835 return result, err 10836 } 10837 } 10838 10839 } 10840 10841 func (s *RetryLayerUserStore) GetKnownUsers(userID string) ([]string, error) { 10842 10843 tries := 0 10844 for { 10845 result, err := s.UserStore.GetKnownUsers(userID) 10846 if err == nil { 10847 return result, nil 10848 } 10849 if !isRepeatableError(err) { 10850 return result, err 10851 } 10852 tries++ 10853 if tries >= 3 { 10854 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10855 return result, err 10856 } 10857 } 10858 10859 } 10860 10861 func (s *RetryLayerUserStore) GetMany(ctx context.Context, ids []string) ([]*model.User, error) { 10862 10863 tries := 0 10864 for { 10865 result, err := s.UserStore.GetMany(ctx, ids) 10866 if err == nil { 10867 return result, nil 10868 } 10869 if !isRepeatableError(err) { 10870 return result, err 10871 } 10872 tries++ 10873 if tries >= 3 { 10874 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10875 return result, err 10876 } 10877 } 10878 10879 } 10880 10881 func (s *RetryLayerUserStore) GetNewUsersForTeam(teamID string, offset int, limit int, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, error) { 10882 10883 tries := 0 10884 for { 10885 result, err := s.UserStore.GetNewUsersForTeam(teamID, offset, limit, viewRestrictions) 10886 if err == nil { 10887 return result, nil 10888 } 10889 if !isRepeatableError(err) { 10890 return result, err 10891 } 10892 tries++ 10893 if tries >= 3 { 10894 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10895 return result, err 10896 } 10897 } 10898 10899 } 10900 10901 func (s *RetryLayerUserStore) GetProfileByGroupChannelIdsForUser(userID string, channelIds []string) (map[string][]*model.User, error) { 10902 10903 tries := 0 10904 for { 10905 result, err := s.UserStore.GetProfileByGroupChannelIdsForUser(userID, channelIds) 10906 if err == nil { 10907 return result, nil 10908 } 10909 if !isRepeatableError(err) { 10910 return result, err 10911 } 10912 tries++ 10913 if tries >= 3 { 10914 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10915 return result, err 10916 } 10917 } 10918 10919 } 10920 10921 func (s *RetryLayerUserStore) GetProfileByIds(ctx context.Context, userIds []string, options *store.UserGetByIdsOpts, allowFromCache bool) ([]*model.User, error) { 10922 10923 tries := 0 10924 for { 10925 result, err := s.UserStore.GetProfileByIds(ctx, userIds, options, allowFromCache) 10926 if err == nil { 10927 return result, nil 10928 } 10929 if !isRepeatableError(err) { 10930 return result, err 10931 } 10932 tries++ 10933 if tries >= 3 { 10934 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10935 return result, err 10936 } 10937 } 10938 10939 } 10940 10941 func (s *RetryLayerUserStore) GetProfiles(options *model.UserGetOptions) ([]*model.User, error) { 10942 10943 tries := 0 10944 for { 10945 result, err := s.UserStore.GetProfiles(options) 10946 if err == nil { 10947 return result, nil 10948 } 10949 if !isRepeatableError(err) { 10950 return result, err 10951 } 10952 tries++ 10953 if tries >= 3 { 10954 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10955 return result, err 10956 } 10957 } 10958 10959 } 10960 10961 func (s *RetryLayerUserStore) GetProfilesByUsernames(usernames []string, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, error) { 10962 10963 tries := 0 10964 for { 10965 result, err := s.UserStore.GetProfilesByUsernames(usernames, viewRestrictions) 10966 if err == nil { 10967 return result, nil 10968 } 10969 if !isRepeatableError(err) { 10970 return result, err 10971 } 10972 tries++ 10973 if tries >= 3 { 10974 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10975 return result, err 10976 } 10977 } 10978 10979 } 10980 10981 func (s *RetryLayerUserStore) GetProfilesInChannel(options *model.UserGetOptions) ([]*model.User, error) { 10982 10983 tries := 0 10984 for { 10985 result, err := s.UserStore.GetProfilesInChannel(options) 10986 if err == nil { 10987 return result, nil 10988 } 10989 if !isRepeatableError(err) { 10990 return result, err 10991 } 10992 tries++ 10993 if tries >= 3 { 10994 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 10995 return result, err 10996 } 10997 } 10998 10999 } 11000 11001 func (s *RetryLayerUserStore) GetProfilesInChannelByStatus(options *model.UserGetOptions) ([]*model.User, error) { 11002 11003 tries := 0 11004 for { 11005 result, err := s.UserStore.GetProfilesInChannelByStatus(options) 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) GetProfilesNotInChannel(teamID string, channelId string, groupConstrained bool, offset int, limit int, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, error) { 11022 11023 tries := 0 11024 for { 11025 result, err := s.UserStore.GetProfilesNotInChannel(teamID, channelId, groupConstrained, offset, limit, viewRestrictions) 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) GetProfilesNotInTeam(teamID string, groupConstrained bool, offset int, limit int, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, error) { 11042 11043 tries := 0 11044 for { 11045 result, err := s.UserStore.GetProfilesNotInTeam(teamID, groupConstrained, offset, limit, viewRestrictions) 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) GetProfilesWithoutTeam(options *model.UserGetOptions) ([]*model.User, error) { 11062 11063 tries := 0 11064 for { 11065 result, err := s.UserStore.GetProfilesWithoutTeam(options) 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) GetRecentlyActiveUsersForTeam(teamID string, offset int, limit int, viewRestrictions *model.ViewUsersRestrictions) ([]*model.User, error) { 11082 11083 tries := 0 11084 for { 11085 result, err := s.UserStore.GetRecentlyActiveUsersForTeam(teamID, offset, limit, viewRestrictions) 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) GetSystemAdminProfiles() (map[string]*model.User, error) { 11102 11103 tries := 0 11104 for { 11105 result, err := s.UserStore.GetSystemAdminProfiles() 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) GetTeamGroupUsers(teamID string) ([]*model.User, error) { 11122 11123 tries := 0 11124 for { 11125 result, err := s.UserStore.GetTeamGroupUsers(teamID) 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) GetUnreadCount(userID string) (int64, error) { 11142 11143 tries := 0 11144 for { 11145 result, err := s.UserStore.GetUnreadCount(userID) 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) GetUnreadCountForChannel(userID string, channelID string) (int64, error) { 11162 11163 tries := 0 11164 for { 11165 result, err := s.UserStore.GetUnreadCountForChannel(userID, channelID) 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) GetUsersBatchForIndexing(startTime int64, endTime int64, limit int) ([]*model.UserForIndexing, error) { 11182 11183 tries := 0 11184 for { 11185 result, err := s.UserStore.GetUsersBatchForIndexing(startTime, endTime, limit) 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) InferSystemInstallDate() (int64, error) { 11202 11203 tries := 0 11204 for { 11205 result, err := s.UserStore.InferSystemInstallDate() 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) InvalidateProfileCacheForUser(userID string) { 11222 11223 s.UserStore.InvalidateProfileCacheForUser(userID) 11224 11225 } 11226 11227 func (s *RetryLayerUserStore) InvalidateProfilesInChannelCache(channelID string) { 11228 11229 s.UserStore.InvalidateProfilesInChannelCache(channelID) 11230 11231 } 11232 11233 func (s *RetryLayerUserStore) InvalidateProfilesInChannelCacheByUser(userID string) { 11234 11235 s.UserStore.InvalidateProfilesInChannelCacheByUser(userID) 11236 11237 } 11238 11239 func (s *RetryLayerUserStore) PermanentDelete(userID string) error { 11240 11241 tries := 0 11242 for { 11243 err := s.UserStore.PermanentDelete(userID) 11244 if err == nil { 11245 return nil 11246 } 11247 if !isRepeatableError(err) { 11248 return err 11249 } 11250 tries++ 11251 if tries >= 3 { 11252 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11253 return err 11254 } 11255 } 11256 11257 } 11258 11259 func (s *RetryLayerUserStore) PromoteGuestToUser(userID string) error { 11260 11261 tries := 0 11262 for { 11263 err := s.UserStore.PromoteGuestToUser(userID) 11264 if err == nil { 11265 return nil 11266 } 11267 if !isRepeatableError(err) { 11268 return err 11269 } 11270 tries++ 11271 if tries >= 3 { 11272 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11273 return err 11274 } 11275 } 11276 11277 } 11278 11279 func (s *RetryLayerUserStore) ResetAuthDataToEmailForUsers(service string, userIDs []string, includeDeleted bool, dryRun bool) (int, error) { 11280 11281 tries := 0 11282 for { 11283 result, err := s.UserStore.ResetAuthDataToEmailForUsers(service, userIDs, includeDeleted, dryRun) 11284 if err == nil { 11285 return result, nil 11286 } 11287 if !isRepeatableError(err) { 11288 return result, err 11289 } 11290 tries++ 11291 if tries >= 3 { 11292 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11293 return result, err 11294 } 11295 } 11296 11297 } 11298 11299 func (s *RetryLayerUserStore) ResetLastPictureUpdate(userID string) error { 11300 11301 tries := 0 11302 for { 11303 err := s.UserStore.ResetLastPictureUpdate(userID) 11304 if err == nil { 11305 return nil 11306 } 11307 if !isRepeatableError(err) { 11308 return err 11309 } 11310 tries++ 11311 if tries >= 3 { 11312 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11313 return err 11314 } 11315 } 11316 11317 } 11318 11319 func (s *RetryLayerUserStore) Save(user *model.User) (*model.User, error) { 11320 11321 tries := 0 11322 for { 11323 result, err := s.UserStore.Save(user) 11324 if err == nil { 11325 return result, nil 11326 } 11327 if !isRepeatableError(err) { 11328 return result, err 11329 } 11330 tries++ 11331 if tries >= 3 { 11332 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11333 return result, err 11334 } 11335 } 11336 11337 } 11338 11339 func (s *RetryLayerUserStore) Search(teamID string, term string, options *model.UserSearchOptions) ([]*model.User, error) { 11340 11341 tries := 0 11342 for { 11343 result, err := s.UserStore.Search(teamID, term, options) 11344 if err == nil { 11345 return result, nil 11346 } 11347 if !isRepeatableError(err) { 11348 return result, err 11349 } 11350 tries++ 11351 if tries >= 3 { 11352 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11353 return result, err 11354 } 11355 } 11356 11357 } 11358 11359 func (s *RetryLayerUserStore) SearchInChannel(channelID string, term string, options *model.UserSearchOptions) ([]*model.User, error) { 11360 11361 tries := 0 11362 for { 11363 result, err := s.UserStore.SearchInChannel(channelID, term, options) 11364 if err == nil { 11365 return result, nil 11366 } 11367 if !isRepeatableError(err) { 11368 return result, err 11369 } 11370 tries++ 11371 if tries >= 3 { 11372 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11373 return result, err 11374 } 11375 } 11376 11377 } 11378 11379 func (s *RetryLayerUserStore) SearchInGroup(groupID string, term string, options *model.UserSearchOptions) ([]*model.User, error) { 11380 11381 tries := 0 11382 for { 11383 result, err := s.UserStore.SearchInGroup(groupID, term, options) 11384 if err == nil { 11385 return result, nil 11386 } 11387 if !isRepeatableError(err) { 11388 return result, err 11389 } 11390 tries++ 11391 if tries >= 3 { 11392 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11393 return result, err 11394 } 11395 } 11396 11397 } 11398 11399 func (s *RetryLayerUserStore) SearchNotInChannel(teamID string, channelID string, term string, options *model.UserSearchOptions) ([]*model.User, error) { 11400 11401 tries := 0 11402 for { 11403 result, err := s.UserStore.SearchNotInChannel(teamID, channelID, term, options) 11404 if err == nil { 11405 return result, nil 11406 } 11407 if !isRepeatableError(err) { 11408 return result, err 11409 } 11410 tries++ 11411 if tries >= 3 { 11412 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11413 return result, err 11414 } 11415 } 11416 11417 } 11418 11419 func (s *RetryLayerUserStore) SearchNotInTeam(notInTeamID string, term string, options *model.UserSearchOptions) ([]*model.User, error) { 11420 11421 tries := 0 11422 for { 11423 result, err := s.UserStore.SearchNotInTeam(notInTeamID, term, options) 11424 if err == nil { 11425 return result, nil 11426 } 11427 if !isRepeatableError(err) { 11428 return result, err 11429 } 11430 tries++ 11431 if tries >= 3 { 11432 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11433 return result, err 11434 } 11435 } 11436 11437 } 11438 11439 func (s *RetryLayerUserStore) SearchWithoutTeam(term string, options *model.UserSearchOptions) ([]*model.User, error) { 11440 11441 tries := 0 11442 for { 11443 result, err := s.UserStore.SearchWithoutTeam(term, options) 11444 if err == nil { 11445 return result, nil 11446 } 11447 if !isRepeatableError(err) { 11448 return result, err 11449 } 11450 tries++ 11451 if tries >= 3 { 11452 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11453 return result, err 11454 } 11455 } 11456 11457 } 11458 11459 func (s *RetryLayerUserStore) Update(user *model.User, allowRoleUpdate bool) (*model.UserUpdate, error) { 11460 11461 tries := 0 11462 for { 11463 result, err := s.UserStore.Update(user, allowRoleUpdate) 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) UpdateAuthData(userID string, service string, authData *string, email string, resetMfa bool) (string, error) { 11480 11481 tries := 0 11482 for { 11483 result, err := s.UserStore.UpdateAuthData(userID, service, authData, email, resetMfa) 11484 if err == nil { 11485 return result, nil 11486 } 11487 if !isRepeatableError(err) { 11488 return result, err 11489 } 11490 tries++ 11491 if tries >= 3 { 11492 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11493 return result, err 11494 } 11495 } 11496 11497 } 11498 11499 func (s *RetryLayerUserStore) UpdateFailedPasswordAttempts(userID string, attempts int) error { 11500 11501 tries := 0 11502 for { 11503 err := s.UserStore.UpdateFailedPasswordAttempts(userID, attempts) 11504 if err == nil { 11505 return nil 11506 } 11507 if !isRepeatableError(err) { 11508 return err 11509 } 11510 tries++ 11511 if tries >= 3 { 11512 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11513 return err 11514 } 11515 } 11516 11517 } 11518 11519 func (s *RetryLayerUserStore) UpdateLastPictureUpdate(userID string) error { 11520 11521 tries := 0 11522 for { 11523 err := s.UserStore.UpdateLastPictureUpdate(userID) 11524 if err == nil { 11525 return nil 11526 } 11527 if !isRepeatableError(err) { 11528 return err 11529 } 11530 tries++ 11531 if tries >= 3 { 11532 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11533 return err 11534 } 11535 } 11536 11537 } 11538 11539 func (s *RetryLayerUserStore) UpdateMfaActive(userID string, active bool) error { 11540 11541 tries := 0 11542 for { 11543 err := s.UserStore.UpdateMfaActive(userID, active) 11544 if err == nil { 11545 return nil 11546 } 11547 if !isRepeatableError(err) { 11548 return err 11549 } 11550 tries++ 11551 if tries >= 3 { 11552 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11553 return err 11554 } 11555 } 11556 11557 } 11558 11559 func (s *RetryLayerUserStore) UpdateMfaSecret(userID string, secret string) error { 11560 11561 tries := 0 11562 for { 11563 err := s.UserStore.UpdateMfaSecret(userID, secret) 11564 if err == nil { 11565 return nil 11566 } 11567 if !isRepeatableError(err) { 11568 return err 11569 } 11570 tries++ 11571 if tries >= 3 { 11572 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11573 return err 11574 } 11575 } 11576 11577 } 11578 11579 func (s *RetryLayerUserStore) UpdatePassword(userID string, newPassword string) error { 11580 11581 tries := 0 11582 for { 11583 err := s.UserStore.UpdatePassword(userID, newPassword) 11584 if err == nil { 11585 return nil 11586 } 11587 if !isRepeatableError(err) { 11588 return err 11589 } 11590 tries++ 11591 if tries >= 3 { 11592 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11593 return err 11594 } 11595 } 11596 11597 } 11598 11599 func (s *RetryLayerUserStore) UpdateUpdateAt(userID string) (int64, error) { 11600 11601 tries := 0 11602 for { 11603 result, err := s.UserStore.UpdateUpdateAt(userID) 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) VerifyEmail(userID string, email string) (string, error) { 11620 11621 tries := 0 11622 for { 11623 result, err := s.UserStore.VerifyEmail(userID, email) 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 *RetryLayerUserAccessTokenStore) Delete(tokenID string) error { 11640 11641 tries := 0 11642 for { 11643 err := s.UserAccessTokenStore.Delete(tokenID) 11644 if err == nil { 11645 return nil 11646 } 11647 if !isRepeatableError(err) { 11648 return err 11649 } 11650 tries++ 11651 if tries >= 3 { 11652 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11653 return err 11654 } 11655 } 11656 11657 } 11658 11659 func (s *RetryLayerUserAccessTokenStore) DeleteAllForUser(userID string) error { 11660 11661 tries := 0 11662 for { 11663 err := s.UserAccessTokenStore.DeleteAllForUser(userID) 11664 if err == nil { 11665 return nil 11666 } 11667 if !isRepeatableError(err) { 11668 return err 11669 } 11670 tries++ 11671 if tries >= 3 { 11672 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11673 return err 11674 } 11675 } 11676 11677 } 11678 11679 func (s *RetryLayerUserAccessTokenStore) Get(tokenID string) (*model.UserAccessToken, error) { 11680 11681 tries := 0 11682 for { 11683 result, err := s.UserAccessTokenStore.Get(tokenID) 11684 if err == nil { 11685 return result, nil 11686 } 11687 if !isRepeatableError(err) { 11688 return result, err 11689 } 11690 tries++ 11691 if tries >= 3 { 11692 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11693 return result, err 11694 } 11695 } 11696 11697 } 11698 11699 func (s *RetryLayerUserAccessTokenStore) GetAll(offset int, limit int) ([]*model.UserAccessToken, error) { 11700 11701 tries := 0 11702 for { 11703 result, err := s.UserAccessTokenStore.GetAll(offset, limit) 11704 if err == nil { 11705 return result, nil 11706 } 11707 if !isRepeatableError(err) { 11708 return result, err 11709 } 11710 tries++ 11711 if tries >= 3 { 11712 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11713 return result, err 11714 } 11715 } 11716 11717 } 11718 11719 func (s *RetryLayerUserAccessTokenStore) GetByToken(tokenString string) (*model.UserAccessToken, error) { 11720 11721 tries := 0 11722 for { 11723 result, err := s.UserAccessTokenStore.GetByToken(tokenString) 11724 if err == nil { 11725 return result, nil 11726 } 11727 if !isRepeatableError(err) { 11728 return result, err 11729 } 11730 tries++ 11731 if tries >= 3 { 11732 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11733 return result, err 11734 } 11735 } 11736 11737 } 11738 11739 func (s *RetryLayerUserAccessTokenStore) GetByUser(userID string, page int, perPage int) ([]*model.UserAccessToken, error) { 11740 11741 tries := 0 11742 for { 11743 result, err := s.UserAccessTokenStore.GetByUser(userID, page, perPage) 11744 if err == nil { 11745 return result, nil 11746 } 11747 if !isRepeatableError(err) { 11748 return result, err 11749 } 11750 tries++ 11751 if tries >= 3 { 11752 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11753 return result, err 11754 } 11755 } 11756 11757 } 11758 11759 func (s *RetryLayerUserAccessTokenStore) Save(token *model.UserAccessToken) (*model.UserAccessToken, error) { 11760 11761 tries := 0 11762 for { 11763 result, err := s.UserAccessTokenStore.Save(token) 11764 if err == nil { 11765 return result, nil 11766 } 11767 if !isRepeatableError(err) { 11768 return result, err 11769 } 11770 tries++ 11771 if tries >= 3 { 11772 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11773 return result, err 11774 } 11775 } 11776 11777 } 11778 11779 func (s *RetryLayerUserAccessTokenStore) Search(term string) ([]*model.UserAccessToken, error) { 11780 11781 tries := 0 11782 for { 11783 result, err := s.UserAccessTokenStore.Search(term) 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 *RetryLayerUserAccessTokenStore) UpdateTokenDisable(tokenID string) error { 11800 11801 tries := 0 11802 for { 11803 err := s.UserAccessTokenStore.UpdateTokenDisable(tokenID) 11804 if err == nil { 11805 return nil 11806 } 11807 if !isRepeatableError(err) { 11808 return err 11809 } 11810 tries++ 11811 if tries >= 3 { 11812 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11813 return err 11814 } 11815 } 11816 11817 } 11818 11819 func (s *RetryLayerUserAccessTokenStore) UpdateTokenEnable(tokenID string) error { 11820 11821 tries := 0 11822 for { 11823 err := s.UserAccessTokenStore.UpdateTokenEnable(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 *RetryLayerUserTermsOfServiceStore) Delete(userID string, termsOfServiceId string) error { 11840 11841 tries := 0 11842 for { 11843 err := s.UserTermsOfServiceStore.Delete(userID, termsOfServiceId) 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 *RetryLayerUserTermsOfServiceStore) GetByUser(userID string) (*model.UserTermsOfService, error) { 11860 11861 tries := 0 11862 for { 11863 result, err := s.UserTermsOfServiceStore.GetByUser(userID) 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 *RetryLayerUserTermsOfServiceStore) Save(userTermsOfService *model.UserTermsOfService) (*model.UserTermsOfService, error) { 11880 11881 tries := 0 11882 for { 11883 result, err := s.UserTermsOfServiceStore.Save(userTermsOfService) 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 *RetryLayerWebhookStore) AnalyticsIncomingCount(teamID string) (int64, error) { 11900 11901 tries := 0 11902 for { 11903 result, err := s.WebhookStore.AnalyticsIncomingCount(teamID) 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 *RetryLayerWebhookStore) AnalyticsOutgoingCount(teamID string) (int64, error) { 11920 11921 tries := 0 11922 for { 11923 result, err := s.WebhookStore.AnalyticsOutgoingCount(teamID) 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 *RetryLayerWebhookStore) ClearCaches() { 11940 11941 s.WebhookStore.ClearCaches() 11942 11943 } 11944 11945 func (s *RetryLayerWebhookStore) DeleteIncoming(webhookID string, time int64) error { 11946 11947 tries := 0 11948 for { 11949 err := s.WebhookStore.DeleteIncoming(webhookID, time) 11950 if err == nil { 11951 return nil 11952 } 11953 if !isRepeatableError(err) { 11954 return err 11955 } 11956 tries++ 11957 if tries >= 3 { 11958 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11959 return err 11960 } 11961 } 11962 11963 } 11964 11965 func (s *RetryLayerWebhookStore) DeleteOutgoing(webhookID string, time int64) error { 11966 11967 tries := 0 11968 for { 11969 err := s.WebhookStore.DeleteOutgoing(webhookID, time) 11970 if err == nil { 11971 return nil 11972 } 11973 if !isRepeatableError(err) { 11974 return err 11975 } 11976 tries++ 11977 if tries >= 3 { 11978 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11979 return err 11980 } 11981 } 11982 11983 } 11984 11985 func (s *RetryLayerWebhookStore) GetIncoming(id string, allowFromCache bool) (*model.IncomingWebhook, error) { 11986 11987 tries := 0 11988 for { 11989 result, err := s.WebhookStore.GetIncoming(id, allowFromCache) 11990 if err == nil { 11991 return result, nil 11992 } 11993 if !isRepeatableError(err) { 11994 return result, err 11995 } 11996 tries++ 11997 if tries >= 3 { 11998 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 11999 return result, err 12000 } 12001 } 12002 12003 } 12004 12005 func (s *RetryLayerWebhookStore) GetIncomingByChannel(channelID string) ([]*model.IncomingWebhook, error) { 12006 12007 tries := 0 12008 for { 12009 result, err := s.WebhookStore.GetIncomingByChannel(channelID) 12010 if err == nil { 12011 return result, nil 12012 } 12013 if !isRepeatableError(err) { 12014 return result, err 12015 } 12016 tries++ 12017 if tries >= 3 { 12018 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12019 return result, err 12020 } 12021 } 12022 12023 } 12024 12025 func (s *RetryLayerWebhookStore) GetIncomingByTeam(teamID string, offset int, limit int) ([]*model.IncomingWebhook, error) { 12026 12027 tries := 0 12028 for { 12029 result, err := s.WebhookStore.GetIncomingByTeam(teamID, offset, limit) 12030 if err == nil { 12031 return result, nil 12032 } 12033 if !isRepeatableError(err) { 12034 return result, err 12035 } 12036 tries++ 12037 if tries >= 3 { 12038 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12039 return result, err 12040 } 12041 } 12042 12043 } 12044 12045 func (s *RetryLayerWebhookStore) GetIncomingByTeamByUser(teamID string, userID string, offset int, limit int) ([]*model.IncomingWebhook, error) { 12046 12047 tries := 0 12048 for { 12049 result, err := s.WebhookStore.GetIncomingByTeamByUser(teamID, userID, offset, limit) 12050 if err == nil { 12051 return result, nil 12052 } 12053 if !isRepeatableError(err) { 12054 return result, err 12055 } 12056 tries++ 12057 if tries >= 3 { 12058 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12059 return result, err 12060 } 12061 } 12062 12063 } 12064 12065 func (s *RetryLayerWebhookStore) GetIncomingList(offset int, limit int) ([]*model.IncomingWebhook, error) { 12066 12067 tries := 0 12068 for { 12069 result, err := s.WebhookStore.GetIncomingList(offset, limit) 12070 if err == nil { 12071 return result, nil 12072 } 12073 if !isRepeatableError(err) { 12074 return result, err 12075 } 12076 tries++ 12077 if tries >= 3 { 12078 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12079 return result, err 12080 } 12081 } 12082 12083 } 12084 12085 func (s *RetryLayerWebhookStore) GetIncomingListByUser(userID string, offset int, limit int) ([]*model.IncomingWebhook, error) { 12086 12087 tries := 0 12088 for { 12089 result, err := s.WebhookStore.GetIncomingListByUser(userID, offset, limit) 12090 if err == nil { 12091 return result, nil 12092 } 12093 if !isRepeatableError(err) { 12094 return result, err 12095 } 12096 tries++ 12097 if tries >= 3 { 12098 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12099 return result, err 12100 } 12101 } 12102 12103 } 12104 12105 func (s *RetryLayerWebhookStore) GetOutgoing(id string) (*model.OutgoingWebhook, error) { 12106 12107 tries := 0 12108 for { 12109 result, err := s.WebhookStore.GetOutgoing(id) 12110 if err == nil { 12111 return result, nil 12112 } 12113 if !isRepeatableError(err) { 12114 return result, err 12115 } 12116 tries++ 12117 if tries >= 3 { 12118 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12119 return result, err 12120 } 12121 } 12122 12123 } 12124 12125 func (s *RetryLayerWebhookStore) GetOutgoingByChannel(channelID string, offset int, limit int) ([]*model.OutgoingWebhook, error) { 12126 12127 tries := 0 12128 for { 12129 result, err := s.WebhookStore.GetOutgoingByChannel(channelID, offset, limit) 12130 if err == nil { 12131 return result, nil 12132 } 12133 if !isRepeatableError(err) { 12134 return result, err 12135 } 12136 tries++ 12137 if tries >= 3 { 12138 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12139 return result, err 12140 } 12141 } 12142 12143 } 12144 12145 func (s *RetryLayerWebhookStore) GetOutgoingByChannelByUser(channelID string, userID string, offset int, limit int) ([]*model.OutgoingWebhook, error) { 12146 12147 tries := 0 12148 for { 12149 result, err := s.WebhookStore.GetOutgoingByChannelByUser(channelID, userID, offset, limit) 12150 if err == nil { 12151 return result, nil 12152 } 12153 if !isRepeatableError(err) { 12154 return result, err 12155 } 12156 tries++ 12157 if tries >= 3 { 12158 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12159 return result, err 12160 } 12161 } 12162 12163 } 12164 12165 func (s *RetryLayerWebhookStore) GetOutgoingByTeam(teamID string, offset int, limit int) ([]*model.OutgoingWebhook, error) { 12166 12167 tries := 0 12168 for { 12169 result, err := s.WebhookStore.GetOutgoingByTeam(teamID, offset, limit) 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) GetOutgoingByTeamByUser(teamID string, userID string, offset int, limit int) ([]*model.OutgoingWebhook, error) { 12186 12187 tries := 0 12188 for { 12189 result, err := s.WebhookStore.GetOutgoingByTeamByUser(teamID, userID, offset, limit) 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) GetOutgoingList(offset int, limit int) ([]*model.OutgoingWebhook, error) { 12206 12207 tries := 0 12208 for { 12209 result, err := s.WebhookStore.GetOutgoingList(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) GetOutgoingListByUser(userID string, offset int, limit int) ([]*model.OutgoingWebhook, error) { 12226 12227 tries := 0 12228 for { 12229 result, err := s.WebhookStore.GetOutgoingListByUser(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) InvalidateWebhookCache(webhook string) { 12246 12247 s.WebhookStore.InvalidateWebhookCache(webhook) 12248 12249 } 12250 12251 func (s *RetryLayerWebhookStore) PermanentDeleteIncomingByChannel(channelID string) error { 12252 12253 tries := 0 12254 for { 12255 err := s.WebhookStore.PermanentDeleteIncomingByChannel(channelID) 12256 if err == nil { 12257 return nil 12258 } 12259 if !isRepeatableError(err) { 12260 return err 12261 } 12262 tries++ 12263 if tries >= 3 { 12264 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12265 return err 12266 } 12267 } 12268 12269 } 12270 12271 func (s *RetryLayerWebhookStore) PermanentDeleteIncomingByUser(userID string) error { 12272 12273 tries := 0 12274 for { 12275 err := s.WebhookStore.PermanentDeleteIncomingByUser(userID) 12276 if err == nil { 12277 return nil 12278 } 12279 if !isRepeatableError(err) { 12280 return err 12281 } 12282 tries++ 12283 if tries >= 3 { 12284 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12285 return err 12286 } 12287 } 12288 12289 } 12290 12291 func (s *RetryLayerWebhookStore) PermanentDeleteOutgoingByChannel(channelID string) error { 12292 12293 tries := 0 12294 for { 12295 err := s.WebhookStore.PermanentDeleteOutgoingByChannel(channelID) 12296 if err == nil { 12297 return nil 12298 } 12299 if !isRepeatableError(err) { 12300 return err 12301 } 12302 tries++ 12303 if tries >= 3 { 12304 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12305 return err 12306 } 12307 } 12308 12309 } 12310 12311 func (s *RetryLayerWebhookStore) PermanentDeleteOutgoingByUser(userID string) error { 12312 12313 tries := 0 12314 for { 12315 err := s.WebhookStore.PermanentDeleteOutgoingByUser(userID) 12316 if err == nil { 12317 return nil 12318 } 12319 if !isRepeatableError(err) { 12320 return err 12321 } 12322 tries++ 12323 if tries >= 3 { 12324 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12325 return err 12326 } 12327 } 12328 12329 } 12330 12331 func (s *RetryLayerWebhookStore) SaveIncoming(webhook *model.IncomingWebhook) (*model.IncomingWebhook, error) { 12332 12333 tries := 0 12334 for { 12335 result, err := s.WebhookStore.SaveIncoming(webhook) 12336 if err == nil { 12337 return result, nil 12338 } 12339 if !isRepeatableError(err) { 12340 return result, err 12341 } 12342 tries++ 12343 if tries >= 3 { 12344 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12345 return result, err 12346 } 12347 } 12348 12349 } 12350 12351 func (s *RetryLayerWebhookStore) SaveOutgoing(webhook *model.OutgoingWebhook) (*model.OutgoingWebhook, error) { 12352 12353 tries := 0 12354 for { 12355 result, err := s.WebhookStore.SaveOutgoing(webhook) 12356 if err == nil { 12357 return result, nil 12358 } 12359 if !isRepeatableError(err) { 12360 return result, err 12361 } 12362 tries++ 12363 if tries >= 3 { 12364 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12365 return result, err 12366 } 12367 } 12368 12369 } 12370 12371 func (s *RetryLayerWebhookStore) UpdateIncoming(webhook *model.IncomingWebhook) (*model.IncomingWebhook, error) { 12372 12373 tries := 0 12374 for { 12375 result, err := s.WebhookStore.UpdateIncoming(webhook) 12376 if err == nil { 12377 return result, nil 12378 } 12379 if !isRepeatableError(err) { 12380 return result, err 12381 } 12382 tries++ 12383 if tries >= 3 { 12384 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12385 return result, err 12386 } 12387 } 12388 12389 } 12390 12391 func (s *RetryLayerWebhookStore) UpdateOutgoing(hook *model.OutgoingWebhook) (*model.OutgoingWebhook, error) { 12392 12393 tries := 0 12394 for { 12395 result, err := s.WebhookStore.UpdateOutgoing(hook) 12396 if err == nil { 12397 return result, nil 12398 } 12399 if !isRepeatableError(err) { 12400 return result, err 12401 } 12402 tries++ 12403 if tries >= 3 { 12404 err = errors.Wrap(err, "giving up after 3 consecutive repeatable transaction failures") 12405 return result, err 12406 } 12407 } 12408 12409 } 12410 12411 func (s *RetryLayer) Close() { 12412 s.Store.Close() 12413 } 12414 12415 func (s *RetryLayer) DropAllTables() { 12416 s.Store.DropAllTables() 12417 } 12418 12419 func (s *RetryLayer) GetCurrentSchemaVersion() string { 12420 return s.Store.GetCurrentSchemaVersion() 12421 } 12422 12423 func (s *RetryLayer) LockToMaster() { 12424 s.Store.LockToMaster() 12425 } 12426 12427 func (s *RetryLayer) MarkSystemRanUnitTests() { 12428 s.Store.MarkSystemRanUnitTests() 12429 } 12430 12431 func (s *RetryLayer) SetContext(context context.Context) { 12432 s.Store.SetContext(context) 12433 } 12434 12435 func (s *RetryLayer) TotalMasterDbConnections() int { 12436 return s.Store.TotalMasterDbConnections() 12437 } 12438 12439 func (s *RetryLayer) TotalReadDbConnections() int { 12440 return s.Store.TotalReadDbConnections() 12441 } 12442 12443 func (s *RetryLayer) TotalSearchDbConnections() int { 12444 return s.Store.TotalSearchDbConnections() 12445 } 12446 12447 func (s *RetryLayer) UnlockFromMaster() { 12448 s.Store.UnlockFromMaster() 12449 } 12450 12451 func New(childStore store.Store) *RetryLayer { 12452 newStore := RetryLayer{ 12453 Store: childStore, 12454 } 12455 12456 newStore.AuditStore = &RetryLayerAuditStore{AuditStore: childStore.Audit(), Root: &newStore} 12457 newStore.BotStore = &RetryLayerBotStore{BotStore: childStore.Bot(), Root: &newStore} 12458 newStore.ChannelStore = &RetryLayerChannelStore{ChannelStore: childStore.Channel(), Root: &newStore} 12459 newStore.ChannelMemberHistoryStore = &RetryLayerChannelMemberHistoryStore{ChannelMemberHistoryStore: childStore.ChannelMemberHistory(), Root: &newStore} 12460 newStore.ClusterDiscoveryStore = &RetryLayerClusterDiscoveryStore{ClusterDiscoveryStore: childStore.ClusterDiscovery(), Root: &newStore} 12461 newStore.CommandStore = &RetryLayerCommandStore{CommandStore: childStore.Command(), Root: &newStore} 12462 newStore.CommandWebhookStore = &RetryLayerCommandWebhookStore{CommandWebhookStore: childStore.CommandWebhook(), Root: &newStore} 12463 newStore.ComplianceStore = &RetryLayerComplianceStore{ComplianceStore: childStore.Compliance(), Root: &newStore} 12464 newStore.EmojiStore = &RetryLayerEmojiStore{EmojiStore: childStore.Emoji(), Root: &newStore} 12465 newStore.FileInfoStore = &RetryLayerFileInfoStore{FileInfoStore: childStore.FileInfo(), Root: &newStore} 12466 newStore.GroupStore = &RetryLayerGroupStore{GroupStore: childStore.Group(), Root: &newStore} 12467 newStore.JobStore = &RetryLayerJobStore{JobStore: childStore.Job(), Root: &newStore} 12468 newStore.LicenseStore = &RetryLayerLicenseStore{LicenseStore: childStore.License(), Root: &newStore} 12469 newStore.LinkMetadataStore = &RetryLayerLinkMetadataStore{LinkMetadataStore: childStore.LinkMetadata(), Root: &newStore} 12470 newStore.OAuthStore = &RetryLayerOAuthStore{OAuthStore: childStore.OAuth(), Root: &newStore} 12471 newStore.PluginStore = &RetryLayerPluginStore{PluginStore: childStore.Plugin(), Root: &newStore} 12472 newStore.PostStore = &RetryLayerPostStore{PostStore: childStore.Post(), Root: &newStore} 12473 newStore.PreferenceStore = &RetryLayerPreferenceStore{PreferenceStore: childStore.Preference(), Root: &newStore} 12474 newStore.ProductNoticesStore = &RetryLayerProductNoticesStore{ProductNoticesStore: childStore.ProductNotices(), Root: &newStore} 12475 newStore.ReactionStore = &RetryLayerReactionStore{ReactionStore: childStore.Reaction(), Root: &newStore} 12476 newStore.RemoteClusterStore = &RetryLayerRemoteClusterStore{RemoteClusterStore: childStore.RemoteCluster(), Root: &newStore} 12477 newStore.RetentionPolicyStore = &RetryLayerRetentionPolicyStore{RetentionPolicyStore: childStore.RetentionPolicy(), Root: &newStore} 12478 newStore.RoleStore = &RetryLayerRoleStore{RoleStore: childStore.Role(), Root: &newStore} 12479 newStore.SchemeStore = &RetryLayerSchemeStore{SchemeStore: childStore.Scheme(), Root: &newStore} 12480 newStore.SessionStore = &RetryLayerSessionStore{SessionStore: childStore.Session(), Root: &newStore} 12481 newStore.SharedChannelStore = &RetryLayerSharedChannelStore{SharedChannelStore: childStore.SharedChannel(), Root: &newStore} 12482 newStore.StatusStore = &RetryLayerStatusStore{StatusStore: childStore.Status(), Root: &newStore} 12483 newStore.SystemStore = &RetryLayerSystemStore{SystemStore: childStore.System(), Root: &newStore} 12484 newStore.TeamStore = &RetryLayerTeamStore{TeamStore: childStore.Team(), Root: &newStore} 12485 newStore.TermsOfServiceStore = &RetryLayerTermsOfServiceStore{TermsOfServiceStore: childStore.TermsOfService(), Root: &newStore} 12486 newStore.ThreadStore = &RetryLayerThreadStore{ThreadStore: childStore.Thread(), Root: &newStore} 12487 newStore.TokenStore = &RetryLayerTokenStore{TokenStore: childStore.Token(), Root: &newStore} 12488 newStore.UploadSessionStore = &RetryLayerUploadSessionStore{UploadSessionStore: childStore.UploadSession(), Root: &newStore} 12489 newStore.UserStore = &RetryLayerUserStore{UserStore: childStore.User(), Root: &newStore} 12490 newStore.UserAccessTokenStore = &RetryLayerUserAccessTokenStore{UserAccessTokenStore: childStore.UserAccessToken(), Root: &newStore} 12491 newStore.UserTermsOfServiceStore = &RetryLayerUserTermsOfServiceStore{UserTermsOfServiceStore: childStore.UserTermsOfService(), Root: &newStore} 12492 newStore.WebhookStore = &RetryLayerWebhookStore{WebhookStore: childStore.Webhook(), Root: &newStore} 12493 return &newStore 12494 }