Jira Service Management 10.0.x アップグレード ノート

Jira Service Management リリース ノート

このページの内容

お困りですか?

アトラシアン コミュニティをご利用ください。

コミュニティに質問

ここでは、Jira Service Management 10.0.x へのアップグレードに関する重要な注意事項について説明します。このリリースの新機能や改善の詳細については、次のページをご確認ください。

プラットフォーム リリースには、過去のバージョンとの互換性を持たない大規模な変更 ("重大な変更") が複数含まれます。このような変更により、将来のリリースでより広範な開発を行うための強化な基盤を確立しています。

To increase security and performance, we’ve made changes in our core architecture that require apps to bundle their libraries. We’re collaborating with our Marketplace partners on these changes, however, some apps may not be immediately compatible with the new platform upon release and cause product experience breaks. We recommend that you review your apps before upgrading to avoid service disruptions for your organization.

To check app compatibility, visit Checking app compatibility with application updates or the Atlassian Marketplace to see if your app hosting is compatible with your product version.


アップグレード ノート

Removal of REST API endpoints

対象: 管理者

We’ve removed the following REST API endpoints in the Jira Service Management 10.0.

変更手順

Removed GET /servicedeskapi/queues/{projectKey}

Use GET /servicedeskapi/admin/queues/{projectKey}

削除済

PUT /servicedeskapi/queues/include-count

Use PUT /servicedeskapi/admin/queues/include-count
Removed PUT /servicedeskapi/queues/{projectKey}/include-countUse PUT /servicedeskapi/admin/queues/{projectKey}/include-count
Removed PUT /servicedeskapi/queues/cache-countUse PUT /servicedeskapi/admin/queues/cache-count
Removed PUT /servicedeskapi/queues/{projectKey}/cache-countUse PUT /servicedeskapi/admin/queues/{projectKey}/cache-count

Removal of the http-builder library

対象: 管理者

We’ve removed the http-library in Jira Service Management 10.0 because it is not being actively maintained. If you are using this library in Groovy scripts, we recommend that you switch to the native Groovy GET and POST methods.

Groovy 4 のアップグレード

対象: 管理者

We’ve upgraded from Groovy 2 to Groovy 4 in Jira Service Management 10.0 for better security, functionality, and syntax support. If you’ve been using Groovy scripts in Assets, test your existing scripts in a non-production environment to make sure your scripts work properly.

重要かつ重大な変更点は次のとおりです。

  • switch ステートメントのシンタックスの変更。
  • Changes to the syntax of the intersect() method on arrays.
  • Changes to the resolution of properties of isser/getter.
  • picocli パッケージの同梱は行われなくなります。代わりに @Grab を利用します。
  • ImportCustomizer はモジュールごとに一度適用されます (これまではクラスごとに一度)。
  • groovy-jaxbgroovy-bsf、および StaticTypeCheckingVisitor#collectAllInterfacesByName モジュールの提供は終了します。
  • Antir2 ベースのパースは行えなくなります (新しい Parrot パーサーを利用します)。
  • 一部の CLI ヘルプ メッセージのフォーマットの変更。
  • If you run into the following issue with JsonSlurper, replace JsonSlurper with Jackson ObjectMapper.

    java.lang.RuntimeException: Unable to load FastStringService
    	at org.apache.groovy.json.internal.FastStringUtils.getService(FastStringUtils.java:56) ~[?:?]
    	at org.apache.groovy.json.internal.FastStringUtils.toCharArray(FastStringUtils.java:66) ~[?:?]
    	at org.apache.groovy.json.internal.BaseJsonParser.parse(BaseJsonParser.java:114) ~[?:?]
    	at groovy.json.JsonSlurper.parseText(JsonSlurper.java:205) ~[?:?]
  • The following table lists the changes to the names of classes, packages, and modules.

  • 重大な変更の完全な一覧については次のページをご確認ください。


クラス/パッケージ/モジュール名Groovy 2Groovy 4
groovy-xmlgroovy.utilgroovy.xml
groovygroovy.xml.QNamegroovy.namespace
groovy-antgroovy.utilgroovy.ant
groovy-consolegroovy.inspectgroovy.console

groovy.inpsect.swingui

groovy.ui

groovy.console.ui
groovy.ui.ConsoleApplet非推奨
groovy-groovysh

org.codehaus.groovy.tools.shell

org.apache.groovy.groovysh
groovy-jmx

groovy.util.GroovyMBean

groovy.jmx
groovy-nio

org.codehaus.groovy.runtime.NioGroovyMethods

org.apache.groovy.nio.extensions.NioExtensions

org.codehaus.groovy.runtime.WritablePath

org.apache.groovy.nio.runtime
groovy-swing

org.codehaus.groovy.binding

org.apache.groovy.swing.binding

groovy.model

groovy.swing.model

groovy.inspect.swingui

org.apache.groovy.swing.table
groovy-test

org.codehaus.groovy.runtime.ScriptTestAdapter

org.apache.groovy.test
groovy.transform.NotYetImplementedgroovy.test.NotYetImplemented
groovy.utilgroovy.test
groovy.langgroovy.test
GroovyClassLoadersourceCacheclassCache のタイプは Map から、より強力なタイプに変わりました

Jira Software 10.0 および Jira Service Management 6.0 のデータベース アップグレードに伴って予測されるダウンタイム

対象: 管理者

We’re changed the structure of MySQL and Oracle databases in Jira Software 10.0 and Jira Service Management 6.0 to enhance the accuracy of timestamps for operations, down to the millisecond (operations such as creating issues, updating comments, or changing statuses).

MySQL または Oracle データベースをご利用の場合、jiraissuejiraaction、および changegroup テーブル内のいくつかのカラムがアップグレード中に移行されるため、アップグレードで追加のダウンタイムが発生します。このダウンタイムは、課題の数が 500 万件未満である場合は 20 分未満になると予想されています。なお、ダウンタイムはご利用のデータベースのパフォーマンスに加えて、jiraissuejiraaction、および changegroup テーブルの行数の影響を受ける点に注意してください。

正確なダウンタイムを把握してアップグレードを計画するには、次の手順を実行します。

  1. ご利用のデータベースで次のコマンドを実行して行数を取得します。

    SELECT COUNT(*) FROM jiraissue;
    SELECT COUNT(*) FROM jiraaction;
    SELECT COUNT(*) FROM changegroup;
  2. Amazon RDS db m6g.8xlarge 用に提供された次のベンチマーク データを利用して、ダウンタイムを予測します。
    1. jiraissue テーブル: 100 万行あたり約 26.527 秒
    2. jiraaction テーブル: 100 万行あたり約 7.592 秒
    3. changegroup テーブル: 100 万行あたり約 9.468 秒

たとえば、jiraissuejiraaction、および changegroup テーブルにそれぞれ 500 万、800 万、および 8,000 万行があった場合、約 16.65 分のダウンタイムが予測されます。

アセット機能の内部 GraphQL API を削除

対象: 管理者

We have removed the internal Assets GraphQL APIs to enhance security, establish consistent API patterns across Jira Service Management and Assets, and to clean up our code base. We’ve migrated the APIs that are used to configure Assets icons to new internal REST endpoints.

次のものが削除されます。

  • GraphQL エンドポイント /insight/graphql
  • GraphQL クエリ:

    クエリ名説明

    findObjectSchemas

    提供されたフィルターでオブジェクト スキーマを検索します。フィルターが提供されていない場合はすべてのオブジェクト スキーマが返されます。

    objectSchema

    オブジェクト スキーマを ID で取得します

    findObjectTypes

    提供されたフィルターでオブジェクト タイプを検索します。フィルターが提供されていない場合はすべてのオブジェクト タイプが返されます。

    findObjectTypeRelations

    関連するオブジェクト タイプを検索します

    objectType

    オブジェクト タイプを ID で取得します

    icon

    アイコンを ID で取得します

    globalIconTheme

    グローバル アイコン テーマを取得します

    findObjects

    提供されたフィルターでオブジェクトを検索します。フィルターが提供されていない場合はすべてのオブジェクトが返されます。

    findObjectReferences

    特定のオブジェクトの内向きまたは外向き参照を検索します。

    findStatusTypes

    提供されたフィルターでステータス タイプを検索します。フィルターが提供されていない場合はすべてのオブジェクト ステータス タイプが返されます。

    findReferenceTypes

    提供されたフィルターで参照タイプを検索します。

    object

    オブジェクトを ID で取得します

    findObjectTypeAttributes

    提供されたフィルターでオブジェクト タイプ属性を検索します。フィルターが提供されていない場合はすべてのオブジェクト タイプ属性が返されます。

    objectTypeAttribute

    オブジェクト タイプ属性を ID で取得します

    findUniqueObjectAttributeValues

    特定のオブジェクト タイプ属性の一意のオブジェクト属性値を検索します

  • GraphQL ミューテーション:

    ミューテーション名説明

    createObjectSchema

    新しいオブジェクト スキーマを作成

    updateObjectSchema

    既存のオブジェクト スキーマの名前または説明を更新

    copyObjectSchema

    既存のオブジェクト スキーマをコピー

    deleteObjectSchema

    既存のオブジェクト スキーマを削除

    createObjectType

    新しいオブジェクト タイプを作成

    updateObjectType

    既存のオブジェクト タイプを更新

    updateObjectTypePosition

    オブジェクト タイプ構造内で 1 つのオブジェクト タイプの位置を変更

    copyObjectType

    既存のオブジェクト タイプをコピー

    deleteObjectType

    既存のオブジェクト タイプを削除

    createObject

    新しいオブジェクトを作成

    updateObject

    既存のオブジェクトを更新

    deleteObject

    既存のオブジェクトを削除

    createObjectTypeAttribute

    新しいオブジェクト タイプ属性を作成

    updateObjectTypeAttribute

    既存のオブジェクト タイプ属性を更新

    configureObjectTypeAttribute

    オブジェクト タイプ属性の設定を変更

    updateObjectTypeAttributePosition

    属性リスト内で 1 つのオブジェクト タイプ属性の位置を変更

    deleteObjectTypeAttribute

    既存のオブジェクト タイプ属性を削除

    createIcon

    新しいアイコンを作成

    updateIcon

    既存のアイコンを更新

    deleteIcon

    既存のアイコンを削除

    configureGlobalIconTheme

    グローバル アイコンテーマを設定

    resetGlobalIconTheme

    グローバル アイコン テーマをデフォルト設定にリセット


以前に廃止された機能フラグの削除

In this release, we’ve removed the following feature flags:

  • com.atlassian.jira.agile.darkfeature.burnupchart
  • optimistic.transitions
  • com.atlassian.jira.advanced.audit.log
  • velocity.chart.ui
  • jira.quick.search
  • com.atlassian.jira.custom.csv.escaper
  • atlassian.cdn.static.assets
  • jira.users.and.roles.page.in.react

以前はこれらの機能フラグの背後にあったすべての機能が、既定で有効化されました。

Java API に関する後方互換性のない変更

In this release, we've removed several deprecated methods and classes. Additionally, we’ve made adjustments to a group of methods which involved modifying the signatures and return types.

すべての変更の一覧をご確認ください。

Here’s what’s been changed:

Classes

Changed symbols

手順

com.atlassian.jira.issue.customfields.CustomFieldType

#getNonnullCustomFieldProvider() removed.

代わりに #getNonNullCustomFieldProvider() を使用します。

  • com.atlassian.jira.issue.customfields.vdi.NonNullCustomFieldProvider

  • com.atlassian.jira.issue.customfields.DefaultNonNullCustomFieldProvider

#getCustomFieldInfo(com.atlassian.jira.issue.Issue) removed.

Use #getCustomFieldInfo(java.util.List issues) instead.
You now need to implement #getCustomFieldInfo(java.util.List<com.atlassian.jira.issue.Issue> issues) in every class you were previously implementing #getCustomFieldInfo(com.atlassian.jira.issue.Issue issue).

  • com.atlassian.jira.issue.customfields.NonnullCustomFieldProvider

  • com.atlassian.jira.issue.customfields.persistence.DefaultNonnullCustomFieldProvider

  • com.atlassian.jira.issue.customfields.CustomFieldPrefetchedData

Whole classes removed.

代わりに com.atlassian.jira.issue.customfields.vdi.CustomFieldPrefetchedData を使用します。

  • com.atlassian.jira.issue.index.indexers.FieldIndexer

  • com.atlassian.jira.issue.index.indexers.impl.AbstractCustomFieldIndexer

  • com.atlassian.jira.issue.customfields.impl.TextCFType

#addIndex(org.apache.lucene.document.Document, com.atlassian.jira.issue.Issue, com.atlassian.jira.issue.customfields.CustomFieldPrefetchedData) removed.

代わりに #addIndex(org.apache.lucene.document.Document, com.atlassian.jira.issue.Issue, com.atlassian.jira.issue.customfields.vdi.CustomFieldPrefetchedData) を使用します。

com.atlassian.jira.issue.index.indexers.impl.AbstractCustomFieldIndexer

#addDocumentFieldsNotSearchable(org.apache.lucene.document.Document doc, com.atlassian.jira.issue.Issue issue, com.atlassian.jira.issue.customfields.CustomFieldPrefetchedData prefetchedData) removed.

代わりに #addDocumentFieldsNotSearchable(org.apache.lucene.document.Document, com.atlassian.jira.issue.Issue, com.atlassian.jira.issue.customfields.vdi.CustomFieldPrefetchedData) を使用します。

com.atlassian.jira.issue.index.indexers.impl.AbstractCustomFieldIndexer

#addDocumentFieldsSearchable(org.apache.lucene.document.Document doc, com.atlassian.jira.issue.Issue issue, com.atlassian.jira.issue.customfields.CustomFieldPrefetchedData prefetchedData) removed.

代わりに #addDocumentFieldsSearchable(org.apache.lucene.document.Document, com.atlassian.jira.issue.Issue, com.atlassian.jira.issue.customfields.vdi.CustomFieldPrefetchedData) を使用します。

com.atlassian.jira.bc.user.search.UserSearchParams

All public constructors removed.

Use UserSearchParams.Builder to construct an instance of UserSearchParams instead of using the constructor.

com.atlassian.jira.bc.user.search.UserSearchParams

#builder() behavior changed.

The behavior of this method changed, it was left for convenience. It now mirrors the behavior of UserSearchParams.builder(MAXIMUM_RESULTS).

com.atlassian.jira.util.collect.CollectionUtil

#filter(Collection<T>, Predicate<? super T>) removed.

Use standard Stream#filter(Predicate<?>) and appropriate Stream#collect(...) call.

com.atlassian.jira.security.GlobalPermissionEntry

#getGlobalPermissionType() removed.

代わりに #getPermissionKey() を使用します。

com.atlassian.jira.security.JiraAuthenticationContext

#getI18nBean() removed.

代わりに #getI18nHelper() を使用します。

com.atlassian.jira.security.JiraAuthenticationContext

#getText(java.lang.String) removed.

Use #getText() method on #getI18nHelper().

com.atlassian.jira.sharing.ShareManager

#hasPermission(com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.sharing.SharedEntity) removed.

Use #isSharedWith(com.atlassian.crowd.embedded.api.User, SharedEntity) to get the same logic. Permission checks should be done in the service layer according to this information.

com.atlassian.jira.user.preferences.JiraUserPreferences

Whole class removed from public API.

You should not construct user preferences directly. Request them through the UserPreferencesManager instead.

com.atlassian.jira.util.collect.MapBuilder

#toFastMap() removed.

Use ImmutableMap directly instead.

com.atlassian.jira.util.collect.MapBuilder

#toImmutableMap() removed.

Use #toMap() instead, or consider using ImmutableMap if the map doesn't need to accept nulls.

com.atlassian.jira.util.index.Contexts

#nullContext() removed.

代わりに com.atlassian.jira.task.context.Contexts#nullContext() を使用します。

com.atlassian.jira.util.JiraDurationUtils

#onClearCache(com.atlassian.jira.event.ClearCacheEvent) removed.

Use the DurationFormatChanged event instead.

com.atlassian.jira.util.JiraDurationUtils

#start() removed.

No replacement.

com.atlassian.jira.web.action.issue.IssueCreationHelperBean

#getProvidedFieldNames(com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.issue.Issue) removed.

Avoid using IssueCreationHelperBean class as it’ll be removed. Before it happens, use #getProvidedFieldNames(com.atlassian.jira.issue.Issue) instead.

com.atlassian.jira.web.bean.MultiBulkMoveBean

#setTargetProject(org.ofbiz.core.entity.GenericValue) removed.

代わりに #setTargetProject(com.atlassian.jira.project.Project) を使用します。

com.atlassian.jira.web.util.HelpUtil.HelpPath

#getSimpleUrl() removed.

代わりに #getUrl() を使用します。

com.atlassian.jira.web.util.OutlookDate

  • #format()
  • #getDateTimePickerFormatSample(java.util.Date)

removed.

代わりに com.atlassian.jira.datetime.DateTimeFormatter#format(java.util.Date) を使用します。

com.atlassian.jira.web.util.OutlookDate

  • #getCompleteDateFormat()
  • #getDatePickerFormat()
  • #getDateTimePickerFormat()

removed.

代わりに com.atlassian.jira.datetime.DateTimeFormatter#getFormatHint() を使用します。

com.atlassian.jira.web.util.OutlookDate

#getNow() removed.

代わりに java.util.Date#Date() を使用します。

com.atlassian.jira.permission.SchemePermissions

Whole class removed.

代わりに com.atlassian.jira.security.PermissionManager を使用します。

com.atlassian.jira.permission.Permission

Whole class removed.

Use com.atlassian.jira.security.PermissionManager or com.atlassian.jira.security.GlobalPermissionManager instead.

com.atlassian.jira.issue.attachment.AttachmentZipKit

Whole class removed.

代わりに com.atlassian.jira.issue.AttachmentIndexManager を使用します。

com.atlassian.jira.util.NotNull (annotation)

Whole class removed.

代わりに javax.annotation.Nonnull を使用します。

com.atlassian.jira.security.PermissionManager including its subclasses:

  • com.atlassian.jira.security.PublicAccessPermissionManager
  • com.atlassian.jira.security.ApplicationRequiredPermissionManager
  • com.atlassian.jira.security.DefaultPermissionManager
  • com.atlassian.jira.security.SubvertedPermissionManager
  • getProjects(int, com.atlassian.jira.user.ApplicationUser)
  • getProjects(int permissionId, ApplicationUser user, ProjectCategory projectCategory)

removed.

Use supported getProjects method, for example:

  • com.atlassian.jira.security.PermissionManager#getProjects(com.atlassian.jira.security.plugin.ProjectPermissionKey, com.atlassian.jira.user.ApplicationUser)

  • com.atlassian.jira.security.PermissionManager#getProjects(com.atlassian.jira.security.plugin.ProjectPermissionKey, com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.project.ProjectCategory)

com.atlassian.jira.help.HelpUrlsParser

  • #defaultUrl(String, String)
  • #onDemand(boolean)

removed.

Use com.atlassian.jira.help.HelpUrlsParserBuilderFactory to construct new HelpUrlsParse instance.

com.atlassian.jira.imports.project.mapper.ProjectImportIdMapper

#getValuesFromImport() removed.

Use #getRegisteredOldIds() (and #getKey() if needed) instead.

com.atlassian.jira.imports.project.mapper.ProjectRoleActorMapper

#getAllProjectRoleActors() removed.

Use the properly typed method #getProjectRoleActors() instead.

com.atlassian.jira.issue.comments.CommentManager

#getProjectRole(java.lang.Long) removed.

代わりに com.atlassian.jira.security.roles.ProjectRoleManager#getProjectRole(Long) を使用します。

com.atlassian.jira.issue.fields.layout.field.FieldLayoutStorageException

Whole class removed.

No replacement

com.atlassian.jira.issue.fields.rest.json.CommentBeanFactory

#createRenderedBean(com.atlassian.jira.issue.comments.Comment) removed.

代わりに #createRenderedBean(com.atlassian.jira.issue.comments.Comment, com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.util.EmailFormatter) を使用します。

com.atlassian.jira.issue.index.ReindexAllCompletedEvent

  • #shouldUpdateReplicatedIndex()
  • #ReindexAllCompletedEvent(long)
  • #ReindexAllCompletedEvent(long, boolean, boolean)

removed.

代わりに #shouldNotifyCluster() を使用します。

Do not construct internal ReindexAllCompletedEvent class.

com.atlassian.jira.issue.index.ReindexAllStartedEvent

  • #shouldUpdateReplicatedIndex()
  • #ReindexAllStartedEvent()
  • #ReindexAllStartedEvent(boolean, boolean)
  • #ReindexAllStartedEvent(boolean, boolean, com.atlassian.jira.issue.index.IssueIndexingParams, com.atlassian.jira.config.ReindexMessage)

removed.

代わりに #shouldNotifyCluster() を使用します。

Don't construct internal ReindexAllStartedEvent class.

com.atlassian.jira.bc.project.version.VersionService

#delete(JiraServiceContext, ValidationResult) removed.

代わりに com.atlassian.jira.bc.project.version.VersionService#deleteVersionAndSwap を使用します。

com.atlassian.jira.bc.project.version.VersionService

#deleteVersion(ApplicationUser, Version, Option<Version>, Option<Version>) removed.

代わりに com.atlassian.jira.project.version.VersionManager#deleteVersionAndSwap を使用します。

com.atlassian.jira.bc.license.JiraLicenseService.ValidationResult

#getLicenseVersion() removed.

代わりに #getLicenseDetails().getLicenseVersion() を使用します。

com.atlassian.jira.bc.license.JiraLicenseService.ValidationResult

#getTotalUserCount() removed.

Use one of the following:

  • com.atlassian.jira.application.ApplicationAuthorizationService#getUserCount(ApplicationKey)

  • com.atlassian.jira.user.util.UserManager#getTotalUserCount()

com.atlassian.jira.bc.portal.PortalPageService

#updatePortalPageUnconditionally(com.atlassian.jira.bc.JiraServiceContext, com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.portal.PortalPage) removed.

Use one of the following:

  • #updatePortalPageOwner

  • #updatePortalPage

  • PortalPageManager#update

com.atlassian.jira.bc.project.version.VersionService

  • #validateVersionDetails(com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.project.version.Version, java.lang.String, java.lang.String)
  • #validateReleaseDate(com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.project.version.Version, java.lang.String)

removed.

代わりに #validateUpdate(com.atlassian.jira.user.ApplicationUser,com.atlassian.jira.bc.project.version.VersionService.VersionBuilder) を使用します。

com.atlassian.jira.bc.user.UserService

#validateRemoveUserFromApplication(com.atlassian.jira.user.ApplicationUser, com.atlassian.application.api.ApplicationKey) removed.

代わりに #validateRemoveUserFromApplication(com.atlassian.jira.user.ApplicationUser,com.atlassian.jira.user.ApplicationUser,com.atlassian.application.api.ApplicationKey) を使用します。

com.atlassian.jira.bc.customfield.CustomFieldDefinition

#CustomFieldDefinition() removed.

Use #builder() to construct the instance.

com.atlassian.jira.bc.issue.comment.CommentService

  • #isGroupVisiblityEnabled() renamed to #isGroupVisibilityEnabled()
  • #isProjectVisiblityEnabled() renamed to #isProjectRoleVisibilityEnabled()

removed.

Use method with the visiblity typo corrected to visibility.

com.atlassian.jira.bc.issue.comment.CommentService

#isValidCommentData(com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.issue.Issue, java.lang.String, java.lang.String, com.atlassian.jira.util.ErrorCollection) removed.

Use
#isValidCommentVisibility(com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.issue.Issue, com.atlassian.jira.bc.issue.visibility.Visibility, com.atlassian.jira.util.ErrorCollection) instead.

com.atlassian.jira.bc.issue.comment.CommentService.CommentParameters

  • #getGroupLevel()
  • #getRoleLevelId()

removed.

Use the #getVisibility() method returning Visibility instance. Example of use that returns io.atlassian.fugue.Option<String> instance with appropriate group level value:
#getVisibility().accept(VisibilityVisitors.returningGroupLevelVisitor())

com.atlassian.jira.bc.issue.util.VisibilityValidator

  • #isProjectRoleVisiblityEnabled() renamed to #isProjectRoleVisibilityEnabled()
  • isGroupVisiblityEnabled() renamed to #isGroupVisibilityEnabled()

removed.

Use methods with the visiblity typo corrected to visibility.

com.atlassian.jira.bc.issue.util.VisibilityValidator

#isValidVisibilityData(com.atlassian.jira.bc.JiraServiceContext, java.lang.String, com.atlassian.jira.issue.Issue, java.lang.String, java.lang.String) removed.

代わりに #isValidVisibilityData(com.atlassian.jira.bc.JiraServiceContext, String, com.atlassian.jira.issue.Issue, com.atlassian.jira.bc.issue.visibility.Visibility) を使用します。

  • com.atlassian.jira.bc.issue.worklog.WorklogInputParameters
  • com.atlassian.jira.bc.issue.worklog.WorklogInputParametersImpl
  • #getGroupLevel()
  • #getRoleLevelId()

removed.

Use the #getVisibility() method returning Visibility instance.

Example of use that returns io.atlassian.fugue.Option<String> instance with appropriate group level value:
#getVisibility().accept(VisibilityVisitors.returningGroupLevelVisitor())

com.atlassian.jira.bulkedit.BulkOperationManager

#getBulkOperations() removed.

代わりに #getProgressAwareBulkOperations() を使用します。

com.atlassian.jira.bulkedit.BulkOperationManager

#addBulkOperation(String, Class) removed.

Use #addProgressAwareBulkOperation(String, Class) instead.

com.atlassian.jira.bulkedit.BulkOperationManager

#getOperation(String) removed.

代わりに #getProgressAwareOperation(String) を使用します。

com.atlassian.jira.bulkedit.operation.BulkOperation

Whole class removed.

代わりに com.atlassian.jira.bulkedit.operation.ProgressAwareBulkOperation を使用します。

com.atlassian.jira.config.ConstantsManager

#storeIssueTypes(java.util.List<org.ofbiz.core.entity.GenericValue>) removed.

Use #updateIssueType(String, String, Long, String, String, Long) or recalculateIssueTypeSequencesAndStore(java.util.List) instead.

com.atlassian.jira.config.properties.LookAndFeelBean

#getVersion() removed.

Use #getSettingsHash() to get the state of Look and feel.

com.atlassian.jira.config.properties.LookAndFeelBean

#updateVersion(long) removed.

代わりに #updateSettingsHash() を使用します。

com.atlassian.jira.config.SubTaskManager

#insertSubTaskIssueType(java.lang.String, java.lang.Long, java.lang.String, java.lang.String) removed.

代わりに #insertSubTaskIssueType(String,Long,String,Long) を使用します。

com.atlassian.jira.config.SubTaskManager

#updateSubTaskIssueType(java.lang.String, java.lang.String, java.lang.Long, java.lang.String, java.lang.String) removed.

代わりに #updateSubTaskIssueType(String,String,Long,String,Long) を使用します。

  • com.atlassian.jira.event.issue.IssueWatcherAddedEvent
  • com.atlassian.jira.event.issue.IssueWatcherDeletedEvent

#getUser() removed.

Use #getApplicationUser() instead

com.atlassian.jira.event.mail.EmailQueueFlashedEvent

Whole class removed.

代わりに #com.atlassian.jira.event.mail.EmailQueueFlushedEvent を使用します。

Deprecated audit API code:

  • com.atlassian.jira.auditing.AssociatedItem
  • com.atlassian.jira.auditing.ChangedValue
  • com.atlassian.jira.auditing.AuditingCategory
  • com.atlassian.jira.auditing.AuditingFilter
  • com.atlassian.jira.auditing.RecordRequest
  • com.atlassian.jira.auditing.AuditRecord

Whole classes removed from public API.

Use the following API code instead:

  • com.atlassian.audit.entity.AuditResource

  • com.atlassian.audit.entity.ChangedValue

  • com.atlassian.jira.auditing.AuditCategory

  • com.atlassian.audit.api.AuditQuery

  • com.atlassian.audit.entity.AuditEvent

  • com.atlassian.audit.entity.AuditEntity

For more details, refer to the migration guide.

  • com.atlassian.jira.bc.whitelist.WhitelistService
  • com.atlassian.jira.bc.whitelist.WhitelistManager

Whole classes removed.

Use com.atlassian.plugins.whitelist.WhitelistService and com.atlassian.plugins.whitelist.OutboundWhitelist instead.

  • com.atlassian.jira.issue.search.managers.IssueSearcherManager
  • com.atlassian.jira.issue.search.managers.SearchHandlerManager

#getSearcherGroups(com.atlassian.jira.issue.search.SearchContext) removed.

代わりに #getSearcherGroups() を使用します。

com.atlassian.jira.issue.search.managers.SearchHandlerManager

#getSearchersByClauseName(com.atlassian.jira.user.ApplicationUser, java.lang.String, com.atlassian.jira.issue.search.SearchContext) removed.

代わりに #getSearchersByClauseName(com.atlassian.crowd.embedded.api.User,String) を使用します。

com.atlassian.jira.issue.search.searchers.util.IndexedInputHelper

#getAllIndexValuesForMatchingClauses(com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.issue.search.ClauseNames, com.atlassian.query.Query, com.atlassian.jira.issue.search.SearchContext) removed.

代わりに #getAllIndexValuesForMatchingClauses(com.atlassian.jira.user.ApplicationUser,com.atlassian.jira.issue.search.ClauseNames,com.atlassian.query.Query) を使用します。

com.atlassian.jira.issue.search.searchers.util.IndexedInputHelper

#getAllNavigatorValuesForMatchingClauses(com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.issue.search.ClauseNames, com.atlassian.query.Query, com.atlassian.jira.issue.search.SearchContext) removed.

代わりに #getAllNavigatorValuesForMatchingClauses(ApplicationUser,com.atlassian.jira.issue.search.ClauseNames,com.atlassian.query.Query) を使用します。

com.atlassian.jira.issue.util.IssueUpdateBean

#getUser() removed.

代わりに #getApplicationUser() を使用します。

com.atlassian.jira.jql.query.AbstractLocalDateOperatorQueryFactory

Whole class removed.

代わりに com.atlassian.jira.jql.util.JqlLocalDateSupport#getLocalDatesFromQueryLiterals(java.util.List) を使用します。

com.atlassian.jira.jql.util.JqlIssueSupport

#getIssues(java.lang.String) removed.

代わりに #getIssue(java.lang.String) を使用します。

com.atlassian.jira.jql.util.JqlIssueSupport

#getIssues(java.lang.String, com.atlassian.jira.user.ApplicationUser) removed.

代わりに #getIssue(java.lang.String,com.atlassian.jira.user.ApplicationUser) を使用します。

com.atlassian.jira.license.LicenseDetails

#getLicenseStatusMessage(com.atlassian.jira.user.ApplicationUser, java.lang.String, com.atlassian.jira.user.util.UserManager)

#getLicenseStatusMessage(com.atlassian.jira.util.I18nHelper, com.atlassian.jira.web.util.OutlookDate, java.lang.String, com.atlassian.jira.user.util.UserManager) removed.

代わりに #getLicenseStatusMessage(com.atlassian.jira.util.I18nHelper,UserManager) を使用します。

com.atlassian.jira.license.LicenseDetails

#isLicenseAlmostExpired() removed.

代わりに #getMaintenanceExpiryDate を使用します。

com.atlassian.jira.mention.MentionService

#sendCommentMentions(com.atlassian.jira.user.ApplicationUser, java.util.Set<com.atlassian.jira.notification.NotificationRecipient>, com.atlassian.jira.issue.comments.Comment, com.atlassian.jira.issue.comments.Comment) removed.

代わりに #sendCommentMentions(Set,ApplicationUser,Comment,Comment) を使用します。

com.atlassian.jira.mention.MentionService

#sendIssueCreateMentions(com.atlassian.jira.user.ApplicationUser, java.util.Set<com.atlassian.jira.notification.NotificationRecipient>, com.atlassian.jira.issue.Issue) removed.

代わりに #sendIssueCreateMentions(Set,ApplicationUser,Issue) を使用します。

com.atlassian.jira.mention.MentionService

#sendIssueEditMentions(com.atlassian.jira.user.ApplicationUser, java.util.Set<com.atlassian.jira.notification.NotificationRecipient>, com.atlassian.jira.issue.Issue, com.atlassian.jira.issue.comments.Comment) removed.

代わりに #sendIssueEditMentions(Set,ApplicationUser,Issue,Comment) を使用します。

com.atlassian.jira.permission.PermissionSchemeManager

#getEntitiesByType(org.ofbiz.core.entity.GenericValue, com.atlassian.jira.security.plugin.ProjectPermissionKey, java.lang.String) removed.

代わりに #getPermissionSchemeEntries(long,com.atlassian.jira.security.plugin.ProjectPermissionKey,String) を使用します。

com.atlassian.jira.permission.PermissionSchemeManager

#getGroups(java.lang.Long, com.atlassian.jira.project.Project) removed.

代わりに #getGroups(ProjectPermissionKey,Project) を使用します。

com.atlassian.jira.plugin.keyboardshortcut.KeyboardShortcutManager

#getActiveShortcuts() removed.

代わりに #listActiveShortcutsUniquePerContext を使用します。

com.atlassian.jira.plugin.webfragment.conditions.AbstractJiraPermissionCondition

Whole class removed.

代わりに AbstractPermissionCondition を使用します。

com.atlassian.jira.plugin.webfragment.conditions.AbstractPermissionCondition

Whole class removed.

代わりに AbstractProjectPermissionCondition を使用します。

com.atlassian.jira.project.type.ProjectTypesEnabledCondition

Whole class removed.

No replacement.

com.atlassian.jira.issue.table.IssueTable provided by jira-api

Whole class removed.

Use com.atlassian.jira.issue.table.IssueTable provided by jira-issue-nav-plugin instead.

com.atlassian.jira.rest.Dates.DateAdapter

com.atlassian.jira.rest.Dates.DateTimeAdapter

Whole classes removed.

For marshalling and unmarshalling, use the Jackson-friendly serializers and deserializers:

@JsonSerialize(using = Dates.DateSerializer.class)

@JsonDeserialize(using = Dates.DateDeserializer.class)

com.atlassian.jira.rest.v2.issue.project.ProjectRoleBean

Whole classes removed.

代わりに com.atlassian.jira.rest.api.project.ProjectRoleBean を使用します。

com.atlassian.jira.rest.v2.issue.project.RoleActorBean

Whole classes removed.

代わりに com.atlassian.jira.rest.api.project.RoleActorBean を使用します。

com.atlassian.jira.rest.v1.model.ValueCollection

Whole classes removed.

No replacement.

com.atlassian.jira.testkit.client.restclient.Response provided by jira-testkit-client

The class has been deprecated.

代わりに com.atlassian.jira.testkit.client.restclient.ParsedResponse を使用します。

com.atlassian.jira.testkit.client.RestApiClient

#toResponse() accepts RestCall functional interface.

Use new RestCall interface or lambda in place of Method interface.

com.atlassian.jira.avatar.AvatarManager

#getAvatarBaseDirectory removed.

Use #readAvatarData() to access avatar data directly.

com.atlassian.jira.util.AttachmentConfig

Whole classes removed.

代わりに AttachmentConfigManager#getTemporaryAttachmentDirectory() を使用します。

com.atlassian.jira.issue.attachment.AttachmentStore

Whole classes removed.

Use alternative methods provided by:

AttachmentManager

ThumbnailManager

AttachmentConfigManager

com.atlassian.jira.util.AttachmentUtils

Whole classes removed.

To create, read, or delete attachment and thumbnail data directly, use the methods available in AttachmentManager and ThumbnailManager.

To find the temporary attachment directory, use AttachmentConfigManager#getTemporaryAttachmentDirectory().

The attachment and thumbnail directories for a particular issue are no longer exposed. Instead, use:

getThumbnailDirectory()

getAttachmentDirectory().

To manage individual attachments or store other data elsewhere, use:

AttachmentManager

ThumbnailManager.

getAttachmentStore() - AttachmentStore has been removed.

Instead of getTemporaryAttachmentDirectory(), use AttachmentConfigManager#getTemporaryAttachmentDirectory().

Instead of getAttachmentFile and getThumbnailFile methods, use AttachmentManager and ThumbnalManager. For example AttachmentManager#streamAttachmentContent.

The following checks can be omitted: checkValidAttachmentDirectory and checkValidTemporaryAttachmentDirectory. Jira checks the validity of paths during startup.

AttachmentManager

#attachmentsEnabled() removed.

代わりに AttachmentConfigManager#isAttachmentsEnabled() を使用します。

AttachmentManager

#disableAttachments() removed.

No replacement.

AttachmentManager

#createAttachmentCopySourceFile and previously deprecated overloads of #createAttachment removed.

代わりに #createAttachment(CreateAttachmentParamsBean) を使用します。

com.atlassian.jira.issue.attachment.CreateAttachmentParamsBean

#CreateAttachmentParamsBean removed.

Use the provided builder
com.atlassian.jira.issue.attachment.CreateAttachmentParamsBean.Builder instead.

AttachmentManager

#deleteAttachmentDirectory(Issue) removed.

To delete an issue, use IssueManager#deleteIssue instead.

com.atlassian.jira.issue.IssueInputParameters

#addProperty(String propertyKey, JsonNode propertyValue) changed to #addProperty(String propertyKey, String propertyValue).

#properties() now returns Map<String, String> instead of Map<String, JsonNode>

Serialize the value before passing to the method and deserialize after reading it.

com.atlassian.jira.issue.UpdateIssueRequest

#getProperties() now returns Map<String, String> instead of Map<String, JsonNode>

#UpdateIssueRequestBuilder#issueProperties now accepts Map<String, String>

Serialize the value before passing to the method and deserialize after reading it.

com.atlassian.jira.issue.util.IssueUpdateBean

#getProperties now returns Map<String, String>

#addProperties now accepts Map<String, String>

Serialize the value before passing to the method and deserialize after reading it.

com.atlassian.jira.bc.issue.IssueService.CreateValidationResult

constructor now accepts Map<String, String>

#getProperties now returns Map<String, String>

Serialize the value before passing to the method and deserialize after reading it.

com.atlassian.jira.bc.issue.IssueService.UpdateValidationResult

constructor now accepts Map<String, String>

#getProperties now returns Map<String, String>

Serialize the value before passing to the method and deserialize after reading it.

com.atlassian.configurable.ObjectConfigurationFactory

#loadObjectConfigurationFromElement now accepts com.atlassian.plugin.module.Element instead of org.dom4j.Element

Use the new type in method calls.

com.atlassian.jira.issue.fields.rest.IssueFinderV2

#findIssue(String) now returns io.atlassian.fugue.Either instead of com.atlassian.fugue.Either

Replaced class is equivalent.

com.atlassian.jira.config.util
AttachmentPathManager

Whole class removed.

Use the methods available in AttachmentManager to create/read/delete attachment data directly. For the settings related methods, use the new endpoints provided in AttachmentConfigManager.

com.atlassian.jira.testkit.client.AttachmentsControl

com.atlassian.jira.testkit.plugin.AttachmentsBackdoor)

Whole classes removed.

Use com.atlassian.jira.functest.framework.backdoor.AttachmentFileControl in jira-func-tests (which requires the jira-func-test-plugin to be installed). It provides storage-agnostic alternative methods to allow copying and clearing attachments.

com.atlassian.jira.bc.dataimport.DataImportParams


#isUseDefaultPaths

Builder#setUseDefaultPaths

This option is no longer supported.

com.atlassian.jira.web.action.JiraWebActionSupport

The class is now abstract.

Extend the class to provide your implementation.

依存関係の削除

In this release, we’ve removed access to a number of dependencies.

すべての変更の一覧をご確認ください。

Here’s what’s been changed:

依存関係

Java packages

nekohtml:nekohtml

org.cyberneko.html
org.cyberneko.html.*

commons-validator:commons-validator

org.apache.commons.validator
org.apache.commons.validator.*

com.atlassian.scala.plugins:scala-2.11-provider-plugin

scala.*

com.atlassian.scala.plugins:scala-2.10-provider-plugin

scala.*

com.atlassian.scala.plugins:jackson-module-scala-2.10-provider-plugin

com.fasterxml.jackson.module.scala2_10

io.atlassian.fugue:fugue-scala

io.atlassian.fugue.converters

commons-daemon:commons-daemon

org.apache.commons.daemon.*

org.apache.tomcat:tomcat-coyote

org.apache.coyote.*

commons-el:commons-el

org.apache.commons.el.*

org.apache.tomcat:tomcat-jasper

org.apache.jasper.*

org.apache.tomcat:tomcat-juli

org.apache.juli
org.apache.juli.logging

org.apache.tomcat:*

org.apache.tomcat
org.apache.catalina

org.apache.tika:tika-core
org.apache.tika:tika-*

org.apache.tika
org.apache.tika.*

org.apache.xmlgraphics:batik-transcoder
org.apache.xmlgraphics:batik-codec
org.apache.xmlgraphics:batik-js
org.apache.xmlgraphics:batik-svggen
org.apache.xmlgraphics:fop

org.apache.batik
org.apache.batik.*

com.querydsl:querydsl-core
com.querydsl:querydsl-sql

com.mysema.commons.lang
com.querydsl.core
com.querydsl.core.*

commons-configuration:commons-configuration

org.apache.commons.configuration
org.apache.commons.configuration.beanutils

org.apache.commons:commons-collections4

org.apache.commons.collections4

com.thoughtworks.xstream:xstream

com.thoughtworks.xstream
com.thoughtworks.xstream.*

org.apache.commons:commons-dbcp2

org.apache.commons.dbcp2
org.apache.commons.dbcp2.cpdsadapter
org.apache.commons.dbcp2.datasources
org.apache.commons.dbcp2.managed

com.sun.syndication:com.springsource.com.sun.syndication

com.sun.syndication.feed.*
com.sun.syndication.io.*

rome:rome

com.sun.syndication.feed.*
com.sun.syndication.io.*

commons-discovery:commons-discovery

org.apache.commons.discover.jdk
org.apache.commons.discovery.*

commons-jexl:commons-jexl

org.apache.commons.jexl.*

commons-jrcs:commons-jrcs

org.apache.commons.jrcs.*

com.github.rholder:guava-retrying

com.github.rholder.retry.*

org.dom4j:dom4j

org.dom4j.*

opensymphony:sitemesh

com.opensymphony.module.*
com.opensymphony.sitemesh.*

org.jdom:jdom

org.jdom.*

commons-pool:commons-pool

org.apache.commons.pool.*

org.tuckey:urlrewritefilter

org.tuckey.web.filters.urlrewrite.*

org.springframework.security:spring-security-core

org.springframework.security.*

com.atlassian.p4package:atlassian-p4package

com.perforce.api

commons-beanutils:commons-beanutils

org.apache.commons.beanutils
org.apache.commons.beanutils.*

org.apache.commons:comons-compress

org.apache.commons.compress
org.apache.commons.compress.*

com.sun:jai_core

com.sun.media.jai.*
javax.media.jai
javax.media.jai.*

com.sun:jai_codec

com.sun.media.jai.*

wsdl4j:wsdl4j

com.ibm.wsdl
com.ibm.wsdl.*
javax.wsdl
javax.wsdl.*

com.atlassian.fugue:fugue

com.atlassian.fugue.*

org.dom4j:dom4j

org.dom4j.*

バイナリ インストーラーの削除

Starting from Jira 10.0, the .bin and .exe installers will no longer be available. You can still install Jira using the .zip and .tar.gz distributions.

Because of this change, Java is no longer bundled with Jira. Install Java manually

アプリケーション リンクの互換性

Starting from Jira 10.0, Application Links are only backward-compatible with products that have integrated a particular bug fix addressing incorrect Application Links version parsing. To enable Application Links to function properly, make sure to upgrade any other Atlassian products to a minimum supported version:

Jira Software

Jira Service Management

Confluence

Bitbucket

Bamboo

Crowd

Fisheye および Crucible

  • 9.4.24

  • 9.12.12

  • 9.17.1

  • 10.0.0

  • 5.4.24

  • 5.12.12

  • 5.17.1

  • 10.0.0

  • 7.19.25

  • 8.5.12

  • 8.9.4

  • 9.0.0

  • 8.9.15

  • 8.19.4

  • 9.0.0

  • 9.2.15

  • 9.6.3

  • 10.0.0

  • 5.11.1

  • 5.2.6

  • 5.3.2

  • 6.0.0

  • 4.8.6

  • 4.9.0

ベロシティ パス トラバーサルの防止と許可登録

We've upgraded Velocity to the Atlassian fork to implement path traversal prevention and allowlisting. The path traversal mechanism will escape any method call which contains parameter with path traversal symbols like ../. The method call will appear as a string on the front-end side.

Velocity template method invocations are now restricted to an allowlist. Unauthorized invocations will trigger a log warning and will be blocked to mitigate Server-Side Template Injection (SSTI) vulnerabilities. The global method allowlists encompass JDK and Atlassian class methods. Apps have the option to define their own allowlist using the module descriptor which will complement the global allowlist. We recommend that apps only expose immutable Data Transfer Objects (DTOs) and refrain from invoking application services or beans from templates.

Furthermore, all Velocity template files residing on the file system must be both allowlisted and of an allowlisted file type. This serves as a basic defense against attacks that combine file system access with a request to achieve remote code execution.

For now, the Velocity method allowlist is in debug mode so that app developers can adjust to this mechanism and for us to complete the main allowlist and minimize the risk of issues. The debug mode will be disabled at the earliest in the upcoming LTS.

ランタイムの JavaServer ページのコンパイルを無効にする

JavaServer Pages (JSP) runtime compilation will be disabled in Jira Software 10.0. JSP files added to the Tomcat directory that aren't shipped with the product won’t be served. Furthermore, no modifications to the JSP files will be reflected. We recommend using Soy or Velocity templates instead.

カスタム JSP をアクションによってロードされない限りブロックする

We’ve blocked direct requests to JSP files. JSP files can now be only loaded when requested by an action.


サポート終了のお知らせ

We’ve removed support for:

  • .bin.exe のバイナリ インストーラー
  • H2 データベース エンジン
  • Java 8
  • Java 11

次のバンドルを解除しました:

  • Java (バイナリ インストーラーが削除されたため)

For the list of supported platforms, check Supported platforms.

過去のお知らせについては「サポート終了のお知らせ」をご確認ください。

アプリ開発者向けの情報

For any important changes regarding apps, check out the Jira changelog.

FAQ for app developers

Based on your feedback from the Developer Community announcement of Jira 10.0, we’ve prepared a list of frequently asked questions.

See the full list

質問

回答

Is there a way to customize or override the Jackson ObjectMapper used in plugin REST v2?

Currently it’s not possible for plugins to customize REST’s ObjectMapper config.

We encountered some issues regarding our REST endpoints that use the @Autowired annotation on the constructor. That results in warnings like:

MultiException stack 1 of 2 java.lang.NoSuchMethodException: Could not find a suitable constructor in de.resolution.usersync.rest.NotificationRestResource class.

This can be mitigated using @Inject instead.

However, to our knowledge, both annotations should work the same. Was this an intentional change?

This was an intentional change. REST resource classes are instantiated by HK2 in Jersey 2, hence Spring’s @Autowired won't work.

Which Testkit should I use?

Use the 10.0.3 jira-testkit.

My method invocations are blocked, even though I have them allowlisted. Why?

Plugins may define their own allowlist using this module descriptor which will supplement the global allowlist. Plugins can only define allowlist entries for their own classes.

More details: Configuring the Velocity method allowlist

It looks like REST v2 in the latest EAP supports only @Inject (javax.inject.Inject) for resource constructors and doesn’t support the Spring @Autowired annotation. Is this intentional?

Yes, this is intentional. We dropped support for the Spring @Autowired annotation and decided to migrate to @Inject (javax.inject.Inject), because @Autowired is Spring-specific and javax.inject.Inject is part of a standard (Java EE / Jakarta EE - JSR-330). Relying on the standard rather than on a specific implementation provides us with more options for the future.

We’re currently testing Jira 10.0 and the AITs Arquillian didn't work with JDK 17, any idea why?

All the tests work with JDK 8 or JDK 9, and when I change to JDK 17, the tests don't start.
The error:

java.io.StreamCorruptedException: invalid stream header: 0A0A0A0A at java.base/java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:958) at java.base/java.io.ObjectInputStream.<init>(ObjectInputStream.java:392) at org.jboss.arquillian.protocol.servlet.ServletMethodExecutor.execute(ServletMethodExecutor.java:173) at org.jboss.arquillian.protocol.servlet.ServletMethodExecutor$1.run(ServletMethodExecutor.java:221) at java.base/java.util.TimerThread.mainLoop(Timer.java:566) at java.base/java.util.TimerThread.run(Timer.java:516) andjava.lang.IllegalStateException: Error launching test at org.jboss.arquillian.protocol.servlet.ServletMethodExecutor.invoke(ServletMethodExecutor.java:100) at org.jboss.arquillian.container.test.impl.execution.RemoteTestExecuter.execute(RemoteTestExecuter.java:103) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:86) at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:103) at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:90) at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:133) at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:105) at org.jboss.arquillian.core.impl.EventImpl.fire(EventImpl.java:62) at org.jboss.arquillian.container.test.impl.execution.ClientTestExecuter.execute(ClientTestExecuter.java:52) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:86) at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:103) at org.jboss.arquillian.core.impl.EventContextImpl.proceed

Check Jira logs. invalid stream header is usually an indicator that test “plugin” has failed to install.

This library is effectively no longer maintained as it's not really used internally at Adaptavist anymore.

There is a suggested workaround here: java.io.StreamCorruptedException: invalid stream header: 0A0A0A0A error in some Arqullian testsbug

What version of atlassian-plugins will this release ship with? We need version 8.0.15+ for our app to run as we utilize new APIs.

atlassian-plugins will be version 8.0.15 in the new release.

“The global object GH.RapidBoard is deprecated.” — what does it mean?

Will the GH be removed? Will there be a way to access it?

We’re not planning to remove global variables in this platform release (10.0.0). At the same time, we’re committed to reducing the tech debt and introducing improvements to the Jira front-end tech stack and UI. Global variables tend to be an obstacle in such projects. We communicated the long-term take on global variables in Preparing for Jira 8.0.1 and reinforced that message later too.
The most recent effort in that area was in JSW 9.7.1.
You can read more about the migration from global variables to AMD modules on this page. It was published in 2019 but the gist is intact. These are the key points:

  • All supported functionality should be already available in a form of AMD modules (vs. global variables).

  • All possible usage of globals is considered as deprecated and developers should have a plan to move to alternative solutions (AMD modules).

  • Global variables that provide support for supported functionality will be removed only when an alternative solution for that piece of functionality is in place, and with proper notice beforehand. We may remove globals without the alternative solution in place for unsupported functionality, in platform releases, or for security reasons.

  • We cannot promise that in the future all AMD modules will be a part of the API.

  • Once we decide to remove a particular subset of globals, we will provide a detailed migration documentation, containing removed globals list and their AMD module names equivalents.

アップグレード手順

最新のバージョンにアップグレードするために、次の資料を活用できます。

  • 利用可能なすべてのアップグレード方法およびアップグレード前の手順を含む完全なアップグレード手順について、「Jira アプリケーションのアップグレード」をご参照ください。
  • ご自身の環境に合わせたアップグレードをご検討の場合、[Jira 管理] > [アプリケーション] > [アップグレードを計画] をご確認ください。アップグレード先のバージョンの提案やアップグレード前のチェックの実行が行われ、詳細な手順を含むカスタムのアップグレード ガイドが提供されます。
最終更新日 2024 年 11 月 6 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.